Skip to content

TypeError when except* catches an unhashable exception #99181

@Zac-HD

Description

@Zac-HD

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 🙂

Metadata

Metadata

Assignees

Labels

3.11only security fixes3.12only security fixesinterpreter-core(Objects, Python, Grammar, and Parser dirs)type-bugAn unexpected behavior, bug, or error

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    pFad - Phonifier reborn

    Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

    Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


    Alternative Proxies:

    Alternative Proxy

    pFad Proxy

    pFad v3 Proxy

    pFad v4 Proxy