@@ -342,12 +342,13 @@ class EnumDict(dict):
342342 EnumType will use the names found in self._member_names as the
343343 enumeration member names.
344344 """
345- def __init__ (self ):
345+ def __init__ (self , cls_name = None ):
346346 super ().__init__ ()
347347 self ._member_names = {} # use a dict -- faster look-up than a list, and keeps insertion order since 3.7
348348 self ._last_values = []
349349 self ._ignore = []
350350 self ._auto_called = False
351+ self ._cls_name = cls_name
351352
352353 def __setitem__ (self , key , value ):
353354 """
@@ -358,7 +359,7 @@ def __setitem__(self, key, value):
358359
359360 Single underscore (sunder) names are reserved.
360361 """
361- if _is_private (self ._cls_name , key ):
362+ if self . _cls_name is not None and _is_private (self ._cls_name , key ):
362363 # do nothing, name will be a normal attribute
363364 pass
364365 elif _is_sunder (key ):
@@ -406,7 +407,7 @@ def __setitem__(self, key, value):
406407 value = value .value
407408 elif _is_descriptor (value ):
408409 pass
409- elif _is_internal_class (self ._cls_name , value ):
410+ elif self . _cls_name is not None and _is_internal_class (self ._cls_name , value ):
410411 # do nothing, name will be a normal attribute
411412 pass
412413 else :
@@ -478,8 +479,7 @@ def __prepare__(metacls, cls, bases, **kwds):
478479 # check that previous enum members do not exist
479480 metacls ._check_for_existing_members_ (cls , bases )
480481 # create the namespace dict
481- enum_dict = EnumDict ()
482- enum_dict ._cls_name = cls
482+ enum_dict = EnumDict (cls )
483483 # inherit previous flags and _generate_next_value_ function
484484 member_type , first_enum = metacls ._get_mixins_ (cls , bases )
485485 if first_enum is not None :
0 commit comments