Skip to content

Commit bd06375

Browse files
authored
gh-102558: [Enum] fix AttributeError during member repr() (GH-102601)
1 parent 16f6165 commit bd06375

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

Lib/enum.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1186,6 +1186,8 @@ def _missing_(cls, value):
11861186
return None
11871187

11881188
def __repr__(self):
1189+
if not isinstance(self, Enum):
1190+
return repr(self)
11891191
v_repr = self.__class__._value_repr_ or repr
11901192
return "<%s.%s: %s>" % (self.__class__.__name__, self._name_, v_repr(self._value_))
11911193

Lib/test/test_enum.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
import builtins as bltns
1212
from collections import OrderedDict
1313
from datetime import date
14-
from enum import Enum, IntEnum, StrEnum, EnumType, Flag, IntFlag, unique, auto
14+
from enum import Enum, EnumMeta, IntEnum, StrEnum, EnumType, Flag, IntFlag, unique, auto
1515
from enum import STRICT, CONFORM, EJECT, KEEP, _simple_enum, _test_simple_enum
1616
from enum import verify, UNIQUE, CONTINUOUS, NAMED_FLAGS, ReprEnum
1717
from enum import member, nonmember, _iter_bits_lsb
@@ -644,6 +644,13 @@ class MySubEnum(MyEnum):
644644
theother = auto()
645645
self.assertEqual(repr(MySubEnum.that), "My name is that.")
646646

647+
def test_multiple_superclasses_repr(self):
648+
class _EnumSuperClass(metaclass=EnumMeta):
649+
pass
650+
class E(_EnumSuperClass, Enum):
651+
A = 1
652+
self.assertEqual(repr(E.A), "<E.A: 1>")
653+
647654
def test_reversed_iteration_order(self):
648655
self.assertEqual(
649656
list(reversed(self.MainEnum)),

0 commit comments

Comments
 (0)