spekk.trees.core.traverse#
- spekk.trees.core.traverse(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], path: tuple = ()) Generator[TraversalItem, None, None][source]#
Traverse a tree and yield all nodes (subtrees and leaves) as
TraversalItemobjects. The traversal is depth-first, left-to-right.>>> tree = {"a": [1, {"b": 2}, 3], "c": 4} >>> for item in traverse(tree, is_leaf=lambda x: isinstance(x, int)): ... print(item.value) 1 2 {'b': 2} 3 [1, {'b': 2}, 3] 4 {'a': [1, {'b': 2}, 3], 'c': 4}