Ejemplo n.º 1
0
def test_from_config():
    """@TODO: Docs. Contribution is welcome."""
    r = Registry("obj")

    r.add(foo)

    res = r.get_from_params(**{"obj": "foo", "a": 1, "b": 2})
    assert res == {"a": 1, "b": 2}

    res = r.get_from_params(**{})
    assert res is None
Ejemplo n.º 2
0
def test_name_key():
    """@TODO: Docs. Contribution is welcome."""
    r = Registry(name_key="_key_")

    r.add(foo)

    res = r.get_from_params(**{"_key_": "foo", "a": 1, "b": 2})()
    assert res == {"a": 1, "b": 2}

    res = r.get_from_params(**{"_target_": "foo", "a": 1, "b": 2})
    assert res == {"_target_": "foo", "a": 1, "b": 2}
Ejemplo n.º 3
0
def test_meta_factory():
    """@TODO: Docs. Contribution is welcome."""  # noqa: D202

    def meta_1(fn, args, kwargs):
        return fn

    def meta_2(fn, args, kwargs):
        return 1

    r = Registry("obj", meta_1)
    r.add(foo)

    res = r.get_from_params(**{"obj": "foo"})
    assert res == foo

    res = r.get_from_params(**{"obj": "foo"}, meta_factory=meta_2)
    assert res == 1
Ejemplo n.º 4
0
def test_recursive_get_from_config():
    def meta_factory(factory, args, kwargs):
        return factory(*args, **kwargs)

    r = Registry(meta_factory=meta_factory)

    r.add(foo)

    res = r.get_from_params(**{"_target_": "foo", "a": 1, "b": 2})
    assert res == {"a": 1, "b": 2}

    res = r.get_from_params(
        **{
            "_target_":
            "foo",
            "a": {
                "_target_": "foo",
                "a": {
                    "_target_": "foo",
                    "a": 1,
                    "b": 2
                },
                "b": 2
            },
            "b": [{
                "_target_": "foo",
                "a": 1,
                "b": 2
            }, {
                "_target_": "foo",
                "a": 1,
                "b": 2
            }],
        })
    assert res == {
        "a": {
            "a": {
                "a": 1,
                "b": 2
            },
            "b": 2
        },
        "b": [{
            "a": 1,
            "b": 2
        }, {
            "a": 1,
            "b": 2
        }]
    }

    res = r.get_from_params(
        **{
            "a": {
                "_target_": "foo",
                "a": 1,
                "b": 2
            },
            "b": {
                "_target_": "foo",
                "a": 1,
                "b": 2
            }
        })
    assert res == {"a": {"a": 1, "b": 2}, "b": {"a": 1, "b": 2}}

    # check nested dicts support
    res = r.get_from_params(
        **{
            "a": {
                "_target_": "foo",
                "a": 1,
                "b": 2
            },
            "b": {
                "_target_": "foo",
                "a": 1,
                "b": 2
            }
        })
    assert res == {"a": {"a": 1, "b": 2}, "b": {"a": 1, "b": 2}}

    res = r.get_from_params(**{
        "_target_": "foo",
        "a": {
            "c": {
                "_target_": "foo",
                "a": 1,
                "b": 2
            }
        },
        "b": 2
    })
    assert res == {"a": {"c": {"a": 1, "b": 2}}, "b": 2}

    # check nested lists support
    res = r.get_from_params(
        **{
            "_target_": "foo",
            "a": [[[{
                "_target_": "foo",
                "a": 1,
                "b": 2
            }]]],
            "b": {
                "c": 3,
                "d": {
                    "e": 4
                }
            },
        })
    assert res == {"a": [[[{"a": 1, "b": 2}]]], "b": {"c": 3, "d": {"e": 4}}}

    # check shared_params
    res = r.get_from_params(**{
        "_target_": "foo",
        "a": {
            "_target_": "foo",
            "a": 1,
            "b": 3
        }
    },
                            shared_params={"b": 2})
    assert res == {"a": {"a": 1, "b": 3}, "b": 2}