]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-114803: Mention that `@dataclass` should not be applied on enums (GH-114891)
authorNikita Sobolev <mail@sobolevn.me>
Sat, 3 Feb 2024 21:55:38 +0000 (00:55 +0300)
committerGitHub <noreply@github.com>
Sat, 3 Feb 2024 21:55:38 +0000 (13:55 -0800)
Co-authored-by: Kirill Podoprigora <kirill.bast9@mail.ru>
Co-authored-by: Ethan Furman <ethan@stoneleaf.us>
Doc/howto/enum.rst

index 1e9ac9b6761b64738eb61df91d28a1586d85b7b7..30be15230fc088eed430510795309f8012ac00ae 100644 (file)
@@ -497,13 +497,30 @@ the :meth:`~Enum.__repr__` omits the inherited class' name.  For example::
     >>> Creature.DOG
     <Creature.DOG: size='medium', legs=4>
 
-Use the :func:`!dataclass` argument ``repr=False``
+Use the :func:`~dataclasses.dataclass` argument ``repr=False``
 to use the standard :func:`repr`.
 
 .. versionchanged:: 3.12
    Only the dataclass fields are shown in the value area, not the dataclass'
    name.
 
+.. note::
+
+   Adding :func:`~dataclasses.dataclass` decorator to :class:`Enum`
+   and its subclasses is not supported. It will not raise any errors,
+   but it will produce very strange results at runtime, such as members
+   being equal to each other::
+
+      >>> @dataclass               # don't do this: it does not make any sense
+      ... class Color(Enum):
+      ...    RED = 1
+      ...    BLUE = 2
+      ...
+      >>> Color.RED is Color.BLUE
+      False
+      >>> Color.RED == Color.BLUE  # problem is here: they should not be equal
+      True
+
 
 Pickling
 --------