Python convierte args a kwargs
Estoy escribiendo un decorador que necesita llamar a otras funciones antes de llamar a la función que está decorando. La función decorada puede tener argumentos posicionales, pero las funciones que llamará el decorador solo pueden aceptar argumentos de palabras clave. ¿Alguien tiene una manera práctica de convertir argumentos posicionales en argumentos de palabras clave?
Sé que puedo obtener una lista de los nombres de las variables de la función decorada:
>>> def a(one, two=2):
... pass
>>> a.func_code.co_varnames
('one', 'two')
Pero no puedo entender cómo saber qué se pasó en posición y qué fue como palabra clave.
Mi decorador se ve así:
class mydec(object):
def __init__(self, f, *args, **kwargs):
self.f = f
def __call__(self, *args, **kwargs):
hozer(**kwargs)
self.f(*args, **kwargs)
¿Hay alguna otra manera que no sea solo comparar kwargs y co_varnames, agregar a kwargs cualquier cosa que no esté allí y esperar lo mejor?