◐ Shell
clean mode source ↗

[3.11] gh-102549: [Enum] fail enum creation when data type raises in __init__ (GH-103149) by miss-islington · Pull Request #103154 · python/cpython

Expand Up @@ -250,23 +250,20 @@ def __set_name__(self, enum_class, member_name): args = (args, ) # wrap it one more time if not enum_class._use_args_: enum_member = enum_class._new_member_(enum_class) if not hasattr(enum_member, '_value_'): else: enum_member = enum_class._new_member_(enum_class, *args) if not hasattr(enum_member, '_value_'): if enum_class._member_type_ is object: enum_member._value_ = value else: try: enum_member._value_ = enum_class._member_type_(*args) except Exception as exc: enum_member._value_ = value else: enum_member = enum_class._new_member_(enum_class, *args) if not hasattr(enum_member, '_value_'): if enum_class._member_type_ is object: enum_member._value_ = value else: try: enum_member._value_ = enum_class._member_type_(*args) except Exception as exc: raise TypeError( '_value_ not set in __new__, unable to create it' ) from None new_exc = TypeError( '_value_ not set in __new__, unable to create it' ) new_exc.__cause__ = exc raise new_exc value = enum_member._value_ enum_member._name_ = member_name enum_member.__objclass__ = enum_class Expand Down