Cómo exportar parámetros de llamada de función Python como YAML

Usa este decorador:

export_params_decorator.py
import functools
import inspect
import yaml
import sys

def print_params_as_yaml(key_arg, file_obj=sys.stdout):
    def decorator(func):
        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            # Obtener la firma de la función
            sig = inspect.signature(func)
            # Vincular los argumentos a la firma de la función
            bound_arguments = sig.bind(*args, **kwargs)
            # Convertir los argumentos vinculados a un diccionario
            params = dict(bound_arguments.arguments)

            # Extraer el valor del key_arg
            if key_arg not in params:
                raise ValueError(f"The key argument '{key_arg}' is not provided in the function call.")

            key_value = params.pop(key_arg)
            # Añadir el nombre de la función a los parámetros
            params['func'] = func.__name__
            yaml_dict = {key_value: params}

            # Convertir el diccionario de parámetros a formato YAML
            params_yaml = yaml.dump(yaml_dict, default_flow_style=False)

            # Imprimir o escribir los parámetros en formato YAML
            file_obj.write(params_yaml)
            file_obj.write('\n\n')

            # Ejecutar la función
            return func(*args, **kwargs)

        return wrapper
    return decorator

key_arg es el parámetro de función a usar

Ejemplo de uso:

export_params_example.py
# Ejemplo de uso:
@print_params_as_yaml(key_arg='a')
def example_function(a, b, c=3, d=4):
    return b + c + d

# Probar el decorador
example_function("foo", 2, d=5)

# Imprime
# foo:
#   b: 2
#   d: 5
#   func: example_function

Echa un vistazo a artículos similares por categoría: Python