Можно ли заставить декораторы сохранять сигнатуры функций для средств проверки типов, таких как pylance?
def should_preserve_signature():
R = TypeVar("R")
def my_decorator(func: Callable[..., R]) -> Callable[..., R]:
# @wraps(func) -- no luck :(
# @wrapt.decorator -- no luck :(
def wrapper(*args: Any, **kwargs: Any) -> R:
return func(*args, **kwargs)
update_wrapper(wrapper, func)
return wrapper
@my_decorator
def my_func(s: str):
pass
my_func() # --> ISSUE: recognized by pylance as "(function) def my_func(...) -> None"
Ефим
Вопрос задан6 мая 2024 г.