Hello,
I decided to try out the new mypy 1.16 branch on the codebase I work on and I found what I think is a bug.
Let's say you have the following code (makes more sense in the concrete example it comes from)
from collections.abc import Iterable
from typing import Protocol
class GetActions(Protocol):
def __call__(self, event_type: str) -> Iterable[str]: ...
class Parent:
get_actions: GetActions
class ActionsGetter:
@classmethod
def get_actions(self, event_type: str) -> Iterable[str]:
return ("1",)
class Child(Parent):
get_actions = ActionsGetter.get_actions
print(Child().get_actions("one"))
This works at runtime but at static time it complains with
a.py:20: error: Incompatible types in assignment (expression has type "Callable[[], Iterable[str]]", base class "Parent" defined the type as "GetActions") [assignment]
a.py:20: note: "GetActions.__call__" has type "Callable[[Arg(str, 'event_type')], Iterable[str]]"
Found 1 error in 1 file (checked 1 source file)
Where it believes that the type of Child.get_actions is Callable[[], Iterable[str]] instead of Callable[[Arg(str, 'event_type')], Iterable[str]]
Your Environment
- Mypy version used: release-1.16 (revision 96525a2, built locally with mypy_mypyc-wheels for cp312-macosx_arm64)
- Mypy command-line flags:
mypy a.py
- Mypy configuration options from
mypy.ini (and other config files): no config
- Python version used: python3.12
Hello,
I decided to try out the new mypy 1.16 branch on the codebase I work on and I found what I think is a bug.
Let's say you have the following code (makes more sense in the concrete example it comes from)
This works at runtime but at static time it complains with
Where it believes that the type of
Child.get_actionsisCallable[[], Iterable[str]]instead ofCallable[[Arg(str, 'event_type')], Iterable[str]]Your Environment
mypy a.pymypy.ini(and other config files): no config