From 1f664ac83679ef1fd0f56d5006c95c44c7d0f830 Mon Sep 17 00:00:00 2001 From: Nacho Caballero Date: Mon, 21 Jul 2025 17:18:40 +0200 Subject: [PATCH] gh-136859: Improve `StrEnum` docs (GH-136864) (cherry picked from commit 5f9e38f9b9f2b82e841f1b11a8300f2cacd76a36) Co-authored-by: Nacho Caballero Co-authored-by: Nacho Caballero Co-authored-by: Antonio Spadaro --- Doc/library/enum.rst | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index 24c0cf26496fed..5323fa692ddfe8 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -504,16 +504,31 @@ Data Types .. class:: StrEnum - ``StrEnum`` is the same as :class:`Enum`, but its members are also strings and can be used - in most of the same places that a string can be used. The result of any string - operation performed on or with a *StrEnum* member is not part of the enumeration. + *StrEnum* is the same as :class:`Enum`, but its members are also strings and + can be used in most of the same places that a string can be used. The result + of any string operation performed on or with a *StrEnum* member is not part + of the enumeration. + + >>> from enum import StrEnum, auto + >>> class Color(StrEnum): + ... RED = 'r' + ... GREEN = 'g' + ... BLUE = 'b' + ... UNKNOWN = auto() + ... + >>> Color.RED + + >>> Color.UNKNOWN + + >>> str(Color.UNKNOWN) + 'unknown' .. note:: There are places in the stdlib that check for an exact :class:`str` instead of a :class:`str` subclass (i.e. ``type(unknown) == str`` instead of ``isinstance(unknown, str)``), and in those locations you - will need to use ``str(StrEnum.member)``. + will need to use ``str(MyStrEnum.MY_MEMBER)``. .. note::