mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
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:
parent
3fbf5c6427
commit
0319052090
3 changed files with 13 additions and 2 deletions
|
@ -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:
|
||||||
|
|
|
@ -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',
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Fix repr of enum of generic aliases.
|
Loading…
Add table
Add a link
Reference in a new issue