-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Closed
Labels
Description
The following minimal example causes a crash:
from typing import Protocol, TypeVar, Union
T1 = TypeVar("T1", bound=float)
T2 = TypeVar("T2", bound=float)
class Vector(Protocol[T1]):
def __len__(self) -> int:
...
def __add__(
self: "Vector[T1]",
other: Union[T2, "Vector[T2]"],
) -> "Vector[Union[T1, T2]]":
...
class Matrix(Protocol[T1]):
def __add__(
self: "Matrix[T1]",
other: Union[T2, Vector[T2], "Matrix[T2]"],
) -> "Matrix[Union[T1, T2]]":
...
The traceback:
Traceback (most recent call last):
File "C:\Users\tyralla\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\tyralla\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 87, in _run_code
exec(code, run_globals)
File "mypy\checker.py", line 401, in accept
File "mypy\nodes.py", line 940, in accept
File "mypy\checker.py", line 1756, in visit_class_def
File "mypy\checker.py", line 1824, in check_protocol_variance
File "mypy\subtypes.py", line 93, in is_subtype
File "mypy\subtypes.py", line 135, in _is_subtype
File "mypy\types.py", line 794, in accept
File "mypy\subtypes.py", line 264, in visit_instance
File "mypy\subtypes.py", line 538, in is_protocol_implementation
File "mypy\subtypes.py", line 605, in find_member
File "mypy\subtypes.py", line 701, in find_node_type
File "mypy\expandtype.py", line 29, in expand_type_by_instance
File "mypy\expandtype.py", line 16, in expand_type
File "mypy\types.py", line 1098, in accept
File "mypy\expandtype.py", line 97, in visit_callable_type
File "mypy\expandtype.py", line 143, in expand_types
File "mypy\types.py", line 1724, in accept
File "mypy\expandtype.py", line 123, in visit_union_type
File "mypy\typeops.py", line 366, in make_simplified_union
File "mypy\subtypes.py", line 1156, in is_proper_subtype
File "mypy\subtypes.py", line 1177, in _is_proper_subtype
File "mypy\types.py", line 794, in accept
File "mypy\subtypes.py", line 1273, in visit_instance
File "mypy\subtypes.py", line 556, in is_protocol_implementation
File "mypy\subtypes.py", line 1156, in is_proper_subtype
File "mypy\subtypes.py", line 1177, in _is_proper_subtype
File "mypy\types.py", line 1098, in accept
File "mypy\subtypes.py", line 1294, in visit_callable_type
File "mypy\subtypes.py", line 839, in is_callable_compatible
File "mypy\subtypes.py", line 1068, in unify_generic_callable
File "mypy\constraints.py", line 101, in infer_constraints
File "mypy\constraints.py", line 174, in _infer_constraints
File "mypy\types.py", line 794, in accept
File "mypy\constraints.py", line 399, in visit_instance
File "mypy\subtypes.py", line 554, in is_protocol_implementation
File "mypy\subtypes.py", line 93, in is_subtype
File "mypy\subtypes.py", line 135, in _is_subtype
File "mypy\types.py", line 1098, in accept
File "mypy\subtypes.py", line 299, in visit_callable_type
File "mypy\subtypes.py", line 839, in is_callable_compatible
File "mypy\subtypes.py", line 1068, in unify_generic_callable
File "mypy\constraints.py", line 101, in infer_constraints
File "mypy\constraints.py", line 174, in _infer_constraints
File "mypy\types.py", line 794, in accept
File "mypy\constraints.py", line 401, in visit_instance
File "mypy\constraints.py", line 437, in infer_constraints_from_protocol_members
How I use Mypy:
- Mypy version used: 0.790
- Mypy command-line flags: --follow-imports=silent --show-error-codes --warn-unused-ignores --warn-redundant-casts --strict --show-traceback
- Mypy configuration options from
mypy.ini(and other config files): None - Python version used: 3.8.5
- Operating system and version: Windows 10