8000 gh-93847: Fix repr of enum of generic aliases (GH-93885) · python/cpython@0319052 · GitHub
[go: up one dir, main page]

Skip to content

Commit 0319052

Browse files
gh-93847: Fix repr of enum of generic aliases (GH-93885)
(cherry picked from commit 138db8e) Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
1 parent 3fbf5c6 commit 0319052

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

Lib/enum.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,7 +1240,7 @@ def _missing_(cls, value):
12401240
return None
12411241

12421242
def __repr__(self):
1243-
v_repr = self.__class__._value_repr_ or self._value_.__class__.__repr__
1243+
v_repr = self.__class__._value_repr_ or repr
12441244
return "<%s.%s: %s>" % (self.__class__.__name__, self._name_, v_repr(self._value_))
12451245

12461246
def __str__(self):
@@ -1515,7 +1515,7 @@ def __len__(self):
15151515

15161516
def __repr__(self):
15171517
cls_name = self.__class__.__name__
1518-
v_repr = self.__class__._value_repr_ or self._value_.__class__.__repr__
1518+
v_repr = self.__class__._value_repr_ or repr
15191519
if self._name_ is None:
15201520
return "<%s: %s>" % (cls_name, v_repr(self._value_))
15211521
else:

Lib/test/test_enum.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import sys
88
import unittest
99
import threading
10+
import typing
1011
import builtins as bltns
1112
from collections import OrderedDict
1213
from datetime import date
@@ -978,6 +979,15 @@ class SpamEnum(Enum):
978979
spam = SpamEnumNotInner
979980
self.assertEqual(SpamEnum.spam.value, SpamEnumNotInner)
980981

982+
def test_enum_of_generic_aliases(self):
983+
class E(Enum):
984+
a = typing.List[int]
985+
b = list[int]
986+
self.assertEqual(E.a.value, typing.List[int])
987+
self.assertEqual(E.b.value, list[int])
988+
self.assertEqual(repr(E.a), '<E.a: typing.List[int]>')
989+
self.assertEqual(repr(E.b), '<E.b: list[int]>')
990+
981991
@unittest.skipIf(
982992
python_version >= (3, 13),
983993
'inner classes are not members',
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix repr of enum of generic aliases.

0 commit comments

Comments
 (0)
0