Closed
Description
Bug report
In acf7403 (#30582), @ethanfurman implemented a global_enum
decorator, replacing the __str__
of an enum with enum.global_str
:
Lines 1638 to 1645 in 760ec89
(This was later reverted in 42a64c0 and reintroduced in 83d544b, but I believe the code to be the same).
If the ._name_
attribute is None
, this uses cls_name
, but that's not defined anywhere in that function!
Here is a (somewhat contrived) example:
import enum
@enum.global_enum
class EnumTest(enum.Enum):
VAL = 1
EnumTest.VAL._name_ = None
print(str(VAL))
this fails with:
Traceback (most recent call last):
File "/home/florian/tmp/x.py", line 9, in <module>
print(str(VAL))
^^^^^^^^
File "/usr/lib/python3.11/enum.py", line 1646, in global_str
return "%s(%r)" % (cls_name, self._value_)
^^^^^^^^
NameError: name 'cls_name' is not defined
(Found by running flake8
over Lib/
out of curiosity, see #93010 (comment))
Your environment
- CPython versions tested on: Python 3.11.0b1
- Operating system and architecture: Archlinux x86_64