code: def nx_dag_node_rank(graph, nodes=None):
      import utool as ut
      source = list(ut.nx_source_nodes(graph))[0]
      longest_paths = dict([(target, dag_longest_path(graph, source, target))
                            for target in graph.nodes()])
      node_to_rank = ut.map_dict_vals(len, longest_paths)
      if nodes is None:
          return node_to_rank
      else:
          ranks = ut.dict_take(node_to_rank, nodes)
          return ranks