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
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
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
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
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))
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
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)
def analysis_sources(self, project): paths = project.get('analysis-paths', []) return Source(project).get_analyses(paths)
def project_tests(self, project): source_paths = project.get('test-paths', []) return Source(project).get_tests(source_paths)
def project_schemas(self, project): source_paths = project.get('source-paths', []) return Source(project).get_schemas(source_paths)