Skip to content

AssertionError in visit_member_expr with mypy caching #2751

@timabbott

Description

@timabbott

Since we upgraded to 0.4.6 a few weeks ago, I've been getting repeated reports of folks encountering this mypy caching bug when using mypy in the Zulip project. It's reproducible running on just one file with the cache file.

$ ./tools/run-mypy zproject/local_settings_template.py
# Expands to:
$ mypy --fast-parser --silent-imports --check-untyped-defs --scripts-are-modules -i --cache-dir=var/mypy-cache --show-traceback --py2 --disallow-untyped-defs zproject/local_settings.py
zproject/local_settings.py:13: error: INTERNAL ERROR -- please report a bug at https://github.com/python/mypy/issues
Traceback (most recent call last):
  File "/srv/zulip-py3-venv/bin/mypy", line 6, in <module>
    main(__file__)
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/main.py", line 41, in main
    res = type_check_only(sources, bin_dir, options)
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/main.py", line 86, in type_check_only
    options=options)
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/build.py", line 183, in build
    dispatch(sources, manager)
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/build.py", line 1512, in dispatch
    process_graph(graph, manager)
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/build.py", line 1692, in process_graph
    process_stale_scc(graph, scc)
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/build.py", line 1767, in process_stale_scc
    graph[id].semantic_analysis()
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/build.py", line 1425, in semantic_analysis
    self.manager.semantic_analyzer.visit_file(self.tree, self.xpath, self.options)
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/semanal.py", line 246, in visit_file
    self.accept(d)
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/semanal.py", line 2758, in accept
    node.accept(self)
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/nodes.py", line 812, in accept
    return visitor.visit_assignment_stmt(self)
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/semanal.py", line 1153, in visit_assignment_stmt
    s.rvalue.accept(self)
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/nodes.py", line 1247, in accept
    return visitor.visit_call_expr(self)
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/semanal.py", line 2230, in visit_call_expr
    expr.callee.accept(self)
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/nodes.py", line 1202, in accept
    return visitor.visit_member_expr(self)
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/semanal.py", line 2330, in visit_member_expr
    base.accept(self)
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/nodes.py", line 1202, in accept
    return visitor.visit_member_expr(self)
  File "/srv/zulip-venv-cache/57f8666f53e8346f492eb35e8ffbcf05ee486a4f/zulip-py3-venv/lib/python3.5/site-packages/mypy/semanal.py", line 2337, in visit_member_expr
    assert isinstance(file, MypyFile)
AssertionError: 
zproject/local_settings.py:13: note: use --pdb to drop into pdb

That's the error I got on 0.4.6. If I try using master instead, the error moves to running on scripts/setup/generate_secrets.py.

Here's a tarball of the mypy cache directory involved: mypy-cache-bug.tar.gz

I don't know exactly what gets the cache in this state (running mypy twice after deleting the cache doesn't do it), but the issue does keep coming back for folks if one just deletes the cache.

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions