Right now this code does not produce any issues in mypy:
importenumclassFirst:
def__new__(cls, val):
return1classSecond:
def__new__(cls, val):
return2classSome(First, Second, enum.Enum): # okx=1
But, in runtime it fails:
>>>importenum>>>>>>classFirst:
... def__new__(cls, val):
... return1
... >>>classSecond:
... def__new__(cls, val):
... return2
... >>>classSome(First, Second, enum.Enum):
... x=1
... Traceback (mostrecentcalllast):
File"<stdin>", line1, in<module>File"/Users/sobolev/Desktop/cpython/Lib/enum.py", line403, in__prepare__member_type, first_enum=metacls._get_mixins_(cls, bases)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File"/Users/sobolev/Desktop/cpython/Lib/enum.py", line893, in_get_mixins_member_type=_find_data_type(bases) orobject^^^^^^^^^^^^^^^^^^^^^^File"/Users/sobolev/Desktop/cpython/Lib/enum.py", line881, in_find_data_typeraiseTypeError('%r: too many data types: %r'% (class_name, data_types))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^TypeError: 'Some': toomanydatatypes: {<class'__main__.Second'>, <class'__main__.First'>}This happens because Enum can have only one extra subclass with __new__, because it is used to create new Enum members.
Right now this code does not produce any issues in mypy:
But, in runtime it fails:
This happens because
Enumcan have only one extra subclass with__new__, because it is used to create newEnummembers.