Closed
Description
Bug Report
Mypy does not seem to recognize concretized type for a generic in its method's self.
To Reproduce
from typing import Callable, Generic, TypeVar
from typing_extensions import ParamSpec, Concatenate, Self
from unittest.mock import Mock
P = ParamSpec("P")
R = TypeVar("R")
class Check(Generic[P, R]):
def check(self) -> None:
pass
class Shall(
Generic[P, R]):
def __init__(self, callable: Callable[P, R]) -> None:
pass
def suchThat(self, other: Callable[Concatenate[R, P], bool]) -> Self:
return self
def check(returnValue: None, other: Check[[int],str] ) -> bool:
return True
Shall[[Check[[int],str]],None](Check[[int],str].check).suchThat(check)
https://mypy-play.net/?mypy=master&python=3.9&gist=0f2967cc8cff879cdfcc8280b7fca53c
Expected Behavior
No error
Actual Behavior
main.py:25: error: Argument 1 to "Shall" has incompatible type "Callable[[Check[P, R]], None]"; expected "Callable[[Check[[int], str]], None]" [arg-type]
- Mypy version used: latest master (de26134)
- Mypy configuration options from
mypy.ini
(and other config files):
[mypy]
strict = True
explicit_package_bases = True
namespace_packages = True
#mypy_path = src:test
files = src,test
mypy_path = $MYPY_CONFIG_FILE_DIR/src:$MYPY_CONFIG_FILE_DIR/test
- Python version used: 3.9.2