Thanks to visit codestin.com
Credit goes to github.com

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 <[email protected]>
1 parent 3fbf5c6 commit 0319052

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

Lib/enum.py

+2-2
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

+10
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',
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix repr of enum of generic aliases.

0 commit comments

Comments
 (0)