]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
[3.11] gh-108682: [Enum] raise TypeError if super().__new__ called in custom __new__...
authorEthan Furman <ethan@stoneleaf.us>
Fri, 8 Sep 2023 01:57:48 +0000 (18:57 -0700)
committerGitHub <noreply@github.com>
Fri, 8 Sep 2023 01:57:48 +0000 (18:57 -0700)
commiteffa2ecdcf0d019d6ed04ca160f789af57e959de
treea5d44fdee56a2fc0e83f8734ccd2858981aa9493
parente46be0d2fa18d7e3435c3b19370604043b1f8cf0
[3.11] gh-108682: [Enum] raise TypeError if super().__new__ called in custom __new__ (GH-108704) (GH-108739)

When overriding the `__new__` method of an enum, the underlying data type should be created directly; i.e. .

    member = object.__new__(cls)
    member = int.__new__(cls, value)
    member = str.__new__(cls, value)

Calling `super().__new__()` finds the lookup version of `Enum.__new__`, and will now raise an exception when detected.

(cherry picked from commit d48760b2f1e28dd3c1a35721939f400a8ab619b8)
Doc/howto/enum.rst
Lib/enum.py
Lib/test/test_enum.py
Misc/NEWS.d/next/Library/2023-08-30-20-10-28.gh-issue-108682.c2gzLQ.rst [new file with mode: 0644]