import inspect from typing import Callable, TypeVar from ..helper.get_function_metadata_store import get_function_metadata_store from .parameter import parameter F = TypeVar("F", bound=Callable) def automatically_decorate_parameters(func: F) -> F: signature = inspect.signature(func) parameter_names = [ param.name for param in signature.parameters.values() if param.kind in (param.POSITIONAL_ONLY, param.POSITIONAL_OR_KEYWORD, param.KEYWORD_ONLY) ] metadata = get_function_metadata_store(func) for name in parameter_names: if ( name not in metadata.model_parameter_names and name not in metadata.input_parameter_names ): func = parameter(name)(func) return func