Closed
Description
import enum
class First:
def __new__(cls, val):
pass
class Second:
def __new__(cls, val):
pass
class Correct(First, enum.Enum):
pass
class Wrong(Second, Correct):
pass
This code does not produce any mypy warnings, but after #12026 it should.
Runtime raises:
Traceback (most recent call last):
File "/Users/sobolev/Desktop/mypy/out/ex.py", line 14, in <module>
class Wrong(Second, Correct):
File "/Users/sobolev/.pyenv/versions/3.10.0/lib/python3.10/enum.py", line 172, in __prepare__
member_type, first_enum = metacls._get_mixins_(cls, bases)
File "/Users/sobolev/.pyenv/versions/3.10.0/lib/python3.10/enum.py", line 613, in _get_mixins_
member_type = _find_data_type(bases) or object
File "/Users/sobolev/.pyenv/versions/3.10.0/lib/python3.10/enum.py", line 601, in _find_data_type
raise TypeError('%r: too many data types: %r' % (class_name, data_types))
TypeError: 'Wrong': too many data types: [<class '__main__.Second'>, <class '__main__.First'>]
PR is in the works.