mirror of
https://github.com/python/cpython.git
synced 2025-07-07 19:35:27 +00:00
gh-102549: [Enum] fail enum creation when data type raises in __init__ (GH-103149)
This commit is contained in:
parent
dfc4c95762
commit
2a4d8c0a9e
3 changed files with 32 additions and 14 deletions
25
Lib/enum.py
25
Lib/enum.py
|
@ -266,23 +266,20 @@ class _proto_member:
|
|||
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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue