Skip to content

Commit 77a92b5

Browse files
authored
[mypyc] allow use of enum.Enum (#13995)
Fixes mypyc/mypyc#896
1 parent a4da89e commit 77a92b5

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

mypyc/irbuild/classdef.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,11 @@ def populate_non_ext_bases(builder: IRBuilder, cdef: ClassDef) -> Value:
482482
name = "_NamedTuple"
483483
base = builder.get_module_attr("typing", name, cdef.line)
484484
else:
485-
base = builder.load_global_str(cls.name, cdef.line)
485+
cls_module = cls.fullname.rsplit(".", 1)[0]
486+
if cls_module == builder.current_module:
487+
base = builder.load_global_str(cls.name, cdef.line)
488+
else:
489+
base = builder.load_module_attr_by_fullname(cls.fullname, cdef.line)
486490
bases.append(base)
487491
if cls.fullname in MAGIC_TYPED_DICT_CLASSES:
488492
# The remaining base classes are synthesized by mypy and should be ignored.

mypyc/test-data/run-classes.test

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,16 @@ class TestEnum(Enum):
263263

264264
assert TestEnum.test() == 3
265265

266+
import enum
267+
268+
class Pokemon(enum.Enum):
269+
magikarp = 1
270+
squirtle = 2
271+
slowbro = 3
272+
273+
assert Pokemon.magikarp.value == 1
274+
assert Pokemon.squirtle.name == 'squirtle'
275+
266276
[file other.py]
267277
# Force a multi-module test to make sure we can compile multi-file with
268278
# non-extension classes

0 commit comments

Comments
 (0)