@@ -266,23 +266,20 @@ def __set_name__(self, enum_class, member_name):
266266 args = (args , ) # wrap it one more time
267267 if not enum_class ._use_args_ :
268268 enum_member = enum_class ._new_member_ (enum_class )
269- if not hasattr (enum_member , '_value_' ):
269+ else :
270+ enum_member = enum_class ._new_member_ (enum_class , * args )
271+ if not hasattr (enum_member , '_value_' ):
272+ if enum_class ._member_type_ is object :
273+ enum_member ._value_ = value
274+ else :
270275 try :
271276 enum_member ._value_ = enum_class ._member_type_ (* args )
272277 except Exception as exc :
273- enum_member ._value_ = value
274- else :
275- enum_member = enum_class ._new_member_ (enum_class , * args )
276- if not hasattr (enum_member , '_value_' ):
277- if enum_class ._member_type_ is object :
278- enum_member ._value_ = value
279- else :
280- try :
281- enum_member ._value_ = enum_class ._member_type_ (* args )
282- except Exception as exc :
283- raise TypeError (
284- '_value_ not set in __new__, unable to create it'
285- ) from None
278+ new_exc = TypeError (
279+ '_value_ not set in __new__, unable to create it'
280+ )
281+ new_exc .__cause__ = exc
282+ raise new_exc
286283 value = enum_member ._value_
287284 enum_member ._name_ = member_name
288285 enum_member .__objclass__ = enum_class
0 commit comments