docs: def build_graph(self):
          """
          Read lazy dependency list and build graph.
          """
          for child, parents in self.dependencies.items():
              if child not in self.nodes:
                  raise NodeNotFoundError(
                      "App %s SQL item dependencies reference nonexistent child node %r" % (
                          child[0], child),
                      child
                  )
              for parent in parents:
                  if parent not in self.nodes:
                      raise NodeNotFoundError(
                          "App %s SQL item dependencies reference nonexistent parent node %r" % (
                              child[0], parent),
                          parent
                      )
                  self.node_map[child].add_parent(self.node_map[parent])
                  self.node_map[parent].add_child(self.node_map[child])
  
          for node in self.nodes:
              self.ensure_not_cyclic(node,
                                     lambda x: (parent.key for parent in self.node_map[x].parents))