def test_error_on_invalid_task_class_name(): with pytest.raises(ValueError) as excinfo: string.validate_task_class_name('invalid_class') assert str( excinfo.value) == "'invalid_class' is not a valid Task class name"
def test_error_on_invalid_task_class_name_with_typo(name, expected): with pytest.raises(ValueError) as excinfo: string.validate_task_class_name(name) expected = (f"{name!r} is not a valid Task class name. " f"Did you mean {expected!r}?") assert str(excinfo.value) == expected
def default_meta(cls, meta=None): """Fill missing values in a meta dictionary """ if meta is None: meta = {} validate.keys(cls.VALID, meta, name='dag spec') if 'extract_upstream' not in meta: meta['extract_upstream'] = True if 'extract_product' not in meta: meta['extract_product'] = False if 'product_relative_to_source' not in meta: meta['product_relative_to_source'] = False if 'jupyter_hot_reload' not in meta: meta['jupyter_hot_reload'] = False if 'jupyter_functions_as_notebooks' not in meta: meta['jupyter_functions_as_notebooks'] = False if 'import_tasks_from' not in meta: meta['import_tasks_from'] = None if 'source_loader' not in meta: meta['source_loader'] = None else: try: meta['source_loader'] = SourceLoader(**meta['source_loader']) except Exception as e: msg = ('Error initializing SourceLoader with ' f'{meta["source_loader"]}. Error message: {e.args[0]}') e.args = (msg, ) raise defaults = { 'SQLDump': 'File', 'NotebookRunner': 'File', 'SQLScript': 'SQLRelation', 'PythonCallable': 'File', 'ShellScript': 'File', } if 'product_default_class' not in meta: meta['product_default_class'] = defaults else: for class_, prod in defaults.items(): if class_ not in meta['product_default_class']: meta['product_default_class'][class_] = prod # validate keys and values in product_default_class for task_name, product_name in meta['product_default_class'].items(): try: validate_task_class_name(task_name) validate_product_class_name(product_name) except Exception as e: msg = f'Error validating product_default_class: {e.args[0]}' e.args = (msg, ) raise return meta