I recently had pytest-dev/pytest#10466 reported, and it seems likely to be an upstream bug in except* - cc @iritkatriel fyi.
A somewhat simplified reproducing example:
class MyException(Exception):
__hash__ = None
# Traditional try-except works fine with unhashable exceptions, e.g.:
try:
raise ExceptionGroup("Foo", [MyException("Bar")])
except Exception:
pass
# But here we'll get a TypeError:
try:
raise ExceptionGroup("Foo", [MyException("Bar")])
except* Exception:
pass
+ Exception Group Traceback (most recent call last):
| File "repro.py", line 12, in <module>
| raise ExceptionGroup("Foo", [MyException("Bar")])
| ExceptionGroup: Foo (1 sub-exception)
+-+---------------- 1 ----------------
| MyException: Bar
+------------------------------------
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "repro.py", line -1, in <module>
TypeError: unhashable type: 'MyException'
If this is the intended behavior of course we'll work around it in Pytest, but we decided to report upstream in case it's not 🙂
I recently had pytest-dev/pytest#10466 reported, and it seems likely to be an upstream bug in
except*- cc @iritkatriel fyi.A somewhat simplified reproducing example:
+ Exception Group Traceback (most recent call last): | File "repro.py", line 12, in <module> | raise ExceptionGroup("Foo", [MyException("Bar")]) | ExceptionGroup: Foo (1 sub-exception) +-+---------------- 1 ---------------- | MyException: Bar +------------------------------------ During handling of the above exception, another exception occurred: Traceback (most recent call last): File "repro.py", line -1, in <module> TypeError: unhashable type: 'MyException'If this is the intended behavior of course we'll work around it in Pytest, but we decided to report upstream in case it's not 🙂