PEP 415: Implement suppression of __context__ display with an exception attribute
This replaces the original PEP 409 implementation. See #14133.
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index cd3cf5c..d9eb5e7 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -1761,11 +1761,7 @@
else if (PyExceptionInstance_Check(value)) {
cause = PyException_GetCause(value);
context = PyException_GetContext(value);
- if (cause && cause == Py_None) {
- /* print neither cause nor context */
- ;
- }
- else if (cause) {
+ if (cause) {
res = PySet_Contains(seen, cause);
if (res == -1)
PyErr_Clear();
@@ -1776,7 +1772,8 @@
cause_message, f);
}
}
- else if (context) {
+ else if (context &&
+ !((PyBaseExceptionObject *)value)->suppress_context) {
res = PySet_Contains(seen, context);
if (res == -1)
PyErr_Clear();