Throwing an exception during an implicit cast to a boolean as part of a logical operation (or, and) bypasses surrounding try/except statements.
passed c = bool(a)
passed c = a or b
passed c = bool(a)
Traceback (most recent call last):
File "/Users/justinfu/code/test_bool.py", line 15, in <module>
c = a or b
^^^^^^
File "/Users/justinfu/code/test_bool.py", line 3, in __bool__
raise NotImplementedError()
NotImplementedError
Bug report
Bug description:
Throwing an exception during an implicit cast to a boolean as part of a logical operation (
or,and) bypasses surrounding try/except statements.The following example works on Python 3.12.3 but fails on Python 3.14.0rc1:
Example:
Output on Python 3.12.3 (expected behavior):
Output on Python 3.14.0rc1:
CPython versions tested on:
3.14
Operating systems tested on:
macOS
Linked PRs