Closed
Description
from typing import Type
def outer() -> Type:
class Inner:
pass
return Inner
print(outer())
Under CPython:
ichard26@acer-ubuntu:~/programming/oss/black$ python test.py
<class '__main__.outer.<locals>.Inner'>
With mypyc:
(black) ichard26@acer-ubuntu:~/programming/oss/black$ mypyc test.py
Traceback (most recent call last):
File "mypyc/irbuild/builder.py", line 169, in accept
File "mypy/nodes.py", line 950, in accept
File "mypyc/irbuild/visitor.py", line 104, in visit_class_def
File "mypyc/irbuild/classdef.py", line 44, in transform_class_def
test.py:4: KeyError: <TypeInfo test.Inner@4>
(black) ichard26@acer-ubuntu:~/programming/oss/black$ pip freeze | grep -P "(mypy)|(typing)"
[snipped]
mypy==0.812
mypy-extensions==0.4.3
typing-extensions==3.10.0.0
[snipped]
With mypyc on main:
(env2) ichard26@acer-ubuntu:~/programming/oss/black$ mypyc test.py
Traceback (most recent call last):
File "build/setup.py", line 5, in <module>
ext_modules=mypycify(['test.py'], opt_level="3"),
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/build.py", line 487, in mypycify
groups, group_cfilenames = mypyc_build(
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/build.py", line 400, in mypyc_build
group_cfiles, ops_text = generate_c(all_sources, options, groups, fscache,
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/build.py", line 200, in generate_c
modules, ctext = emitmodule.compile_modules_to_c(
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/codegen/emitmodule.py", line 410, in compile_modules_to_c
modules = compile_modules_to_ir(result, mapper, compiler_options, errors)
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/codegen/emitmodule.py", line 258, in compile_modules_to_ir
scc_ir = compile_scc_to_ir(trees, result, mapper, compiler_options, errors)
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/codegen/emitmodule.py", line 209, in compile_scc_to_ir
modules = build_ir(
File "/opt/python3.8.5/lib/python3.8/contextlib.py", line 75, in inner
return func(*args, **kwds)
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/irbuild/main.py", line 80, in build_ir
transform_mypy_file(builder, module)
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/irbuild/main.py", line 123, in transform_mypy_file
builder.accept(node)
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/irbuild/builder.py", line 169, in accept
node.accept(self.visitor)
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypy/nodes.py", line 687, in accept
return visitor.visit_func_def(self)
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/irbuild/visitor.py", line 116, in visit_func_def
transform_func_def(self.builder, fdef)
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/irbuild/function.py", line 59, in transform_func_def
func_ir, func_reg = gen_func_item(builder, fdef, fdef.name, builder.mapper.fdef_to_sig(fdef))
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/irbuild/function.py", line 281, in gen_func_item
builder.accept(fitem.body)
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/irbuild/builder.py", line 169, in accept
node.accept(self.visitor)
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypy/nodes.py", line 1015, in accept
return visitor.visit_block(self)
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/irbuild/visitor.py", line 125, in visit_block
transform_block(self.builder, block)
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/irbuild/statement.py", line 46, in transform_block
builder.accept(stmt)
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/irbuild/builder.py", line 169, in accept
node.accept(self.visitor)
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypy/nodes.py", line 950, in accept
return visitor.visit_class_def(self)
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/irbuild/visitor.py", line 104, in visit_class_def
transform_class_def(self.builder, cdef)
File "/home/ichard26/programming/oss/black/env2/lib/python3.8/site-packages/mypyc/irbuild/classdef.py", line 45, in transform_class_def
ir = builder.mapper.type_to_ir[cdef.info]
test.py:4: KeyError: <TypeInfo test.Inner@4>
(env2) ichard26@acer-ubuntu:~/programming/oss/black$ pip freeze
mypy @ git+https://github.com/python/mypy@4642a31bdd437edc2ebe788cc6deb3214f06d997
mypy-extensions==0.4.3
toml==0.10.2
typing-extensions==3.10.0.0
Minified from psf/black. Also, thanks for the great tool and work! While it is sometimes painful working with mypyc getting Black (finally) compiled, the speedups are encouraging and make me happy :)