Ejemplo n.º 1
0
    def link_graph(self, linker: Linker, manifest: Manifest):
        for source in manifest.sources.values():
            linker.add_node(source.unique_id)
        for node in manifest.nodes.values():
            self.link_node(linker, node, manifest)

        cycle = linker.find_cycles()

        if cycle:
            raise RuntimeError("Found a cycle: {}".format(cycle))
Ejemplo n.º 2
0
    def link_node(self, linker: Linker, node: NonSourceNode,
                  manifest: Manifest):
        linker.add_node(node.unique_id)

        for dependency in node.depends_on_nodes:
            if dependency in manifest.nodes:
                linker.dependency(node.unique_id,
                                  (manifest.nodes[dependency].unique_id))
            elif dependency in manifest.sources:
                linker.dependency(node.unique_id,
                                  (manifest.sources[dependency].unique_id))
            else:
                dbt.exceptions.dependency_not_found(node, dependency)