-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Closed
Labels
Description
Crash Report
mypy 0.931 crashes while checking sources when using follow_imports=skip. Issue not reproduced on mypy 0.910 or with follow_imports=normal.
Traceback
$ PYTHONPATH="./mypyMain/" python.exe -m mypy -p tests.test --show-traceback
C:\mypyrepro\tests\test.py:12: error: INTERNAL ERROR -- Please try using mypy master on Github:
https://mypy.readthedocs.io/en/stable/common_issues.html#using-a-development-mypy-build
Please report a bug at https://github.com/python/mypy/issues
version: 0.940+dev.3b331b30049bb085485b8aa7c1fe34064cab927e
Traceback (most recent call last):
File "runpy.py", line 197, in _run_module_as_main
File "runpy.py", line 87, in _run_code
File "C:\mypyrepro\mypyMain\mypy\__main__.py", line 34, in <module>
console_entry()
File "C:\mypyrepro\mypyMain\mypy\__main__.py", line 12, in console_entry
main(None, sys.stdout, sys.stderr)
File "C:\mypyrepro\mypyMain\mypy\main.py", line 96, in main
res, messages, blockers = run_build(sources, options, fscache, t0, stdout, stderr)
File "C:\mypyrepro\mypyMain\mypy\main.py", line 173, in run_build
res = build.build(sources, options, None, flush_errors, fscache, stdout, stderr)
File "C:\mypyrepro\mypyMain\mypy\build.py", line 180, in build
result = _build(
File "C:\mypyrepro\mypyMain\mypy\build.py", line 256, in _build
graph = dispatch(sources, manager, stdout)
File "C:\mypyrepro\mypyMain\mypy\build.py", line 2715, in dispatch
process_graph(graph, manager)
File "C:\mypyrepro\mypyMain\mypy\build.py", line 3046, in process_graph
process_stale_scc(graph, scc, manager)
File "C:\mypyrepro\mypyMain\mypy\build.py", line 3144, in process_stale_scc
graph[id].type_check_first_pass()
File "C:\mypyrepro\mypyMain\mypy\build.py", line 2183, in type_check_first_pass
self.type_checker().check_first_pass()
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 318, in check_first_pass
self.accept(d)
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 424, in accept
stmt.accept(self)
File "C:\mypyrepro\mypyMain\mypy\nodes.py", line 1008, in accept
return visitor.visit_class_def(self)
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 1802, in visit_class_def
self.accept(defn.defs)
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 424, in accept
stmt.accept(self)
File "C:\mypyrepro\mypyMain\mypy\nodes.py", line 1077, in accept
return visitor.visit_block(self)
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 2105, in visit_block
self.accept(s)
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 424, in accept
stmt.accept(self)
File "C:\mypyrepro\mypyMain\mypy\nodes.py", line 822, in accept
return visitor.visit_decorator(self)
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 3810, in visit_decorator
self.check_func_item(e.func, name=e.func.name)
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 840, in check_func_item
self.check_func_def(defn, typ, name)
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 1025, in check_func_def
self.accept(item.body)
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 424, in accept
stmt.accept(self)
File "C:\mypyrepro\mypyMain\mypy\nodes.py", line 1077, in accept
return visitor.visit_block(self)
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 2105, in visit_block
self.accept(s)
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 424, in accept
stmt.accept(self)
File "C:\mypyrepro\mypyMain\mypy\nodes.py", line 1234, in accept
return visitor.visit_return_stmt(self)
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 3394, in visit_return_stmt
self.check_return_stmt(s)
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 3426, in check_return_stmt
typ = get_proper_type(self.expr_checker.accept(
File "C:\mypyrepro\mypyMain\mypy\checkexpr.py", line 3975, in accept
typ = node.accept(self)
File "C:\mypyrepro\mypyMain\mypy\nodes.py", line 2069, in accept
return visitor.visit_generator_expr(self)
File "C:\mypyrepro\mypyMain\mypy\checkexpr.py", line 3810, in visit_generator_expr
return self.check_generator_or_comprehension(e, typ, '<generator>',
File "C:\mypyrepro\mypyMain\mypy\checkexpr.py", line 3820, in check_generator_or_comprehension
self.check_for_comp(gen)
File "C:\mypyrepro\mypyMain\mypy\checkexpr.py", line 3874, in check_for_comp
true_map, false_map = self.chk.find_isinstance_check(condition)
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 4447, in find_isinstance_check
if_map, else_map = self.find_isinstance_check_helper(node)
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 4584, in find_isinstance_check_helper
if_map, else_map = self.refine_identity_comparison_expression(
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 4992, in refine_identity_comparison_expression
types = conditional_types(expr_type, target_type)
File "C:\mypyrepro\mypyMain\mypy\checker.py", line 5544, in conditional_types
remaining_type = restrict_subtype_away(current_type, proposed_precise_type)
File "C:\mypyrepro\mypyMain\mypy\subtypes.py", line 1153, in restrict_subtype_away
new_items = [restrict_subtype_away(item, s, ignore_promotions=ignore_promotions)
File "C:\mypyrepro\mypyMain\mypy\subtypes.py", line 1156, in <listcomp>
not covers_at_runtime(item, s, ignore_promotions))]
File "C:\mypyrepro\mypyMain\mypy\subtypes.py", line 1171, in covers_at_runtime
if is_proper_subtype(erase_type(item), supertype, ignore_promotions=ignore_promotions,
File "C:\mypyrepro\mypyMain\mypy\erasetype.py", line 25, in erase_type
return typ.accept(EraseTypeVisitor())
File "C:\mypyrepro\mypyMain\mypy\types.py", line 2060, in accept
return visitor.visit_partial_type(self)
File "C:\mypyrepro\mypyMain\mypy\erasetype.py", line 48, in visit_partial_type
raise RuntimeError()
RuntimeError:
To Reproduce
Configuration - multiple files required to reproduce
__init__.py
tests/
**__init__.py
**test.py
**imported.py
mypy.ini
__init__.py
: empty
tests/__init__.py
: empty
tests/test.py
:
from typing import Iterable
from enum import Enum
from tests.imported import STRING
class E(Enum):
a = STRING
b = None
@classmethod
def keys(cls) -> Iterable[str]:
return (key.name for key in cls if key.value is not None)
print(list(E.keys()))
tests/imported.py
:
STRING = ‘string’
mypy.ini
:
[mypy]
follow_imports=skip
Your Environment
- Mypy version used: 0.931
- Mypy command-line flags: n/a | -p target
- Mypy configuration options from
mypy.ini
(and other config files):follow_imports=skip
- Python version used: Python 3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit (AMD64)] on win32
- Operating system and version: Microsoft Windows [Version 10.0.19044.1469]