Open
Description
Bug report
Bug description:
Description
import traceback as tb
class FalseyLenException(Exception):
def __len__(self):
return 0
class FalseyBoolException(Exception):
def __bool__(self):
return False
def tracebackexception_swallows_cause_and_context():
try:
raise FalseyBoolException("Oh") from KeyError
except Exception as e:
print(f'{e = }, {e.__cause__ = }')
tb.print_exception(e)
print("---"*20)
try:
try:
1/0
except:
raise FalseyLenException("Ah")
except Exception as e:
print(f'{e = }, {e.__context__ = }')
tb.print_exception(e)
print("---"*20)
if __name__ == "__main__":
tracebackexception_swallows_cause_and_context()
Ouptput is:
e = FalseyBoolException('Oh'), e.__cause__ = KeyError()
Traceback (most recent call last):
File "/Users/yves/Desktop/Bugs/gh-132XXX.py", line 13, in tracebackexception_swallows_cause_and_context
raise FalseyBoolException("Oh") from KeyError
FalseyBoolException: Oh
------------------------------------------------------------
e = FalseyLenException('Ah'), e.__context__ = ZeroDivisionError('division by zero')
Traceback (most recent call last):
File "/Users/yves/Desktop/Bugs/gh-132XXX.py", line 23, in tracebackexception_swallows_cause_and_context
raise FalseyLenException("Ah")
FalseyLenException: Ah
The Cause or Context descriptions are not printed as expected.
Where Does it from ?
These following tests are wrong.
Line 1123 in 255eb37
It should be:
if (e is not None and e.__cause__ is not None
Line 1144 in 255eb37
It should be:
if (e is not None and and e.__context__ is not None
Linked Issues
See: #132129
CPython versions tested on:
CPython main branch
Operating systems tested on:
macOS