gh-93847: Fix repr of enum of generic aliases (GH-93885)

(cherry picked from commit 138db8e48b)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
Miss Islington (bot) 2022-06-16 22:00:22 -07:00 committed by GitHub
parent 3fbf5c6427
commit 0319052090
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 2 deletions

View file

@ -1240,7 +1240,7 @@ class Enum(metaclass=EnumType):
return None return None
def __repr__(self): def __repr__(self):
v_repr = self.__class__._value_repr_ or self._value_.__class__.__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_))
def __str__(self): def __str__(self):
@ -1515,7 +1515,7 @@ class Flag(Enum, boundary=STRICT):
def __repr__(self): def __repr__(self):
cls_name = self.__class__.__name__ cls_name = self.__class__.__name__
v_repr = self.__class__._value_repr_ or self._value_.__class__.__repr__ v_repr = self.__class__._value_repr_ or repr
if self._name_ is None: if self._name_ is None:
return "<%s: %s>" % (cls_name, v_repr(self._value_)) return "<%s: %s>" % (cls_name, v_repr(self._value_))
else: else:

View file

@ -7,6 +7,7 @@ import pydoc
import sys import sys
import unittest import unittest
import threading import threading
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
@ -978,6 +979,15 @@ class TestSpecial(unittest.TestCase):
spam = SpamEnumNotInner spam = SpamEnumNotInner
self.assertEqual(SpamEnum.spam.value, SpamEnumNotInner) self.assertEqual(SpamEnum.spam.value, SpamEnumNotInner)
def test_enum_of_generic_aliases(self):
class E(Enum):
a = typing.List[int]
b = list[int]
self.assertEqual(E.a.value, typing.List[int])
self.assertEqual(E.b.value, list[int])
self.assertEqual(repr(E.a), '<E.a: typing.List[int]>')
self.assertEqual(repr(E.b), '<E.b: list[int]>')
@unittest.skipIf( @unittest.skipIf(
python_version >= (3, 13), python_version >= (3, 13),
'inner classes are not members', 'inner classes are not members',

View file

@ -0,0 +1 @@
Fix repr of enum of generic aliases.