Wrapping#

ivy.data_classes.container.wrapping._wrap_function(function_name, static)[source]#

Wrap the function called function_name.

Parameters:
  • function_name (str) – the name of the function e.g. “abs”, “mean” etc.

  • static (bool) – whether the function being wrapped will be added as a static method.

Return type:

Callable

Returns:

new_function – the wrapped function.

ivy.data_classes.container.wrapping.add_ivy_container_instance_methods(cls, modules, static=False, to_ignore=())[source]#

Loop over all ivy modules such as activations, general, etc. and add the module functions to ivy container as instance methods using _wrap_function.

Parameters:
  • cls (Type[Container]) – the class we want to add the instance methods to.

  • modules (Union[List[ModuleType], Container]) – the modules to loop over: activations, general etc.

  • static (Union[bool, Container], default: False) – whether the function should be added as a static method.

  • to_ignore (Union[Iterable, Container], default: ()) – any functions we don’t want to add an instance method for.

Examples

As shown, add_ivy_container_instance_methods adds all the appropriate functions from the statistical module as instance methods to our toy ContainerExample class:

>>> from ivy.functional.ivy import statistical
>>> class ContainerExample:
...     pass
>>> ivy.add_ivy_container_instance_methods(ContainerExample, [statistical])
>>> print(hasattr(ContainerExample, "mean"), hasattr(ContainerExample, "var"))
True True

This should have hopefully given you an overview of the wrapping submodule, if you have any questions, please feel free to reach out on our discord!