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
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_))
def __str__(self):
@ -1515,7 +1515,7 @@ class Flag(Enum, boundary=STRICT):
def __repr__(self):
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:
return "<%s: %s>" % (cls_name, v_repr(self._value_))
else:

View file

@ -7,6 +7,7 @@ import pydoc
import sys
import unittest
import threading
import typing
import builtins as bltns
from collections import OrderedDict
from datetime import date
@ -978,6 +979,15 @@ class TestSpecial(unittest.TestCase):
spam = 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(
python_version >= (3, 13),
'inner classes are not members',

View file

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