Esempio n. 1
0
    def get_parsed_schema_tests(self, root_project, all_projects):
        parsed_tests = {}

        for name, project in all_projects.items():
            parsed_tests.update(
                dbt.parser.load_and_parse_yml(
                    package_name=name,
                    root_project=root_project,
                    all_projects=all_projects,
                    root_dir=project.get('project-root'),
                    relative_dirs=project.get('source-paths', [])))

        return parsed_tests
Esempio n. 2
0
    def get_parsed_analyses(self, root_project, all_projects):
        parsed_models = {}

        for name, project in all_projects.items():
            parsed_models.update(
                dbt.parser.load_and_parse_sql(
                    package_name=name,
                    root_project=root_project,
                    all_projects=all_projects,
                    root_dir=project.get('project-root'),
                    relative_dirs=project.get('analysis-paths', []),
                    resource_type=NodeType.Analysis))

        return parsed_models
Esempio n. 3
0
    def get_parsed_macros(self, root_project, all_projects):
        parsed_macros = {}

        for name, project in all_projects.items():
            parsed_macros.update(
                dbt.parser.load_and_parse_macros(
                    package_name=name,
                    root_project=root_project,
                    all_projects=all_projects,
                    root_dir=project.get('project-root'),
                    relative_dirs=project.get('macro-paths', []),
                    resource_type=NodeType.Macro))

        return parsed_macros
Esempio n. 4
0
    def get_parsed_data_tests(self, root_project, all_projects):
        parsed_tests = {}

        for name, project in all_projects.items():
            parsed_tests.update(
                dbt.parser.load_and_parse_sql(
                    package_name=name,
                    root_project=root_project,
                    all_projects=all_projects,
                    root_dir=project.get('project-root'),
                    relative_dirs=project.get('test-paths', []),
                    resource_type=NodeType.Test,
                    tags={'data'}))

        return parsed_tests
Esempio n. 5
0
 def model_sources(self, project):
     "source_key is a dbt config key like source-paths or analysis-paths"
     paths = project.get('source-paths', [])
     if self.create_template.label == 'build':
         return Source(project).get_models(paths)
     elif self.create_template.label == 'test':
         return Source(project).get_test_models(paths)
     else:
         raise RuntimeError("unexpected create template type: '{}'".format(self.create_template.label))
Esempio n. 6
0
    def get_project_config(self, project):
        # most configs are overwritten by a more specific config, but pre/post
        # hooks are appended!
        config = {}
        for k in SourceConfig.AppendListFields:
            config[k] = []
        for k in SourceConfig.ExtendDictFields:
            config[k] = {}

        model_configs = project.get('models')

        if model_configs is None:
            return config

        # mutates config
        self.smart_update(config, model_configs)

        fqn = self.fqn[:]
        for level in fqn:
            level_config = model_configs.get(level, None)
            if level_config is None:
                break

            # mutates config
            relevant_configs = self.smart_update(config, level_config)

            clobber_configs = {
                k: v
                for (k, v) in relevant_configs.items()
                if k not in SourceConfig.AppendListFields
                and k not in SourceConfig.ExtendDictFields
            }

            config.update(clobber_configs)
            model_configs = model_configs[level]

        return config
Esempio n. 7
0
 def analysis_sources(self, project):
     "source_key is a dbt config key like source-paths or analysis-paths"
     paths = project.get('analysis-paths', [])
     return Source(project).get_analyses(paths)
Esempio n. 8
0
 def analysis_sources(self, project):
     paths = project.get('analysis-paths', [])
     return Source(project).get_analyses(paths)
Esempio n. 9
0
 def project_tests(self, project):
     source_paths = project.get('test-paths', [])
     return Source(project).get_tests(source_paths)
Esempio n. 10
0
 def project_schemas(self, project):
     source_paths = project.get('source-paths', [])
     return Source(project).get_schemas(source_paths)