-
-
Notifications
You must be signed in to change notification settings - Fork 30.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unexpected behavior change in subclassing Enum
class as of 3.11
#103479
Labels
docs
Documentation in the Doc dir
Comments
ethanfurman
added a commit
that referenced
this issue
Apr 13, 2023
…3495) a mixin must either have a __new__ method, or be a dataclass, to be interpreted as a data-type
ethanfurman
added a commit
to ethanfurman/cpython
that referenced
this issue
Apr 13, 2023
…ta type (pythonGH-103495) a mixin must either have a __new__ method, or be a dataclass, to be interpreted as a data-type. (cherry picked from commit a6f9594) Co-authored-by: Ethan Furman <ethan@stoneleaf.us>
carljm
added a commit
to carljm/cpython
that referenced
this issue
Apr 13, 2023
* main: pythongh-103479: [Enum] require __new__ to be considered a data type (pythonGH-103495) pythongh-103365: [Enum] STRICT boundary corrections (pythonGH-103494) pythonGH-103488: Use return-offset, not yield-offset. (pythonGH-103502) pythongh-103088: Fix test_venv error message to avoid bytes/str warning (pythonGH-103500) pythonGH-103082: Turn on branch events for FOR_ITER instructions. (python#103507) pythongh-102978: Fix mock.patch function signatures for class and staticmethod decorators (python#103228) pythongh-103462: Ensure SelectorSocketTransport.writelines registers a writer when data is still pending (python#103463) pythongh-95299: Rework test_cppext.py to not invoke setup.py directly (python#103316)
ethanfurman
added a commit
that referenced
this issue
Apr 13, 2023
…GH-103495) (GH-103514) a mixin must either have a __new__ method, or be a dataclass, to be interpreted as a data-type; an __init__ method is not enough (restores pre-3.11 behavior for non-dataclasses). (cherry picked from commit a6f9594) Co-authored-by: Ethan Furman <ethan@stoneleaf.us>
Thank you for the bug report; this is now fixed. |
4 tasks
This was referenced Oct 19, 2023
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I had a question regarding changes in subclassing
Enum
in 3.11. As of 3.11, if enum class has a mixin parent apart fromEnum
which has defined__init__
or__new__
,member._value_
is set to be another instance of the mixin classunless user defines
__new__
in the enum class and set_value_
. However user naturally expects_value_
to be the value assigned to the member in class definition. In the example belowCustomEnum.MEMBER
is an instance of mixin andCustomEnum.MEMBER.value
is another instance of it (with different id), while it was expected thatCustomEnum.MEMBER.value
would be"member"
. What has been the rationale for this change?By the way, this change is not noted in python docs enumeration page.
Linked PRs
The text was updated successfully, but these errors were encountered: