View source on GitHub

Generates a shallow structure from a traverse_fn and structure.


traverse_fn must accept any possible subtree of structure and return a depth=1 structure containing True or False values, describing which of the top-level subtrees may be traversed. It may also return scalar True or False "traversal is OK / not OK for all subtrees."

Examples are available in the unit tests (


  • traverse_fn: Function taking a substructure and returning either a scalar bool (whether to traverse that substructure or not) or a depth=1 shallow structure of the same type, describing which parts of the substructure to traverse.
  • structure: The structure to traverse.
  • expand_composites: If true, then composite tensors such as tf.SparseTensor and tf.RaggedTensor are expanded into their component tensors.


A shallow structure containing python bools, which can be passed to map_structure_up_to and flatten_up_to.


  • TypeError: if traverse_fn returns a sequence for a non-sequence input, or a structure with depth higher than 1 for a sequence input, or if any leaf values in the returned structure or scalar are not type bool.