summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDong-hee Na <donghee.na@python.org>2023-03-23 20:30:18 (GMT)
committerGitHub <noreply@github.com>2023-03-23 20:30:18 (GMT)
commitbd063756b34003c1bc7cacf5b1bd90a409180fb6 (patch)
tree886c4614e9bda5fc6e360f22ca245b0b5875a32e
parent16f6165b71e81b5e4d0be660ac64a9fce7dfd86c (diff)
downloadcpython-bd063756b34003c1bc7cacf5b1bd90a409180fb6.zip
cpython-bd063756b34003c1bc7cacf5b1bd90a409180fb6.tar.gz
cpython-bd063756b34003c1bc7cacf5b1bd90a409180fb6.tar.bz2
gh-102558: [Enum] fix AttributeError during member repr() (GH-102601)
-rw-r--r--Lib/enum.py2
-rw-r--r--Lib/test/test_enum.py9
2 files changed, 10 insertions, 1 deletions
diff --git a/Lib/enum.py b/Lib/enum.py
index d14e91a..ba92766 100644
--- a/Lib/enum.py
+++ b/Lib/enum.py
@@ -1186,6 +1186,8 @@ class Enum(metaclass=EnumType):
return None
def __repr__(self):
+ if not isinstance(self, Enum):
+ return repr(self)
v_repr = self.__class__._value_repr_ or repr
return "<%s.%s: %s>" % (self.__class__.__name__, self._name_, v_repr(self._value_))
diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py
index a11bb44..bb163c4 100644
--- a/Lib/test/test_enum.py
+++ b/Lib/test/test_enum.py
@@ -11,7 +11,7 @@ import typing
import builtins as bltns
from collections import OrderedDict
from datetime import date
-from enum import Enum, IntEnum, StrEnum, EnumType, Flag, IntFlag, unique, auto
+from enum import Enum, EnumMeta, IntEnum, StrEnum, EnumType, Flag, IntFlag, unique, auto
from enum import STRICT, CONFORM, EJECT, KEEP, _simple_enum, _test_simple_enum
from enum import verify, UNIQUE, CONTINUOUS, NAMED_FLAGS, ReprEnum
from enum import member, nonmember, _iter_bits_lsb
@@ -644,6 +644,13 @@ class _EnumTests:
theother = auto()
self.assertEqual(repr(MySubEnum.that), "My name is that.")
+ def test_multiple_superclasses_repr(self):
+ class _EnumSuperClass(metaclass=EnumMeta):
+ pass
+ class E(_EnumSuperClass, Enum):
+ A = 1
+ self.assertEqual(repr(E.A), "<E.A: 1>")
+
def test_reversed_iteration_order(self):
self.assertEqual(
list(reversed(self.MainEnum)),