_filter_params¶
-
privex.helpers.common.
_filter_params
(params: Union[Dict[str, inspect.Parameter], Mapping[str, inspect.Parameter], List[inspect.Parameter], Iterable[inspect.Parameter]], ignore_xargs=False, ignore_xkwargs=False, **kwargs) → Dict[str, inspect.Parameter][source]¶ Filter an iterable containing
inspect.Parameter
’s, returning aDictObject
containing parameter names mapped to theirinspect.Parameter
object.Examples
Function
some_func
is used as an example.>>> import inspect >>> def some_func(x, y, z=123, *args, **kwargs): ... pass >>> params = inspect.signature(some_func).parameters
With just parameters, no filtering is done. Only scanning the parameters and returning them as a dict:
>>> _filter_params(params) {'x': <Parameter "x">, 'y': <Parameter "y">, 'z': <Parameter "z=123">, '*args': <Parameter "*args">, '**kwargs': <Parameter "**kwargs">}
With the arguments
ignore_xargs=True
andignore_xkwargs=True
, this strips away any catch-all parameters e.g.*args
/**kwargs
. Example:>>> _filter_params(params, ignore_xargs=True, ignore_xkwargs=True) {'x': <Parameter "x">, 'y': <Parameter "y">, 'z': <Parameter "z=123">}
With the arguments
ignore_defaults=True
andignore_positional=True
, this strips away all normal positional and keyword parameters - leaving only catch-all parameters for positional/keyword arguments. Example:>>> _filter_params(params, ignore_defaults=True, ignore_positional=True) {'*args': <Parameter "*args">, '**kwargs': <Parameter "**kwargs">}
- Parameters
params – An iterable of
inspect.Parameter
’s, e.g. frominspect.signature(func).parameters
ignore_xargs (bool) – Filter out any catch-all positional arguments (e.g.
*args
)ignore_xkwargs (bool) – Filter out any catch-all keyword arguments (e.g.
**kwargs
)
- Key bool ignore_defaults
Filter out any parameter which has a default value (e.g. args usable as kwargs)
- Key bool ignore_positional
Filter out any parameter which doesn’t have a default value (mandatory args)
- Return DictObject filtered
A dictionary of filtered params, mapping param names to Parameter objects.