Beispiel #1
0
def test_merge_modes():

    for x, y in [({1, 2}, {3, 4}), ([1, 2], [3, 4]), ((1, 2), (3, 4))]:

        assert merge(x, y, mode="reset") == y
        assert merge(x, Reset(y)) == y
        assert merge(x, Reset(y), mode="merge") == y

        assert merge(x, y, mode="override") == y
        assert merge(x, Override(y)) == y
        assert merge(x, Override(y), mode="merge") == y

    a = {"a": 1}
    b = {"b": 2}
    c = {"a": 1, "b": 2}

    assert merge(a, b, mode="reset") == b
    assert merge(a, b, mode="override") == c

    a = {"a": [1, 2], "b": [3, 4]}
    b = {"a": [5, 6], "b": Override([7, 8])}
    c = {"a": [1, 2, 5, 6], "b": [7, 8]}
    d = {"a": [5, 6], "b": [7, 8]}

    assert merge(a, b) == c
    assert merge(a, b, mode="override") == d
Beispiel #2
0
def test_merge_modes():

    for x, y in [({1, 2}, {3, 4}), ([1, 2], [3, 4]), ((1, 2), (3, 4))]:

        assert merge(x, y, mode='reset') == y
        assert merge(x, Reset(y)) == y
        assert merge(x, Reset(y), mode='merge') == y

        assert merge(x, y, mode='override') == y
        assert merge(x, Override(y)) == y
        assert merge(x, Override(y), mode='merge') == y

    a = {'a': 1}
    b = {'b': 2}
    c = {'a': 1, 'b': 2}

    assert merge(a, b, mode='reset') == b
    assert merge(a, b, mode='override') == c

    a = {'a': [1, 2], 'b': [3, 4]}
    b = {'a': [5, 6], 'b': Override([7, 8])}
    c = {'a': [1, 2, 5, 6], 'b': [7, 8]}
    d = {'a': [5, 6], 'b': [7, 8]}

    assert merge(a, b) == c
    assert merge(a, b, mode='override') == d
Beispiel #3
0
def test_merge_registry():

    a = Registry()
    a.update(dict(a=1, b=2, c=3))
    b = Registry()
    b.update(dict(d=4))
    c = Registry()
    c.update(dict(a=1, b=2, c=3, d=4))

    assert merge(a, b) == c
    assert type(merge(a, b)) is Registry
Beispiel #4
0
def test_Partial():

    def f(x, y):
        return x + y

    p1 = Partial(f, x=10)
    p2 = Partial(f, y=20)

    assert p1(y=3) == 13
    assert p2(x=3) == 23
    assert merge(p1, p2)() == 30
    assert merge(p1, {'y': 20})() == 30

    with pytest.raises(TypeError):
        Partial(f, z=10)

    p3 = Reset(Partial(f, y=20))
    with pytest.raises(TypeError):
        merge(p1, p3)()

    p4 = Partial(f, x=[1, 2])
    p5 = Partial(f, x=[3, 4])

    assert merge(p4, p5)(y=[10]) == [1, 2, 3, 4, 10]
    assert merge(p5, p4)(y=[10]) == [3, 4, 1, 2, 10]

    p6 = Override(Partial(f, x=[3, 4]))
    assert merge(p4, p6)(y=[10]) == [3, 4, 10]

    def g(x, y):
        return x * y

    p7 = Partial(g, y=20)
    with pytest.raises(ValueError):
        merge(p1, p7)

    p8 = Override(Partial(g, y=20))
    assert merge(p1, p8)() == 200

    def h(**kw):
        return kw

    p9 = Partial(h, x=10)
    assert p9(y=20, z=30) == dict(x=10, y=20, z=30)

    str(p9), repr(p9)
Beispiel #5
0
def resolve_options(
    *option_dicts, read_argv=True, read_config=True, rest_target="--fn"
):
    options = {}
    for o in option_dicts:
        options = merge(options, o)

    if read_argv:
        options = merge(options, docopt(__doc__))

    if read_config:
        while True:
            configs = resolve(
                options["--config"], default_modules=[cfg], always_wrap=False
            )
            options["--config"] = []
            if not configs:
                break
            for config in configs:
                options = merge(config, options)

    return options
Beispiel #6
0
def test_Partial_class():
    class C:
        def __init__(self, x, y):
            self.x = x
            self.y = y

        def __call__(self):
            return self.x + self.y

    p1 = Partial(C, x=10)
    p2 = Partial(C, y=20)

    assert p1(y=3)() == 13
    assert p2(x=3)() == 23
    assert merge(p1, p2)()() == 30

    with pytest.raises(TypeError):
        Partial(C, z=10)
Beispiel #7
0
def test_merge():

    assert merge(1, 2) == 2
    assert merge([1, 2], [3, 4]) == [1, 2, 3, 4]
    assert merge((1, 2), (3, 4)) == (1, 2, 3, 4)
    assert merge({1, 2}, {3, 4}) == {1, 2, 3, 4}

    a = dict(a=1, b=2, c=dict(d=3, e=[4, 5]))
    b = dict(a=1, b=2, c=dict(e=[6, 7], f=8))
    c = dict(a=1, b=2, c=dict(d=3, e=[4, 5, 6, 7], f=8))

    assert merge(a, b) == c

    dlt = dict(c=DELETE, d=3)
    assert merge(a, dlt) == dict(a=1, b=2, d=3)
Beispiel #8
0
 def __call__(self, *args, **kwargs):
     """Create a MyiaFunctionTest."""
     kwargs = merge(self.spec, kwargs)
     kwargs["args"] = args
     return MyiaFunctionTest(self.runtest, kwargs)
Beispiel #9
0
 def configure(self, **spec):
     """Configure the factory with more kwargs."""
     return MyiaFunctionTestFactory(self.runtest, merge(self.spec, spec))
Beispiel #10
0
def test_merge_subclass():

    tm = TypeMap({int: "int"})
    mtm = merge(tm, {str: "str"})
    assert isinstance(mtm, TypeMap)
    assert mtm == TypeMap({int: "int", str: "str"})