]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh93107: [Enum] fix missing variable in global_str (GH-93107)
authorEthan Furman <ethan@stoneleaf.us>
Mon, 23 May 2022 15:56:07 +0000 (08:56 -0700)
committerGitHub <noreply@github.com>
Mon, 23 May 2022 15:56:07 +0000 (08:56 -0700)
Lib/enum.py
Lib/test/test_enum.py

index 1df38a6f7e5f50015a0d1ffbaa93aa6374e5c06e..62fd5ce8fb9a080c97ac38ccab0132f3fe4669f2 100644 (file)
@@ -1640,6 +1640,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 286d631d793e49e52949b769b6dceaf30cd3ea60..44a3912630c32b40e99b78442cf702f85f7cbf59 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:
@@ -616,6 +622,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:
@@ -3242,6 +3249,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')