-
-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Closed
Labels
Description
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.