code: def each_step(graph):
      
  
      steps = graph.topological_sort()
      steps.reverse()
  
      for step in steps:
          deps = graph.downstream(step.name)
          yield (step, deps)
docs: Returns an iterator that yields each step and it's direct
      dependencies.