Использовать подпись одной функции как тип другой функцииPython

Программы на Python
Anonymous
Использовать подпись одной функции как тип другой функции

Сообщение Anonymous »

Если я напишу обертку вокруг функции, как мне правильно ввести *args и **kwargs?
В этом крошечном примере (просто крошечный автономный минимальный код, не предназначенный для связи с тем, что существует в реальной жизни)

Код: Выделить всё

# assume a fully typed log function somewhere, on which I have no control at all.
# def log(...)->... :

def debug(*args, **kwargs):
log(level=debug, *args, **kwargs)
Мне бы хотелось вводить аргументы и kwargs для отладки точно так же, как для журналов:

Код: Выделить всё

def debug(*args:logs.args, **kwargs:logs.kwargs) -> logs.return:  # invalid, but you get the idea
...
Если я правильно понимаю, ввод.ParamSpec здесь не поможет, поскольку log уже определен.
inspect.signature слишком динамичен, чтобы его можно было использовать при проверке статического типа.
Есть ли способ добиться того, чего я хочу?>

Вернуться в «Python»