spekk.trees.core.update_leaves

Contents

spekk.trees.core.update_leaves#

spekk.trees.core.update_leaves(tree: Mapping[Any, Mapping[Any, Tree] | Sequence[Tree] | Any] | Sequence[Mapping[Any, Tree] | Sequence[Tree] | Any] | Any, is_leaf: Callable[[Mapping[Any, Mapping[Any, Tree] | Sequence[Tree] | Any] | Sequence[Mapping[Any, Tree] | Sequence[Tree] | Any] | Any], bool], f: Callable[[Sequence[str]], Sequence[str]], path: tuple = ()) Mapping[Any, Mapping[Any, Tree] | Sequence[Tree] | Any] | Sequence[Mapping[Any, Tree] | Sequence[Tree] | Any] | Any[source]#

Apply f to all leaves in the tree.

>>> tree = {"foo": ["a", "b"], "bar": ["c"]}
>>> update_leaves(
...     tree,
...     lambda t: isinstance(t, list),
...     lambda dims: dims + ["new_dim"])
{'foo': ['a', 'b', 'new_dim'], 'bar': ['c', 'new_dim']}