nodes: 0, module; 1, function_definition; 2, function_name:walk_target_deps_topological_order; 3, parameters; 4, block; 5, identifier:self; 6, typed_parameter; 7, expression_statement; 8, expression_statement; 9, for_statement; 10, identifier:target; 11, type; 12, comment:"""Generate all dependencies of `target` by topological sort order."""; 13, assignment; 14, identifier:dep_name; 15, call; 16, block; 17, identifier:Target; 18, identifier:all_deps; 19, call; 20, identifier:topological_sort; 21, argument_list; 22, if_statement; 23, identifier:get_descendants; 24, argument_list; 25, attribute; 26, comparison_operator:dep_name in all_deps; 27, block; 28, attribute; 29, attribute; 30, identifier:self; 31, identifier:target_graph; 32, identifier:dep_name; 33, identifier:all_deps; 34, expression_statement; 35, identifier:self; 36, identifier:target_graph; 37, identifier:target; 38, identifier:name; 39, yield; 40, subscript; 41, attribute; 42, identifier:dep_name; 43, identifier:self; 44, identifier:targets
code: def walk_target_deps_topological_order(self, target: Target):
          """Generate all dependencies of `target` by topological sort order."""
          all_deps = get_descendants(self.target_graph, target.name)
          for dep_name in topological_sort(self.target_graph):
              if dep_name in all_deps:
                  yield self.targets[dep_name]