def get_dot_graph(leaf_nodes: Collection[ValueNode]) -> pydot.Dot:
  """Utility to print a graph in a human readable manner.

  The format resembles a sequence of calls to apply_operation or
  apply_multi_output_operation.

  Args:
    leaf_nodes: A list of leaf `ValueNode`s to define the graph.  The graph will
      be the transitive parents of the leaf nodes.

  Returns:
    A human readable summary of the graph.
  """
  visitor = _PrintGraphVisitor()
  traverser = Traverser(visitor)
  for value_node in leaf_nodes:
    traverser.visit_value_node(value_node)
  return visitor.get_dot_graph()
Utility to print a graph in a human readable manner.

  The format resembles a sequence of calls to apply_operation or
  apply_multi_output_operation.

  Args:
    leaf_nodes: A list of leaf `ValueNode`s to define the graph.  The graph will
      be the transitive parents of the leaf nodes.

  Returns:
    A human readable summary of the graph.
  
tensorflow_transform/nodes.py