Closed
Description
Bug report
In CPython 3.11.0 - 3.11.2 (but not 3.10.10), I get a weird AttributeError when repr() is called on an Enum member of a class that was defined using multiple inheritance. Minimal code to reproduce:
from enum import Enum, EnumMeta
class _EnumSuperClass(metaclass=EnumMeta):
pass
class E(_EnumSuperClass, Enum):
A=1
print(repr(E.A))
With Python up to 3.10, the output is:
<E.A: 1>
With Python 3.11, the output is:
Traceback (most recent call last):
File "C:\devel\tmp\api\e.py", line 9, in <module>
print(repr(E.A))
^^^^^^^^^
File "C:\Program Files\Python311\Lib\enum.py", line 1169, in __repr__
return "<%s.%s: %s>" % (self.__class__.__name__, self._name_, v_repr(self._value_))
^^^^^^^^^^^^^^^^^^^^
File "C:\Program Files\Python311\Lib\enum.py", line 1168, in __repr__
v_repr = self.__class__._value_repr_ or repr
^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: type object 'int' has no attribute '_value_repr_'
Your environment
Python 3.11.0 (main, Oct 24 2022, 18:26:48) [MSC v.1933 64 bit (AMD64)] on win32
(But reproduced also on 3.11.2)
Linked PRs
- gh-102558: Fix AttributeError or repr() of enum member #102601
- [3.11] gh-102558: [Enum] fix AttributeError during member repr() (GH-102601) #102977
- gh-102558: [Enum] better handling of non-Enum EnumType classes #103060
- [3.11] gh-102558: [Enum] better handling of non-Enum EnumType classes (GH-103060) #103064