◐ Shell
reader mode source ↗
Skip to content
Merged
Hide file tree
Changes from all commits
File filter
Conversations
Jump to
Diff view
Apply and reload
Show whitespace
Diff view
Apply and reload
25 changes: 11 additions & 14 deletions Lib/enum.py
Original file line number Diff line number Diff line change
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_'):
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
value = enum_member._value_
enum_member._name_ = member_name
enum_member.__objclass__ = enum_class
Expand Down
20 changes: 20 additions & 0 deletions Lib/test/test_enum.py
Original file line number Diff line number Diff line change
Expand Up @@ -2787,6 +2787,26 @@ def __new__(cls, c):
self.assertEqual(FlagFromChar.a, 158456325028528675187087900672)
self.assertEqual(FlagFromChar.a|1, 158456325028528675187087900673)

class TestOrder(unittest.TestCase):
"test usage of the `_order_` attribute"

Expand Down
Toggle all file notes Toggle all file annotations