Repository navigation
INTERNAL ERROR when using := assignment expression #9054
Copy link
Copy link
Closed
Labels
Description
To reproduce the bug, run mypy with the following command:
mypy --show-traceback test.pyWhere the contents of test.py are:
def func() -> None:
obj = MyClass()
if result := obj.var_name:
pass
class MyClass:
def __init__(self):
self.var_name = "abc"Here is the traceback that I get:
test.py:3: error: INTERNAL ERROR -- Please try using mypy master on Github:
https://mypy.rtfd.io/en/latest/common_issues.html#using-a-development-mypy-build
Please report a bug at https://github.com/python/mypy/issues
version: 0.790+dev.6ee562a8f3e69ac134f8c501b79b3712c9e24bbd
Traceback (most recent call last):
File "***/bin/mypy", line 8, in <module>
sys.exit(console_entry())
File "***/python3.8/site-packages/mypy/__main__.py", line 8, in console_entry
main(None, sys.stdout, sys.stderr)
File "***/python3.8/site-packages/mypy/main.py", line 89, in main
res = build.build(sources, options, None, flush_errors, fscache, stdout, stderr)
File "***/python3.8/site-packages/mypy/build.py", line 180, in build
result = _build(
File "***/python3.8/site-packages/mypy/build.py", line 252, in _build
graph = dispatch(sources, manager, stdout)
File "***/python3.8/site-packages/mypy/build.py", line 2626, in dispatch
process_graph(graph, manager)
File "***/python3.8/site-packages/mypy/build.py", line 2949, in process_graph
process_stale_scc(graph, scc, manager)
File "***/python3.8/site-packages/mypy/build.py", line 3047, in process_stale_scc
graph[id].type_check_first_pass()
File "***/python3.8/site-packages/mypy/build.py", line 2107, in type_check_first_pass
self.type_checker().check_first_pass()
File "***/python3.8/site-packages/mypy/checker.py", line 294, in check_first_pass
self.accept(d)
File "***/python3.8/site-packages/mypy/checker.py", line 401, in accept
stmt.accept(self)
File "***/python3.8/site-packages/mypy/nodes.py", line 677, in accept
return visitor.visit_func_def(self)
File "***/python3.8/site-packages/mypy/checker.py", line 726, in visit_func_def
self._visit_func_def(defn)
File "***/python3.8/site-packages/mypy/checker.py", line 730, in _visit_func_def
self.check_func_item(defn, name=defn.name)
File "***/python3.8/site-packages/mypy/checker.py", line 792, in check_func_item
self.check_func_def(defn, typ, name)
File "***/python3.8/site-packages/mypy/checker.py", line 975, in check_func_def
self.accept(item.body)
File "***/python3.8/site-packages/mypy/checker.py", line 401, in accept
stmt.accept(self)
File "***/python3.8/site-packages/mypy/nodes.py", line 1005, in accept
return visitor.visit_block(self)
File "***/python3.8/site-packages/mypy/checker.py", line 1973, in visit_block
self.accept(s)
File "***/python3.8/site-packages/mypy/checker.py", line 401, in accept
stmt.accept(self)
File "***/python3.8/site-packages/mypy/nodes.py", line 1196, in accept
return visitor.visit_if_stmt(self)
File "***/python3.8/site-packages/mypy/checker.py", line 3212, in visit_if_stmt
if_map, else_map = self.find_isinstance_check(e)
File "***/python3.8/site-packages/mypy/checker.py", line 3928, in find_isinstance_check
if_map, else_map = self.find_isinstance_check_helper(node)
File "***/python3.8/site-packages/mypy/checker.py", line 4104, in find_isinstance_check_helper
return self.find_isinstance_check_helper(node.target)
File "***/python3.8/site-packages/mypy/checker.py", line 4108, in find_isinstance_check_helper
vartype = type_map[node]
KeyError: <mypy.nodes.NameExpr object at 0x7fb2f0768940>
test.py:3: : note: use --pdb to drop into pdb
mypy 0.790+dev.6ee562a8f3e69ac134f8c501b79b3712c9e24bbd
Python 3.8.2
Reactions are currently unavailable
Activity
JukkaL commentedon Jul 3, 2020
This is a pretty bad crash, since the example looks fairly straightforward.
Store the type for assignment expr targets
llchan commentedon Sep 25, 2020
Quick note to self: if you reverse the order of
MyClassandfunc, the problem goes away.EDIT: deleted another sentence about
from __future__ import annotationsthat was wrong.hauntsaninja commentedon Sep 25, 2020
This seems to be the same stacktrace as #9034
hauntsaninja commentedon Sep 25, 2020
Switching the order fixes that one too.
Store the type for assignment expr (walrus) targets (#9479)
hauntsaninja commentedon Sep 27, 2020
@Apakottur thanks for reporting! And thanks to llchan this should be fixed on master :-) I was wondering if the code you're working on is open source? My interest is in adding projects to https://github.com/hauntsaninja/mypy_primer that use newer Python features.
Apakottur commentedon Sep 27, 2020
@hauntsaninja The code w're working on is not yet open source, but we plan on making some of it OS in the future.
In any case it is important to mention that we're only using
mypymanually on occasion, as we do not feel that it is ready to be used in CI.Store the type for assignment expr (walrus) targets (#9479)