Skip to content

Commit 138db8e

Browse files
gh-93847: Fix repr of enum of generic aliases (GH-93885)
1 parent ab45c1d commit 138db8e

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
@@ -1237,7 +1237,7 @@ def _missing_(cls, value):
12371237
return None
12381238

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

12431243
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

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
@@ -980,6 +981,15 @@ class SpamEnum(Enum):
980981
spam = SpamEnumNotInner
981982
self.assertEqual(SpamEnum.spam.value, SpamEnumNotInner)
982983

984+
def test_enum_of_generic_aliases(self):
985+
class E(Enum):
986+
a = typing.List[int]
987+
b = list[int]
988+
self.assertEqual(E.a.value, typing.List[int])
989+
self.assertEqual(E.b.value, list[int])
990+
self.assertEqual(repr(E.a), '<E.a: typing.List[int]>')
991+
self.assertEqual(repr(E.b), '<E.b: list[int]>')
992+
983993
@unittest.skipIf(
984994
python_version >= (3, 13),
985995
'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