Ejemplo n.º 1
0
def test_get_function_non_positional_parameters_invalid():
    _, non_positionals = split_function_parameters(
        decorated_function_two_positionals_one_kwarg(), ["bar", "baz"])
    invalid_function_info = validate_decorated_fn_input_args(
        set(), non_positionals)
    assert invalid_function_info.error_type == InvalidDecoratedFunctionInfo.TYPES[
        "missing_name"]
Ejemplo n.º 2
0
def test_get_function_positional_parameters_ok():
    positionals, non_positionals = split_function_parameters(
        decorated_function_one_positional(), ["bar"])
    validate_decorated_fn_positionals(positionals, ["bar"])
    validate_decorated_fn_input_args(set(), non_positionals)
    assert "bar" in {positional.name for positional in positionals}
    assert not non_positionals
Ejemplo n.º 3
0
def test_get_function_positional_parameters_multiple():
    positionals, non_positionals = split_function_parameters(
        decorated_function_two_positionals_one_kwarg(), ["bar", "baz"])
    validate_decorated_fn_positionals(positionals, ["bar", "baz"])
    assert {positional.name for positional in positionals} == {"bar", "baz"}
    assert {non_positional.name
            for non_positional in non_positionals} == {"qux"}
Ejemplo n.º 4
0
def test_get_function_positional_parameters_multiple():
    positionals, non_positionals = split_function_parameters(
        decorated_function_two_positionals_one_kwarg(), ['bar', 'baz'])
    validate_decorated_fn_positionals(positionals, ['bar', 'baz'])
    validate_decorated_fn_non_positionals({'qux'}, non_positionals)
    assert {positional.name for positional in positionals} == {'bar', 'baz'}
    assert {non_positional.name
            for non_positional in non_positionals} == {'qux'}
Ejemplo n.º 5
0
 def wrapper(func):
     fn_positionals, _ = split_function_parameters(func, EXPECTED_POSITIONALS)
     missing_positional = validate_decorated_fn_positionals(fn_positionals, EXPECTED_POSITIONALS)
     if missing_positional:
         raise DagsterInvalidDefinitionError(
             "@dagster_type_loader '{solid_name}' decorated function does not have required positional "
             "parameter '{missing_param}'. Solid functions should only have keyword arguments "
             "that match input names and a first positional parameter named 'context'.".format(
                 solid_name=func.__name__, missing_param=missing_positional
             )
         )
     return _create_type_loader_for_decorator(config_type, func, required_resource_keys)
Ejemplo n.º 6
0
def test_get_function_positional_parameters_invalid():
    positionals, _ = split_function_parameters(
        decorated_function_one_positional(), ["bat"])
    assert validate_decorated_fn_positionals(positionals, ["bat"]) == "bat"