Esempio n. 1
0
def test_scalar_union():
    non_scalar_type = {"str_field": String}
    scalar_union_type = ScalarUnion(
        scalar_type=int,
        non_scalar_schema=non_scalar_type,
    )
    assert_inner_types(scalar_union_type, String, Int, non_scalar_type)
Esempio n. 2
0
def test_scalar_union():
    non_scalar_type = {'str_field': String}
    scalar_union_type = ScalarUnion(
        scalar_type=resolve_to_config_type(int),
        non_scalar_type=resolve_to_config_type(non_scalar_type),
    )
    assert_inner_types(scalar_union_type, String, Int, non_scalar_type)
Esempio n. 3
0
def test_scalar_or_selector():
    int_or_selector = ScalarUnion(
        scalar_type=int,
        non_scalar_schema=Selector({
            'a_string': str,
            'an_int': int
        }),
    )

    assert validate_config(int_or_selector, 2).success
    assert not validate_config(int_or_selector, '2').success
    assert not validate_config(int_or_selector, False).success

    assert validate_config(int_or_selector, {'a_string': 'kjdfk'}).success
    assert validate_config(int_or_selector, {'an_int': 2}).success
    assert not validate_config(int_or_selector, {}).success
    assert not validate_config(int_or_selector, {
        'a_string': 'kjdfk',
        'an_int': 2
    }).success
    assert not validate_config(int_or_selector, {'wrong_key': 'kjdfd'}).success
    assert not validate_config(int_or_selector, {'a_string': 2}).success
    assert not validate_config(int_or_selector, {
        'a_string': 'kjdfk',
        'extra_field': 'kd'
    }).success
Esempio n. 4
0
def test_scalar_or_selector():
    int_or_selector = ScalarUnion(
        scalar_type=int,
        non_scalar_schema=Selector({
            "a_string": str,
            "an_int": int
        }),
    )

    assert validate_config(int_or_selector, 2).success
    assert not validate_config(int_or_selector, "2").success
    assert not validate_config(int_or_selector, False).success

    assert validate_config(int_or_selector, {"a_string": "kjdfk"}).success
    assert validate_config(int_or_selector, {"an_int": 2}).success
    assert not validate_config(int_or_selector, {}).success
    assert not validate_config(int_or_selector, {
        "a_string": "kjdfk",
        "an_int": 2
    }).success
    assert not validate_config(int_or_selector, {"wrong_key": "kjdfd"}).success
    assert not validate_config(int_or_selector, {"a_string": 2}).success
    assert not validate_config(int_or_selector, {
        "a_string": "kjdfk",
        "extra_field": "kd"
    }).success
Esempio n. 5
0
def test_scalar_or_list():
    int_or_list = ScalarUnion(scalar_type=int, non_scalar_schema=resolve_to_config_type([str]))

    assert validate_config(int_or_list, 2).success
    assert not validate_config(int_or_list, "2").success
    assert not validate_config(int_or_list, False).success

    assert validate_config(int_or_list, []).success
    assert validate_config(int_or_list, ["ab"]).success
    assert not validate_config(int_or_list, [2]).success
    assert not validate_config(int_or_list, {}).success
Esempio n. 6
0
def test_scalar_or_list():
    int_or_list = ScalarUnion(scalar_type=resolve_to_config_type(int),
                              non_scalar_type=resolve_to_config_type([str]))

    assert validate_config(int_or_list, 2).success
    assert not validate_config(int_or_list, '2').success
    assert not validate_config(int_or_list, False).success

    assert validate_config(int_or_list, []).success
    assert validate_config(int_or_list, ['ab']).success
    assert not validate_config(int_or_list, [2]).success
    assert not validate_config(int_or_list, {}).success
Esempio n. 7
0
 def config_type(cls):
     return {
         "task_definition": Field(
             StringSource,
             is_required=False,
             description=(
                 "The task definition to use when launching new tasks. "
                 "If none is provided, each run will create its own task "
                 "definition."
             ),
         ),
         "container_name": Field(
             StringSource,
             is_required=False,
             default_value="run",
             description=(
                 "The container name to use when launching new tasks. Defaults to 'run'."
             ),
         ),
         "secrets": Field(
             Array(
                 ScalarUnion(
                     scalar_type=str,
                     non_scalar_schema={"name": StringSource, "valueFrom": StringSource},
                 )
             ),
             is_required=False,
             description=(
                 "An array of AWS Secrets Manager secrets. These secrets will "
                 "be mounted as environment variabls in the container. See "
                 "https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Secret.html."
             ),
         ),
         "secrets_tag": Field(
             Noneable(StringSource),
             is_required=False,
             default_value="dagster",
             description=(
                 "AWS Secrets Manager secrets with this tag will be mounted as "
                 "environment variables in the container. Defaults to 'dagster'."
             ),
         ),
         "include_sidecars": Field(
             bool,
             is_required=False,
             default_value=False,
             description=(
                 "Whether each run should use the same sidecars as the task that launches it. "
                 "Defaults to False."
             ),
         ),
     }
Esempio n. 8
0
def test_list_of_scalar_or_dict():
    int_or_dict_list = resolve_to_config_type(
        [ScalarUnion(scalar_type=int, non_scalar_schema=Shape({"a_string": str}))]
    )

    assert validate_config(int_or_dict_list, []).success
    assert validate_config(int_or_dict_list, [2]).success
    assert validate_config(int_or_dict_list, [{"a_string": "kjdfd"}]).success
    assert validate_config(int_or_dict_list, [2, {"a_string": "kjdfd"}]).success

    assert not validate_config(int_or_dict_list, [2, {"wrong_key": "kjdfd"}]).success
    assert not validate_config(int_or_dict_list, [2, {"a_string": 2343}]).success
    assert not validate_config(int_or_dict_list, ["kjdfkd", {"a_string": "kjdfd"}]).success
Esempio n. 9
0
def test_scalar_or_dict():

    int_or_dict = ScalarUnion(scalar_type=int, non_scalar_schema=Shape({"a_string": str}))

    assert validate_config(int_or_dict, 2).success
    assert not validate_config(int_or_dict, "2").success
    assert not validate_config(int_or_dict, False).success

    assert validate_config(int_or_dict, {"a_string": "kjdfk"}).success
    assert not validate_config(int_or_dict, {}).success
    assert not validate_config(int_or_dict, {"wrong_key": "kjdfd"}).success
    assert not validate_config(int_or_dict, {"a_string": 2}).success
    assert not validate_config(int_or_dict, {"a_string": "kjdfk", "extra_field": "kd"}).success
Esempio n. 10
0
def test_scalar_or_dict():

    int_or_dict = ScalarUnion(
        scalar_type=resolve_to_config_type(int), non_scalar_type=Shape({'a_string': str})
    )

    assert validate_config(int_or_dict, 2).success
    assert not validate_config(int_or_dict, '2').success
    assert not validate_config(int_or_dict, False).success

    assert validate_config(int_or_dict, {'a_string': 'kjdfk'}).success
    assert not validate_config(int_or_dict, {}).success
    assert not validate_config(int_or_dict, {'wrong_key': 'kjdfd'}).success
    assert not validate_config(int_or_dict, {'a_string': 2}).success
    assert not validate_config(int_or_dict, {'a_string': 'kjdfk', 'extra_field': 'kd'}).success
Esempio n. 11
0
def test_list_of_scalar_or_dict():
    int_or_dict_list = resolve_to_config_type(
        [
            ScalarUnion(
                scalar_type=resolve_to_config_type(int), non_scalar_type=Shape({'a_string': str})
            )
        ]
    )

    assert validate_config(int_or_dict_list, []).success
    assert validate_config(int_or_dict_list, [2]).success
    assert validate_config(int_or_dict_list, [{'a_string': 'kjdfd'}]).success
    assert validate_config(int_or_dict_list, [2, {'a_string': 'kjdfd'}]).success

    assert not validate_config(int_or_dict_list, [2, {'wrong_key': 'kjdfd'}]).success
    assert not validate_config(int_or_dict_list, [2, {'a_string': 2343}]).success
    assert not validate_config(int_or_dict_list, ['kjdfkd', {'a_string': 'kjdfd'}]).success
def test_scalar_union():
    # Requiring resolve calls is bad: https://github.com/dagster-io/dagster/issues/2266
    @solid(config=ScalarUnion(resolve_to_config_type(str), resolve_to_config_type({'bar': str})))
    def solid_with_config(_):
        pass

    @pipeline
    def single_solid_pipeline():
        solid_with_config()

    config_snaps = build_config_schema_snapshot(single_solid_pipeline).all_config_snaps_by_key

    scalar_union_key = solid_with_config.config_field.config_type.key

    assert scalar_union_key in config_snaps

    assert config_snaps[config_snaps[scalar_union_key].scalar_type_key].key == 'String'
    assert (
        config_snaps[config_snaps[scalar_union_key].non_scalar_type_key].kind
        == ConfigTypeKind.STRICT_SHAPE
    )