etree.backend.Backend#

class etils.etree.backend.Backend[source]#

Bases: abc.ABC

Tree API backend.

Note: The backend lazy-import the module on first call. This allow to use etree with Jax even if TF isn’t installed (and vice-versa).

property module: types.ModuleType#

Module used by the backend.

abstract import_module() types.ModuleType[source]#

Import and return the module.

abstract map(map_fn: Callable[[...], Any], *trees: Any | list[etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree]] | tuple[etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree], ...] | dict[str, etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree]], is_leaf: collections.abc.Callable[[Any], bool] | None = None) Any | list[etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree]] | tuple[etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree], ...] | dict[str, etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree]][source]#

Like tf.nest.map_structure.

abstract flatten(tree: etils.etree.backend._T | list[etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree]] | tuple[etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree], ...] | dict[str, etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree]], *, is_leaf: collections.abc.Callable[[Any], bool] | None = None) tuple[list[etils.etree.backend._T], Any][source]#

Like tf.nest.flatten.

abstract unflatten(structure: Any, flat_sequence: list[etils.etree.backend._T]) etils.etree.backend._T | list[etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree]] | tuple[etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree], ...] | dict[str, etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree]][source]#
abstract assert_same_structure(tree0: Any | list[etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree]] | tuple[etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree], ...] | dict[str, etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree]], tree1: Any | list[etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree]] | tuple[etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree], ...] | dict[str, etils.etree.typing._T | list[Tree] | tuple[Tree, ...] | dict[str, Tree]]) None[source]#