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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy