Python 有没有一种方法可以合并来自装饰器和包装函数的签名?

Python 有没有一种方法可以合并来自装饰器和包装函数的签名?,python,python-decorators,Python,Python Decorators,我希望包装一个可调用函数,其中装饰符接受一个附加参数,包装函数的签名作为这两个参数的并集 比如说 def decorator(func): # something like @functools.wrap def wrapper(other_param: int = None, **kwargs): pass return wrapper @decorator def myfunc(*, foo: int, bar: int): pass

我希望包装一个可调用函数,其中装饰符接受一个附加参数,包装函数的签名作为这两个参数的并集

比如说

def decorator(func):
    # something like @functools.wrap 
    def wrapper(other_param: int = None, **kwargs):
        pass

    return wrapper

@decorator
def myfunc(*, foo: int, bar: int):
    pass
我想要的是一种在修饰过的myfunc上调用
inspect.signature
,并获取所有三个命名参数的方法。我知道sigtools库,但不能将其用作依赖项


编辑:为了澄清,我希望包装的签名是(foo,bar,other_param)

你想让
包装器的
**kwargs
变成
*,foo,bar
,还是仅仅用
包装器的签名来假装需要
*,foo,bar
?难道你不能签出sigtools的代码并复制你想要的部分吗?sigtools使用了很多抽象,并且希望有比重新实现库更干净的方法。你包装的函数的签名不是foo、bar、other_param
,所以这样报告是错误的;它实际上是
other_param=None,*,foo,bar
。我以前使用过类似的东西,不过只是为了保留签名,而不是扩展它。