]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.11] gh-93100: [Enum] fix missing variable in global_str (GH-93107) (GH-93134)
authorEthan Furman <ethan@stoneleaf.us>
Mon, 23 May 2022 17:11:18 +0000 (10:11 -0700)
committerGitHub <noreply@github.com>
Mon, 23 May 2022 17:11:18 +0000 (10:11 -0700)
(cherry picked from commit 046df59658c9f64a9f0fc909ed62e92c6c4dd668)

Co-authored-by: Ethan Furman <ethan@stoneleaf.us>
Lib/enum.py
Lib/test/test_enum.py

index b9811fe9e6787c383c00b991bfc95917fac011e6..43cd1bc2b1e313f17c61bc4b34b883ff1bfb09ed 100644 (file)
@@ -1643,6 +1643,7 @@ def global_str(self):
     use enum_name instead of class.enum_name
     """
     if self._name_ is None:
+        cls_name = self.__class__.__name__
         return "%s(%r)" % (cls_name, self._value_)
     else:
         return self._name_
index f9e09027228b4e521c84144a2f4de4696a61291b..c9ed08397d77cb87b4b63797a27667b3927bb1ba 100644 (file)
@@ -189,6 +189,12 @@ class HeadlightsC(IntFlag, boundary=enum.CONFORM):
     FOG_C = auto()
 
 
+@enum.global_enum
+class NoName(Flag):
+    ONE = 1
+    TWO = 2
+
+
 # tests
 
 class _EnumTests:
@@ -614,6 +620,7 @@ class _PlainOutputTests:
     def test_str(self):
         TE = self.MainEnum
         if self.is_flag:
+            self.assertEqual(str(TE(0)), "MainEnum(0)")
             self.assertEqual(str(TE.dupe), "MainEnum.dupe")
             self.assertEqual(str(self.dupe2), "MainEnum.first|third")
         else:
@@ -3238,6 +3245,10 @@ class OldTestIntFlag(unittest.TestCase):
                 '%(m)s.OFF_C' % {'m': SHORT_MODULE},
                 )
 
+    def test_global_enum_str(self):
+        self.assertEqual(str(NoName.ONE & NoName.TWO), 'NoName(0)')
+        self.assertEqual(str(NoName(0)), 'NoName(0)')
+
     def test_format(self):
         Perm = self.Perm
         self.assertEqual(format(Perm.R, ''), '4')