Skip to content

Commit 50a73f6

Browse files
serhiy-storchakamiss-islington
authored andcommitted
pythongh-93847: Fix repr of enum of generic aliases (pythonGH-93885)
(cherry picked from commit 138db8e) Co-authored-by: Serhiy Storchaka <[email protected]>
1 parent 7456109 commit 50a73f6

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):
@@ -1512,7 +1512,7 @@ def __len__(self):
15121512

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

Lib/test/test_enum.py

+10
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import sys
77
import unittest
88
import threading
9+
import typing
910
import builtins as bltns
1011
from collections import OrderedDict
1112
from datetime import date
@@ -970,6 +971,15 @@ class SpamEnum(Enum):
970971
spam = SpamEnumNotInner
971972
self.assertEqual(SpamEnum.spam.value, SpamEnumNotInner)
972973

974+
def test_enum_of_generic_aliases(self):
975+
class E(Enum):
976+
a = typing.List[int]
977+
b = list[int]
978+
self.assertEqual(E.a.value, typing.List[int])
979+
self.assertEqual(E.b.value, list[int])
980+
self.assertEqual(repr(E.a), '<E.a: typing.List[int]>')
981+
self.assertEqual(repr(E.b), '<E.b: list[int]>')
982+
973983
@unittest.skipIf(
974984
python_version >= (3, 13),
975985
'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)