New submission from puddly <pudd...@gmail.com>:
The following code worked in 3.8.5 but does not in 3.8.6 due to the fix for #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__() ``` ---------- components: Library (Lib) messages: 377692 nosy: barry, eli.bendersky, ethan.furman, puddly priority: normal severity: normal status: open title: enum: Mixin and int base class regression in 3.8.6 type: behavior versions: Python 3.10, Python 3.8, Python 3.9 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue41889> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com