Closed
Description
Similar to #14002; came up in python/typeshed#9084.
from typing import TypeVar, Generic, overload
T = TypeVar("T", str, int)
class Base(Generic[T]):
@overload
def method(self, s: T) -> T: ...
@overload
def method(self: Base[str], s: bytes) -> str: ...
def method(self, s: object): ...
class Child(Base[int]):
def method(self, s: int) -> int:
raise NotImplementedError
with mypy 1.1.1 produces:
/Users/jelle/bin/inerhit.py:13: error: Signature of "method" incompatible with supertype "Base" [override]
/Users/jelle/bin/inerhit.py:13: note: Superclass:
/Users/jelle/bin/inerhit.py:13: note: @overload
/Users/jelle/bin/inerhit.py:13: note: def method(self, s: int) -> int
/Users/jelle/bin/inerhit.py:13: note: @overload
/Users/jelle/bin/inerhit.py:13: note: def method(self, s: bytes) -> str
/Users/jelle/bin/inerhit.py:13: note: Subclass:
/Users/jelle/bin/inerhit.py:13: note: def method(self, s: int) -> int
Found 1 error in 1 file (checked 1 source file)
There should be no errors. The second overload is not applicable to a Base[int]
, so it should be fine that the subclass lacks it.