diff --git a/mypyc/irbuild/classdef.py b/mypyc/irbuild/classdef.py index 590bd12ce7b3b..5fd55ff4b5a46 100644 --- a/mypyc/irbuild/classdef.py +++ b/mypyc/irbuild/classdef.py @@ -513,7 +513,7 @@ def populate_non_ext_bases(builder: IRBuilder, cdef: ClassDef) -> Value: is_named_tuple = cdef.info.is_named_tuple ir = builder.mapper.type_to_ir[cdef.info] bases = [] - for cls in cdef.info.mro[1:]: + for cls in (b.type for b in cdef.info.bases): if cls.fullname == "builtins.object": continue if is_named_tuple and cls.fullname in ( @@ -682,7 +682,7 @@ def add_non_ext_class_attr( # are final. if ( cdef.info.bases - and cdef.info.bases[0].type.fullname == "enum.Enum" + and cdef.info.bases[0].type.is_enum # Skip these since Enum will remove it and lvalue.name not in EXCLUDED_ENUM_ATTRIBUTES ): diff --git a/mypyc/test-data/run-classes.test b/mypyc/test-data/run-classes.test index 6f58125a11132..d76974f7d83e8 100644 --- a/mypyc/test-data/run-classes.test +++ b/mypyc/test-data/run-classes.test @@ -2619,3 +2619,15 @@ def test_final_attribute() -> None: assert C.a['x'] == 'y' assert C.b['x'] == 'y' assert C.a is C.b + +[case testClassDerivedFromIntEnum] +from enum import IntEnum, auto + +class Player(IntEnum): + MIN = auto() + +print(f'{Player.MIN = }') +[file driver.py] +from native import Player +[out] +Player.MIN =