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

This commit is contained in:
Dong-hee Na 2023-03-24 05:30:18 +09:00 committed by GitHub
parent 16f6165b71
commit bd063756b3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 1 deletions

View file

@ -1186,6 +1186,8 @@ class Enum(metaclass=EnumType):
return None return None
def __repr__(self): def __repr__(self):
if not isinstance(self, Enum):
return repr(self)
v_repr = self.__class__._value_repr_ or repr v_repr = self.__class__._value_repr_ or repr
return "<%s.%s: %s>" % (self.__class__.__name__, self._name_, v_repr(self._value_)) return "<%s.%s: %s>" % (self.__class__.__name__, self._name_, v_repr(self._value_))

View file

@ -11,7 +11,7 @@ import typing
import builtins as bltns import builtins as bltns
from collections import OrderedDict from collections import OrderedDict
from datetime import date 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 STRICT, CONFORM, EJECT, KEEP, _simple_enum, _test_simple_enum
from enum import verify, UNIQUE, CONTINUOUS, NAMED_FLAGS, ReprEnum from enum import verify, UNIQUE, CONTINUOUS, NAMED_FLAGS, ReprEnum
from enum import member, nonmember, _iter_bits_lsb from enum import member, nonmember, _iter_bits_lsb
@ -644,6 +644,13 @@ class _EnumTests:
theother = auto() theother = auto()
self.assertEqual(repr(MySubEnum.that), "My name is that.") 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): def test_reversed_iteration_order(self):
self.assertEqual( self.assertEqual(
list(reversed(self.MainEnum)), list(reversed(self.MainEnum)),