Skip to content

Commit c05da1e

Browse files
committed
gh-102558: Fix AttributeError or repr() of enum member
1 parent 401d7a7 commit c05da1e

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-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: 9 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
@@ -2893,6 +2893,14 @@ def __new__(cls, c):
28932893
self.assertEqual(FlagFromChar.a, 158456325028528675187087900672)
28942894
self.assertEqual(FlagFromChar.a|1, 158456325028528675187087900673)
28952895

2896+
def test_multiple_superclasses(self):
2897+
class _EnumSuperClass(metaclass=EnumMeta):
2898+
pass
2899+
class E(_EnumSuperClass, Enum):
2900+
A=1
2901+
self.assertEqual(format(E.A), "E.A")
2902+
2903+
28962904
class TestOrder(unittest.TestCase):
28972905
"test usage of the `_order_` attribute"
28982906

0 commit comments

Comments
 (0)