Skip to content

KeyError: mypy.nodes.MemberExpr object #17321

@itamarst

Description

@itamarst

I'm using mypy/mypyc installed from git on June 3rd, 2024. Version for both mypy and mypyc is mypy 1.11.0+dev.93dac05cc8461f13c2031dff48711eecbe2595af (compiled: no).

Here's a reproducer:

from typing import Callable, Tuple, Literal, Union
from enum import Enum

class MyEnum(Enum):
    CONTINUE = object()


DeferredCallback = Callable[..., object]

_CallbackChain = Tuple[
    Tuple[
        Union[DeferredCallback, Literal[MyEnum.CONTINUE]],
    ]
]

And here's the result of running mypy and mypyc:

$ mypy repro.py 
Success: no issues found in 1 source file
$ mypyc repro.py 
Traceback (most recent call last):
  File "/home/itamarst/devel/twisted/build/setup.py", line 5, in <module>
    ext_modules=mypycify(['repro.py'], opt_level="3", debug_level="1"),
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/build.py", line 525, in mypycify
    groups, group_cfilenames = mypyc_build(
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/build.py", line 435, in mypyc_build
    group_cfiles, ops_text = generate_c(
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/build.py", line 243, in generate_c
    modules, ctext = emitmodule.compile_modules_to_c(
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/codegen/emitmodule.py", line 428, in compile_modules_to_c
    modules = compile_modules_to_ir(result, mapper, compiler_options, errors)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/codegen/emitmodule.py", line 272, in compile_modules_to_ir
    scc_ir = compile_scc_to_ir(trees, result, mapper, compiler_options, errors)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/codegen/emitmodule.py", line 227, in compile_scc_to_ir
    modules = build_ir(scc, result.graph, result.types, mapper, compiler_options, errors)
  File "/usr/lib/python3.11/contextlib.py", line 81, in inner
    return func(*args, **kwds)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/main.py", line 95, in build_ir
    transform_mypy_file(builder, module)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/main.py", line 140, in transform_mypy_file
    builder.accept(node)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/builder.py", line 266, in accept
    node.accept(self.visitor)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypy/nodes.py", line 1349, in accept
    return visitor.visit_assignment_stmt(self)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/visitor.py", line 201, in visit_assignment_stmt
    transform_assignment_stmt(self.builder, stmt)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/statement.py", line 192, in transform_assignment_stmt
    rvalue_reg = builder.accept(stmt.rvalue)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/builder.py", line 252, in accept
    res = node.accept(self.visitor)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypy/nodes.py", line 2026, in accept
    return visitor.visit_index_expr(self)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/visitor.py", line 277, in visit_index_expr
    return transform_index_expr(self.builder, expr)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/expression.py", line 570, in transform_index_expr
    index_reg = builder.accept(expr.index, can_borrow=is_list)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/builder.py", line 252, in accept
    res = node.accept(self.visitor)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypy/nodes.py", line 2026, in accept
    return visitor.visit_index_expr(self)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/visitor.py", line 277, in visit_index_expr
    return transform_index_expr(self.builder, expr)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/expression.py", line 570, in transform_index_expr
    index_reg = builder.accept(expr.index, can_borrow=is_list)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/builder.py", line 252, in accept
    res = node.accept(self.visitor)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypy/nodes.py", line 2332, in accept
    return visitor.visit_tuple_expr(self)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/visitor.py", line 307, in visit_tuple_expr
    return transform_tuple_expr(self.builder, expr)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/expression.py", line 943, in transform_tuple_expr
    reg = builder.accept(item_expr)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/builder.py", line 252, in accept
    res = node.accept(self.visitor)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypy/nodes.py", line 2026, in accept
    return visitor.visit_index_expr(self)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/visitor.py", line 277, in visit_index_expr
    return transform_index_expr(self.builder, expr)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/expression.py", line 570, in transform_index_expr
    index_reg = builder.accept(expr.index, can_borrow=is_list)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/builder.py", line 252, in accept
    res = node.accept(self.visitor)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypy/nodes.py", line 2332, in accept
    return visitor.visit_tuple_expr(self)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/visitor.py", line 307, in visit_tuple_expr
    return transform_tuple_expr(self.builder, expr)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/expression.py", line 943, in transform_tuple_expr
    reg = builder.accept(item_expr)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/builder.py", line 252, in accept
    res = node.accept(self.visitor)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypy/nodes.py", line 2026, in accept
    return visitor.visit_index_expr(self)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/visitor.py", line 277, in visit_index_expr
    return transform_index_expr(self.builder, expr)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/expression.py", line 570, in transform_index_expr
    index_reg = builder.accept(expr.index, can_borrow=is_list)
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/builder.py", line 252, in accept
    res = node.accept(self.visitor)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypy/nodes.py", line 1891, in accept
    return visitor.visit_member_expr(self)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/visitor.py", line 262, in visit_member_expr
    return transform_member_expr(self.builder, expr)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/itamarst/devel/twisted/.tox/py311/lib/python3.11/site-packages/mypyc/irbuild/expression.py", line 199, in transform_member_expr
    final_var, fullname, final_var.name, native, builder.types[expr], expr.line
                                                 ~~~~~~~~~~~~~^^^^^^
repro.py:12: KeyError: <mypy.nodes.MemberExpr object at 0x75e97207bf60>

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugmypy got something wrong

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions