PEP 612 — ParamSpec для типизации декораторов. Проблема: декоратор оборачивает функцию, но теряет сигнатуру. from typing import ParamSpec, Concatenate. P = ParamSpec("P"). def decorator(func: Callable[P, T]) -> Callable[P, T]: @wraps(func) def wrapper(*args: P.args, **kwargs: P.kwargs) -> T: return func(*args, **kwargs); return wrapper. Теперь mypy знает, что обёрнутая функция имеет ту же сигнатуру. Concatenate[int, P] — добавить параметр в начало. Python 3.10+. Решает давнюю проблему типизации generic декораторов.
Что такое PEP 612 (ParamSpec)?
Senior
124 просмотровAFK Offer AI
Как работают __get__, __set__, __delete__?