Right now this code does not produce any issues in mypy: ```python import enum class First: def __new__(cls, val): return 1 class Second: def __new__(cls, val): return 2 class Some(First, Second, enum.Enum): # ok x = 1 ``` But, in runtime it fails: ```python >>> import enum >>> >>> class First: ... def __new__(cls, val): ... return 1 ... >>> class Second: ... def __new__(cls, val): ... return 2 ... >>> class Some(First, Second, enum.Enum): ... x = 1 ... Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/sobolev/Desktop/cpython/Lib/enum.py", line 403, in __prepare__ member_type, first_enum = metacls._get_mixins_(cls, bases) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/sobolev/Desktop/cpython/Lib/enum.py", line 893, in _get_mixins_ member_type = _find_data_type(bases) or object ^^^^^^^^^^^^^^^^^^^^^^ File "/Users/sobolev/Desktop/cpython/Lib/enum.py", line 881, in _find_data_type raise TypeError('%r: too many data types: %r' % (class_name, data_types)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: 'Some': too many data types: {<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.
Activity
Check `Enum` definition for invalid base classes (#12026)