Open
Description
Crash Report
I first encountered the bug on a project where I had just started trying to implement the new generic type syntax introduced in Python 3.12. I initially saw this bug with mypy 1.15 but it also occurs on the current master branch.
Traceback
repro.py:5: 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.16.0+dev.7b4f6311e29452cc8d4ddb78331d0047c8b17e93
Traceback (most recent call last):
File "/home/matthew/code/mypy/venv/bin/mypy", line 8, in <module>
sys.exit(console_entry())
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/__main__.py", line 15, in console_entry
main()
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/main.py", line 127, in main
res, messages, blockers = run_build(sources, options, fscache, t0, stdout, stderr)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/main.py", line 211, in run_build
res = build.build(sources, options, None, flush_errors, fscache, stdout, stderr)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/build.py", line 191, in build
result = _build(
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/build.py", line 267, in _build
graph = dispatch(sources, manager, stdout)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/build.py", line 2939, in dispatch
process_graph(graph, manager)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/build.py", line 3337, in process_graph
process_stale_scc(graph, scc, manager)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/build.py", line 3438, in process_stale_scc
graph[id].type_check_first_pass()
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/build.py", line 2311, in type_check_first_pass
self.type_checker().check_first_pass()
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checker.py", line 472, in check_first_pass
self.accept(d)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checker.py", line 579, in accept
stmt.accept(self)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/nodes.py", line 1200, in accept
return visitor.visit_class_def(self)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checker.py", line 2536, in visit_class_def
self.accept(defn.defs)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checker.py", line 579, in accept
stmt.accept(self)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/nodes.py", line 1281, in accept
return visitor.visit_block(self)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checker.py", line 3025, in visit_block
self.accept(s)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checker.py", line 579, in accept
stmt.accept(self)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/nodes.py", line 813, in accept
return visitor.visit_func_def(self)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checker.py", line 1129, in visit_func_def
self._visit_func_def(defn)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checker.py", line 1133, in _visit_func_def
self.check_func_item(defn, name=defn.name)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checker.py", line 1168, in check_func_item
self.check_func_def(defn, typ, name, allow_empty)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checker.py", line 1455, in check_func_def
self.accept(item.body)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checker.py", line 579, in accept
stmt.accept(self)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/nodes.py", line 1281, in accept
return visitor.visit_block(self)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checker.py", line 3025, in visit_block
self.accept(s)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checker.py", line 579, in accept
stmt.accept(self)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/nodes.py", line 1301, in accept
return visitor.visit_expression_stmt(self)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checker.py", line 4711, in visit_expression_stmt
expr_type = self.expr_checker.accept(s.expr, allow_none_return=True, always_allow_any=True)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 5962, in accept
typ = self.visit_call_expr(node, allow_none_return=True)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 488, in visit_call_expr
return self.visit_call_expr_inner(e, allow_none_return=allow_none_return)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 578, in visit_call_expr_inner
self.accept(e.callee, type_context, always_allow_any=True, is_callee=True)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 5970, in accept
typ = node.accept(self)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/nodes.py", line 1914, in accept
return visitor.visit_member_expr(self)
~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 3342, in visit_member_expr
result = self.analyze_ordinary_member_access(e, is_lvalue)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checkexpr.py", line 3372, in analyze_ordinary_member_access
member_type = analyze_member_access(
e.name,
...<10 lines>...
rvalue=rvalue,
)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checkmember.py", line 219, in analyze_member_access
result = _analyze_member_access(name, typ, mx, override_info)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checkmember.py", line 238, in _analyze_member_access
return analyze_instance_member_access(name, typ, mx, override_info)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checkmember.py", line 360, in analyze_instance_member_access
signature = check_self_arg(
signature, mx.self_type, method.is_class, mx.context, name, mx.msg
)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/checkmember.py", line 1038, in check_self_arg
if subtypes.is_subtype(
~~~~~~~~~~~~~~~~~~~^
dispatched_arg_type,
^^^^^^^^^^^^^^^^^^^^
...<6 lines>...
ignore_pos_arg_names=True,
^^^^^^^^^^^^^^^^^^^^^^^^^^
):
^
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/subtypes.py", line 188, in is_subtype
return _is_subtype(left, right, subtype_context, proper_subtype=False)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/subtypes.py", line 355, in _is_subtype
return left.accept(SubtypeVisitor(orig_right, subtype_context, proper_subtype))
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/types.py", line 1475, in accept
return visitor.visit_instance(self)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/subtypes.py", line 573, in visit_instance
infer_class_variances(right.type)
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/subtypes.py", line 2152, in infer_class_variances
if not infer_variance(info, i):
~~~~~~~~~~~~~~^^^^^^^^^
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/subtypes.py", line 2114, in infer_variance
if not is_subtype(typ, typ2):
~~~~~~~~~~^^^^^^^^^^^
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/subtypes.py", line 188, in is_subtype
return _is_subtype(left, right, subtype_context, proper_subtype=False)
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/subtypes.py", line 355, in _is_subtype
return left.accept(SubtypeVisitor(orig_right, subtype_context, proper_subtype))
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/types.py", line 3039, in accept
return visitor.visit_partial_type(self)
~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^
File "/home/matthew/code/mypy/venv/lib/python3.13/site-packages/mypy/subtypes.py", line 1088, in visit_partial_type
raise RuntimeError(f'Partial type "{left}" cannot be checked with "issubtype()"')
RuntimeError: Partial type "<partial dict[?, ?]>" cannot be checked with "issubtype()"
repro.py:5: : note: use --pdb to drop into pdb
To Reproduce
$ mypy repro.py
repro.py
:
class Repro[T]:
def __init__(self, v) -> None:
self.storage = {}
self.foo()
def foo(self):
pass
This is as minimal as I could get it.
Your Environment
- Mypy version used: mypy 1.16.0+dev.7b4f6311e29452cc8d4ddb78331d0047c8b17e93 (compiled: no)
- Mypy command-line flags: None
- Mypy configuration options from
mypy.ini
(and other config files): None - Python version used: Python 3.13.2
- Operating system and version: Manjaro Linux