Как исправить ошибку 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]]"

Ответы (0 шт):