Repository navigation
Closed
Closed
Copy link
Labels
stdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
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
| if (e and e.__cause__ is not None |
It should be:
if (e is not None and e.__cause__ is not NoneLine 1144 in 255eb37
| if (e and e.__context__ is not None |
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
Linked PRs
Metadata
Metadata
Assignees
Labels
stdlibStandard Library Python modules in the Lib/ directoryStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or errorAn unexpected behavior, bug, or error
Activity
YvesDup commentedon Apr 9, 2025
TracebackExceptionclass also swallows sub-exceptions of falsey exception group.Output is:
As below, a wrong test must be change.
cpython/Lib/traceback.py
Line 1159 in 255eb37
[-]`TracebackException` swallows `__cause__` and `__context__` attributes of falsey exceptions.[/-][+]`TracebackException` swallows attributes of falsey Exception and falsey ExceptionGroup.[/+]iritkatriel commentedon Apr 9, 2025
Thank you. Would you like to make a PR?
gh-132308: prevent `TracebackException` swallowing attributes of a fa…
pythongh-132308: prevent `TracebackException` swallowing attributes o…
[3.13] gh-132308: prevent `TracebackException` swallowing attributes …