INTERNAL ERROR with allow_redefinition_new and undeclared instance variables
Crash Report
When using allow_redefinition_new = true using an undeclared instance variable crashes mypy
Traceback
mypy --show-traceback .\test.py PS <project path>> mypy --show-traceback .\test.py test.py:9: 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: 1.19.0+dev.1b8841b665efdc308828ece877cb8e5141954a7b Traceback (most recent call last): File "<frozen runpy>", line 198, in _run_module_as_main File "<frozen runpy>", line 88, in _run_code File "<project path>\.venv\Scripts\mypy.exe\__main__.py", line 10, in <module> sys.exit(console_entry()) File "<project path>\.venv\Lib\site-packages\mypy\__main__.py", line 15, in console_entry main() File "<project path>\.venv\Lib\site-packages\mypy\main.py", line 127, in main res, messages, blockers = run_build(sources, options, fscache, t0, stdout, stderr) File "<project path>\.venv\Lib\site-packages\mypy\main.py", line 211, in run_build res = build.build(sources, options, None, flush_errors, fscache, stdout, stderr) File "<project path>\.venv\Lib\site-packages\mypy\build.py", line 196, in build result = _build( File "<project path>\.venv\Lib\site-packages\mypy\build.py", line 272, in _build graph = dispatch(sources, manager, stdout) File "<project path>\.venv\Lib\site-packages\mypy\build.py", line 2933, in dispatch process_graph(graph, manager) File "<project path>\.venv\Lib\site-packages\mypy\build.py", line 3333, in process_graph process_stale_scc(graph, scc, manager) File "<project path>\.venv\Lib\site-packages\mypy\build.py", line 3434, in process_stale_scc graph[id].type_check_first_pass() File "<project path>\.venv\Lib\site-packages\mypy\build.py", line 2312, in type_check_first_pass self.type_checker().check_first_pass() File "<project path>\.venv\Lib\site-packages\mypy\checker.py", line 524, in check_first_pass self.accept(d) File "<project path>\.venv\Lib\site-packages\mypy\checker.py", line 635, in accept stmt.accept(self) File "<project path>\.venv\Lib\site-packages\mypy\nodes.py", line 1445, in accept return visitor.visit_class_def(self) File "<project path>\.venv\Lib\site-packages\mypy\checker.py", line 2665, in visit_class_def self.accept(defn.defs) File "<project path>\.venv\Lib\site-packages\mypy\checker.py", line 635, in accept stmt.accept(self) File "<project path>\.venv\Lib\site-packages\mypy\nodes.py", line 1542, in accept return visitor.visit_block(self) File "<project path>\.venv\Lib\site-packages\mypy\checker.py", line 3126, in visit_block self.accept(s) File "<project path>\.venv\Lib\site-packages\mypy\checker.py", line 635, in accept stmt.accept(self) File "<project path>\.venv\Lib\site-packages\mypy\nodes.py", line 971, in accept return visitor.visit_func_def(self) File "<project path>\.venv\Lib\site-packages\mypy\checker.py", line 1192, in visit_func_def self._visit_func_def(defn) File "<project path>\.venv\Lib\site-packages\mypy\checker.py", line 1196, in _visit_func_def self.check_func_item(defn, name=defn.name) File "<project path>\.venv\Lib\site-packages\mypy\checker.py", line 1231, in check_func_item self.check_func_def(defn, typ, name, allow_empty) File "<project path>\.venv\Lib\site-packages\mypy\checker.py", line 1504, in check_func_def self.accept(item.body) File "<project path>\.venv\Lib\site-packages\mypy\checker.py", line 635, in accept stmt.accept(self) File "<project path>\.venv\Lib\site-packages\mypy\nodes.py", line 1542, in accept return visitor.visit_block(self) File "<project path>\.venv\Lib\site-packages\mypy\checker.py", line 3126, in visit_block self.accept(s) File "<project path>\.venv\Lib\site-packages\mypy\checker.py", line 635, in accept stmt.accept(self) File "<project path>\.venv\Lib\site-packages\mypy\nodes.py", line 1629, in accept return visitor.visit_assignment_stmt(self) File "<project path>\.venv\Lib\site-packages\mypy\checker.py", line 3177, in visit_assignment_stmt self.check_assignment(s.lvalues[-1], s.rvalue, s.type is None, s.new_syntax) File "<project path>\.venv\Lib\site-packages\mypy\checker.py", line 3385, in check_assignment self.check_indexed_assignment(index_lvalue, rvalue, lvalue) File "<project path>\.venv\Lib\site-packages\mypy\checker.py", line 4752, in check_indexed_assignment basetype = get_proper_type(self.expr_checker.accept(lvalue.base)) File "<project path>\.venv\Lib\site-packages\mypy\checkexpr.py", line 6050, in accept typ = node.accept(self) File "<project path>\.venv\Lib\site-packages\mypy\nodes.py", line 2175, in accept return visitor.visit_member_expr(self) ~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^ File "<project path>\.venv\Lib\site-packages\mypy\checkexpr.py", line 3318, in visit_member_expr narrowed = self.narrow_type_from_binder(e, result) File "<project path>\.venv\Lib\site-packages\mypy\checkexpr.py", line 6353, in narrow_type_from_binder narrowed = narrow_declared_type(known_type, restriction) File "<project path>\.venv\Lib\site-packages\mypy\meet.py", line 174, in narrow_declared_type elif not is_overlapping_types(declared, narrowed, prohibit_none_typevar_overlap=True): ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<project path>\.venv\Lib\site-packages\mypy\meet.py", line 354, in is_overlapping_types assert False, "Unexpectedly encountered partial type" ^^^^^ AssertionError: Unexpectedly encountered partial type test.py:9: : note: use --pdb to drop into pdb
To Reproduce
import random class Test: # var: dict[str, str] | None # This declaration would fix the crash def __init__(self) -> None: if random.choice([True, False]): self.var = None return self.var = {} self.var["test"] = ""
Your Environment
- Mypy version used: 1.18.2 and 1.19.0+dev.1b8841b665efdc308828ece877cb8e5141954a7b
- Mypy command-line flags:
- Mypy configuration options from
mypy.ini(and other config files):
allow_redefinition_new = true # without this it works local_partial_types = true
- Python version used: 3.13.7
- Operating system and version: Windows 11 Version 10.0.22631 Build 22631