Как исправить ошибку mypy "Invalid self argument" при использовании обертки to_async для методов класса?
При попытке использовать обертку to_async для методов класса возникает ошибка mypy:
Invalid self argument "AFoo" to attribute function "method" with type "Callable[[Foo, int], Awaitable[int]]"
Пример кода, вызывающего ошибку:
from typing import Callable, TypeVar, Awaitable
from typing_extensions import ParamSpec
P = ParamSpec('P')
T = TypeVar('T')
def to_async(func: Callable[P, T]) -> Callable[P, Awaitable[T]]:
async def inner(*args, **kwargs):
return func(*args, **kwargs)
return inner
class Foo:
def method(self, x: int) -> int:
return x * 2
class AFoo:
method = to_async(Foo.method)
async def main() -> None:
y = await AFoo().method(10)
print(y)
# Error from mypy:
# Invalid self argument "AFoo" to attribute function "method" with type "Callable[[Foo, int], Awaitable[int]]"