Bug Report
To Reproduce
from typing import Any, Generic, TypeVar
T = TypeVar("T")
class Foo(Generic[T]):
def __init__(self, value: T):
self.value = value
def identity(value: T) -> Foo[T]:
if isinstance(value, str):
return Foo(value)
return Foo(value)
Expected Behavior
mypy should be able to tell that in the type-guarded block, T == str and use that to qualify the types.
Actual Behavior
mypy reports an error Argument 1 to "Foo" has incompatible type "str"; expected "T" in the type-guarded block in identity().
Your Environment
- Mypy version used: 0.910
- Mypy command-line flags: N/A
- Mypy configuration options from
mypy.ini (and other config files): N/A
- Python version used: 3.9
- Operating system and version: Windows 10