from typing import overload, Protocol, TypeVar
I = TypeVar('I')
V_contra = TypeVar('V_contra', contravariant=True)
class C(Protocol[I]):
def __abs__(self: 'C[V_contra]') -> 'C[V_contra]':
...
@overload
def f(self: 'C', q: int) -> int:
...
@overload
def f(self: 'C[float]', q: float) -> 'C[float]':
...
$ mypy --show-traceback a.py
a.py:10: 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.920+dev.7576f659d42ee271c78e69d7481b9d49517a49f6
Traceback (most recent call last):
File "m/bin/mypy", line 8, in <module>
sys.exit(console_entry())
File "m/lib/python3.9/site-packages/mypy/__main__.py", line 11, in console_entry
main(None, sys.stdout, sys.stderr)
File "m/lib/python3.9/site-packages/mypy/main.py", line 87, in main
res, messages, blockers = run_build(sources, options, fscache, t0, stdout, stderr)
File "m/lib/python3.9/site-packages/mypy/main.py", line 165, in run_build
res = build.build(sources, options, None, flush_errors, fscache, stdout, stderr)
File "m/lib/python3.9/site-packages/mypy/build.py", line 179, in build
result = _build(
File "m/lib/python3.9/site-packages/mypy/build.py", line 254, in _build
graph = dispatch(sources, manager, stdout)
File "m/lib/python3.9/site-packages/mypy/build.py", line 2707, in dispatch
process_graph(graph, manager)
File "m/lib/python3.9/site-packages/mypy/build.py", line 3031, in process_graph
process_stale_scc(graph, scc, manager)
File "m/lib/python3.9/site-packages/mypy/build.py", line 3129, in process_stale_scc
graph[id].type_check_first_pass()
File "m/lib/python3.9/site-packages/mypy/build.py", line 2175, in type_check_first_pass
self.type_checker().check_first_pass()
File "m/lib/python3.9/site-packages/mypy/checker.py", line 295, in check_first_pass
self.accept(d)
File "m/lib/python3.9/site-packages/mypy/checker.py", line 402, in accept
stmt.accept(self)
File "m/lib/python3.9/site-packages/mypy/nodes.py", line 959, in accept
return visitor.visit_class_def(self)
File "m/lib/python3.9/site-packages/mypy/checker.py", line 1734, in visit_class_def
self.accept(defn.defs)
File "m/lib/python3.9/site-packages/mypy/checker.py", line 402, in accept
stmt.accept(self)
File "m/lib/python3.9/site-packages/mypy/nodes.py", line 1024, in accept
return visitor.visit_block(self)
File "m/lib/python3.9/site-packages/mypy/checker.py", line 1996, in visit_block
self.accept(s)
File "m/lib/python3.9/site-packages/mypy/checker.py", line 402, in accept
stmt.accept(self)
File "m/lib/python3.9/site-packages/mypy/nodes.py", line 530, in accept
return visitor.visit_overloaded_func_def(self)
File "m/lib/python3.9/site-packages/mypy/checker.py", line 435, in visit_overloaded_func_def
self._visit_overloaded_func_def(defn)
File "m/lib/python3.9/site-packages/mypy/checker.py", line 462, in _visit_overloaded_func_def
self.check_overlapping_overloads(defn)
File "m/lib/python3.9/site-packages/mypy/checker.py", line 526, in check_overlapping_overloads
if is_unsafe_overlapping_overload_signatures(sig1, sig2):
File "m/lib/python3.9/site-packages/mypy/checker.py", line 5478, in is_unsafe_overlapping_overload_signatures
return (is_callable_compatible(signature, other,
File "m/lib/python3.9/site-packages/mypy/subtypes.py", line 879, in is_callable_compatible
if not ignore_return and not is_compat_return(left.ret_type, right.ret_type):
File "m/lib/python3.9/site-packages/mypy/checker.py", line 5480, in <lambda>
is_compat_return=lambda l, r: not is_subtype_no_promote(l, r),
File "m/lib/python3.9/site-packages/mypy/checker.py", line 5958, in is_subtype_no_promote
return is_subtype(left, right, ignore_promotions=True)
File "m/lib/python3.9/site-packages/mypy/subtypes.py", line 93, in is_subtype
return _is_subtype(left, right,
File "m/lib/python3.9/site-packages/mypy/subtypes.py", line 147, in _is_subtype
return left.accept(SubtypeVisitor(orig_right,
File "m/lib/python3.9/site-packages/mypy/types.py", line 858, in accept
return visitor.visit_instance(self)
File "m/lib/python3.9/site-packages/mypy/subtypes.py", line 276, in visit_instance
if right.type.is_protocol and is_protocol_implementation(left, right):
File "m/lib/python3.9/site-packages/mypy/subtypes.py", line 559, in is_protocol_implementation
supertype = get_proper_type(find_member(member, right, left))
File "m/lib/python3.9/site-packages/mypy/subtypes.py", line 626, in find_member
return find_node_type(method, itype, subtype)
File "m/lib/python3.9/site-packages/mypy/subtypes.py", line 716, in find_node_type
signature = bind_self(typ, subtype)
File "m/lib/python3.9/site-packages/mypy/typeops.py", line 239, in bind_self
typeargs = infer_type_arguments(all_ids, self_param_type, original_type,
File "m/lib/python3.9/site-packages/mypy/infer.py", line 45, in infer_type_arguments
constraints = infer_constraints(template, actual,
File "m/lib/python3.9/site-packages/mypy/constraints.py", line 101, in infer_constraints
return _infer_constraints(template, actual, direction)
File "m/lib/python3.9/site-packages/mypy/constraints.py", line 174, in _infer_constraints
return template.accept(ConstraintBuilderVisitor(actual, direction))
File "m/lib/python3.9/site-packages/mypy/types.py", line 858, in accept
return visitor.visit_instance(self)
File "m/lib/python3.9/site-packages/mypy/constraints.py", line 399, in visit_instance
mypy.subtypes.is_protocol_implementation(instance, erased)):
File "m/lib/python3.9/site-packages/mypy/subtypes.py", line 559, in is_protocol_implementation
supertype = get_proper_type(find_member(member, right, left))
File "m/lib/python3.9/site-packages/mypy/subtypes.py", line 626, in find_member
return find_node_type(method, itype, subtype)
File "m/lib/python3.9/site-packages/mypy/subtypes.py", line 716, in find_node_type
signature = bind_self(typ, subtype)
File "m/lib/python3.9/site-packages/mypy/typeops.py", line 239, in bind_self
typeargs = infer_type_arguments(all_ids, self_param_type, original_type,
File "m/lib/python3.9/site-packages/mypy/infer.py", line 45, in infer_type_arguments
constraints = infer_constraints(template, actual,
File "m/lib/python3.9/site-packages/mypy/constraints.py", line 101, in infer_constraints
return _infer_constraints(template, actual, direction)
File "m/lib/python3.9/site-packages/mypy/constraints.py", line 174, in _infer_constraints
return template.accept(ConstraintBuilderVisitor(actual, direction))
File "m/lib/python3.9/site-packages/mypy/types.py", line 858, in accept
return visitor.visit_instance(self)
File "m/lib/python3.9/site-packages/mypy/constraints.py", line 401, in visit_instance
self.infer_constraints_from_protocol_members(res, instance, template,
File "m/lib/python3.9/site-packages/mypy/constraints.py", line 447, in infer_constraints_from_protocol_members
assert inst is not None and temp is not None
AssertionError:
a.py:10: : note: use --pdb to drop into pdb
Reproducer
Traceback
Your Environment
--show-traceback a.pymypy.inior config files.