Using :class:`auto` with :class:`Enum` results in integers of increasing value,
starting with ``1``.
- .. versionchanged:: 3.12 Added :ref:`enum-dataclass-support`
+ .. versionchanged:: 3.12 Added :ref:`enum-dataclass-support`.
.. method:: Enum._add_alias_
*auto* can be used in place of a value. If used, the *Enum* machinery will
call an :class:`Enum`'s :meth:`~Enum._generate_next_value_` to get an appropriate value.
- For :class:`Enum` and :class:`IntEnum` that appropriate value will be the last value plus
- one; for :class:`Flag` and :class:`IntFlag` it will be the first power-of-two greater
- than the highest value; for :class:`StrEnum` it will be the lower-cased version of
+ For :class:`Enum` and :class:`IntEnum` that appropriate value will be the highest value seen
+ plus one; for :class:`Flag` and :class:`IntFlag` it will be the first power-of-two greater
+ than the highest value seen; for :class:`StrEnum` it will be the lower-cased version of
the member's name. Care must be taken if mixing *auto()* with manually
specified values.
* ``FIRST = auto()`` will work (auto() is replaced with ``1``);
* ``SECOND = auto(), -2`` will work (auto is replaced with ``2``, so ``2, -2`` is
used to create the ``SECOND`` enum member;
- * ``THREE = [auto(), -3]`` will *not* work (``[<auto instance>, -3]`` is used to
- create the ``THREE`` enum member)
+ * ``THIRD = [auto(), -3]`` will *not* work (``[<auto instance>, -3]`` is used to
+ create the ``THIRD`` enum member)
.. versionchanged:: 3.11.1
``_generate_next_value_`` can be overridden to customize the values used by
*auto*.
- .. note:: in 3.13 the default ``_generate_next_value_`` will always return
+ .. note:: In version 3.13 the default ``_generate_next_value_`` will always return
the highest member value incremented by 1, and will fail if any
member is an incompatible type.
enumerations. It allows member attributes to have the same names as members
themselves.
- .. note:: the *property* and the member must be defined in separate classes;
+ .. note:: The *property* and the member must be defined in separate classes;
for example, the *value* and *name* attributes are defined in the
*Enum* class, and *Enum* subclasses can define members with the
names ``value`` and ``name``.