gh-102558: [Enum] fix AttributeError during member repr() (GH-102601)

(cherry picked from commit bd063756b3)

Co-authored-by: Dong-hee Na <donghee.na@python.org>
This commit is contained in:
Miss Islington (bot) 2023-03-23 13:56:38 -07:00 committed by GitHub
parent 60b2b58f87
commit 8132aefa0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 1 deletions

View File

@ -1187,6 +1187,8 @@ def _missing_(cls, value):
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_))

View File

@ -11,7 +11,7 @@
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
@ -632,6 +632,13 @@ class MySubEnum(MyEnum):
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)),