Вот что у меня есть:
Код: Выделить всё
from typing import Callable, Concatenate, ParamSpec, TypeVar
T = TypeVar('T')
U = TypeVar('U')
P = ParamSpec('P')
def foo(some_arg: U) -> Callable[
[Callable[Concatenate[U, P], T]],
Callable[P, T],
]:
def decorator(fn: Callable[Concatenate[U, P], T]) -> Callable[P, T]:
def wrapper(*args: P.args, **kwargs: P.kwargs) -> T:
return fn(some_arg, *args, **kwargs)
return wrapper
return decorator
Код: Выделить всё
error: Incompatible return value type (
got "Callable[[Arg(Callable[[U, **P], T], 'fn')], Callable[P, T]]",
expected "Callable[[Callable[[U, **P], T]], Callable[P, T]]") [return-value]
Мне не удалось найти никакой информации об элементе Arg, которую, по словам Mypy, он получил (не удалось найти typing.Arg в документации mypy).
Как мне объявить возвращаемое значение моей фабрики декораторов?
Как мне интерпретировать этот вывод ошибки из mypy? Какой-нибудь источник из документа, который я мог пропустить?
Подробнее здесь: https://stackoverflow.com/questions/772 ... decorators