diff options
author | Ethan Furman <ethan@stoneleaf.us> | 2021-04-27 05:42:57 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-27 05:42:57 (GMT) |
commit | 5987b8c463892e0ab7a63cdae92f34b5eb79732d (patch) | |
tree | 1f68608c9660039046b3119828a7b596b25563cc /Lib/enum.py | |
parent | cfe523b49280cdc8c239c807121ad3f33552f638 (diff) | |
download | cpython-5987b8c463892e0ab7a63cdae92f34b5eb79732d.zip cpython-5987b8c463892e0ab7a63cdae92f34b5eb79732d.tar.gz cpython-5987b8c463892e0ab7a63cdae92f34b5eb79732d.tar.bz2 |
bpo-43945: [Enum] Deprecate non-standard mixin format() behavior (GH-25649)
In 3.12 the enum member, not the member's value, will be used for
format() calls. Format specifiers can be used to retain the current
display of enum members:
Example enumeration:
class Color(IntEnum):
RED = 1
GREEN = 2
BLUE = 3
Current behavior:
f'{Color.RED}' --> '1'
Future behavior:
f'{Color.RED}' --> 'RED'
Using d specifier:
f'{Color.RED:d}' --> '1'
Using specifiers can be done now and is future-compatible.
Diffstat (limited to 'Lib/enum.py')
-rw-r--r-- | Lib/enum.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Lib/enum.py b/Lib/enum.py index ca6aff6..bcf411c 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -1005,6 +1005,14 @@ class Enum(metaclass=EnumType): val = str(self) # mix-in branch else: + import warnings + warnings.warn( + "in 3.12 format() will use the enum member, not the enum member's value;\n" + "use a format specifier, such as :d for an IntEnum member, to maintain" + "the current display", + DeprecationWarning, + stacklevel=2, + ) cls = self._member_type_ val = self._value_ return cls.__format__(val, format_spec) |