_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 a DictObject containing parameter names mapped to their inspect.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 and ignore_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 and ignore_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. from inspect.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.