From 6bde34000d70dfefafa71e54c8cb5672f423073c Mon Sep 17 00:00:00 2001 From: Ethan Furman Date: Wed, 3 Aug 2022 14:11:20 -0700 Subject: [Enum] add whatsnew entries (GH-95455) --- Doc/whatsnew/3.11.rst | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/Doc/whatsnew/3.11.rst b/Doc/whatsnew/3.11.rst index 1b3a685..d10d9f1 100644 --- a/Doc/whatsnew/3.11.rst +++ b/Doc/whatsnew/3.11.rst @@ -471,6 +471,49 @@ datetime formats (barring only those that support fractional hours and minutes). (Contributed by Paul Ganssle in :gh:`80010`.) +enum +---- + +* ``EnumMeta`` renamed to ``EnumType`` (``EnumMeta`` kept as alias). + +* ``StrEnum`` added -- enum members are and must be strings. + +* ``ReprEnum`` added -- causes only the ``__repr__`` to be modified, not the + ``__str__`` nor the ``__format__``. + +* ``FlagBoundary`` added -- controls behavior when invalid values are given to + a flag. + +* ``EnumCheck`` added -- used by ``verify`` to ensure various constraints. + +* ``verify`` added -- function to ensure given ``EnumCheck`` constraints. + +* ``member`` added -- decorator to ensure given object is converted to an enum + member. + +* ``nonmember`` added -- decorator to ensure given object is not converted to + an enum member. + +* ``property`` added -- use instead of ``types.DynamicClassAttribute``. + +* ``global_enum`` added -- enum decorator to adjust ``__repr__`` and ``__str__`` + to show members in the global context -- see ``re.RegexFlag`` for an example. + +* ``Flag`` enhancements: members support length, iteration, and containment + checks. + +* ``Enum``/``Flag`` fixes: members are now defined before ``__init_subclass__`` + is called; ``dir()`` now includes methods, etc., from mixed-in data types. + +* ``Flag`` fixes: only primary values (power of two) are considered canonical + while composite values (3, 6, 10, etc.) are considered aliases; inverted + flags are coerced to their positive equivalent. + +* ``IntEnum`` / ``IntFlag`` / ``StrEnum`` fixes: these now inherit from + ``ReprEnum`` so the ``str()`` output now matches ``format()`` output, + which is the data types' (so both ``str(AnIntEnum.ONE)`` and + ``format(AnIntEnum.ONE)`` is equal to ``'1'``). + fractions --------- -- cgit v0.12