You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
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
To Reproduce
$ mypy repro.py
repro.py
:This is as minimal as I could get it.
Your Environment
mypy.ini
(and other config files): NoneThe text was updated successfully, but these errors were encountered: