You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
enum: Mixin and int base class regression in 3.8.6 #86055
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
assignee='https://github.com/ethanfurman'closed_at=<Date2020-12-08.03:21:43.846>created_at=<Date2020-09-30.04:21:36.560>labels= ['3.8', 'type-bug', 'library', '3.9', '3.10']
title='enum: Mixin and int base class regression in 3.8.6'updated_at=<Date2020-12-08.03:21:43.845>user='https://github.com/puddly'
The following code worked in 3.8.5 but does not in 3.8.6 due to the fix for bpo-39587:
import enum
class MyInt(int):
def __new__(cls, value):
return super().__new__(cls, value)
class HexMixin:
def __repr__(self):
return hex(self)
class MyIntEnum(HexMixin, MyInt, enum.Enum):
pass
class Foo(MyIntEnum):
TEST = 1
assert isinstance(Foo.TEST, MyInt)
assert repr(Foo.TEST) == "0x1"
In 3.8.6, the Foo enum itself fails to be created because HexMixin is now considered the member type instead of MyInt:
Traceback (most recent call last):
File "enum_test.py", line 18, in <module>
class Foo(MyIntEnum):
File "/usr/local/Cellar/python@3.8/3.8.6/Frameworks/Python.framework/Versions/3.8/lib/python3.8/enum.py", line 215, in __new__
enum_member = __new__(enum_class)
TypeError: object.__new__(Foo) is not safe, use int.__new__()
Activity
puddly commentedon Sep 30, 2020
The following code worked in 3.8.5 but does not in 3.8.6 due to the fix for bpo-39587:
In 3.8.6, the
Fooenum itself fails to be created becauseHexMixinis now considered the member type instead ofMyInt:WildCard65 commentedon Sep 30, 2020
Actually, this is an issue with native types in general that define a 'tp_new' slot value ('!= NULL').
ethanfurman commentedon Dec 7, 2020
New changeset c266736 by Ethan Furman in branch 'master':
bpo-41889: [Enum] fix multiple-inheritance regression (GH-22487)
c266736
ethanfurman commentedon Dec 7, 2020
New changeset 699e5e4 by Miss Islington (bot) in branch '3.8':
bpo-41889: [Enum] fix multiple-inheritance regression (GH-22487) (GH-23672)
699e5e4
ethanfurman commentedon Dec 7, 2020
New changeset be52ca4 by Miss Islington (bot) in branch '3.9':
bpo-41889: [Enum] fix multiple-inheritance regression (GH-22487) (GH-23673)
be52ca4