etree.backend.Backend

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.

abstractmethod import_module() types.ModuleType[source]

Import and return the module.

abstractmethod 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.

abstractmethod 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.

abstractmethod 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]
abstractmethod 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]