Beispiel #1
0
def test_json_compatibility() -> None:
    '''
    Test `dictify` and `namespacify`.
    '''
    dict_ = {
        'bool': False,
        'int': 1,
        'float': 2.2,
        'str': 'three',
        'list': [0, 1, 2],
        'dict': {
            'a': 0,
            'b': 1
        }
    }

    ns = Namespace(bool=False,
                   int=1,
                   float=2.2,
                   str='three',
                   list=[0, 1, 2],
                   dict=Namespace(a=0, b=1))

    assert dictify(ns) == dict_
    assert isinstance(dictify(ns)['dict'], dict)

    assert namespacify(dict_) == ns
    assert isinstance(namespacify(dict_).dict, Namespace)
Beispiel #2
0
def test_namespacify():
    obj = {
        'bool': False,
        'int': 1,
        'float': 2.2,
        'str': 'three',
        'list': [0, 1, 2],
        'dict': {
            'a': 0,
            'b': 1
        },
        'namespace': SimpleNamespace(c=2, d=3),
        'type': int
    }
    obj_as_ns = Namespace(bool=False,
                          int=1,
                          float=2.2,
                          str='three',
                          list=[0, 1, 2],
                          dict=Namespace(a=0, b=1),
                          namespace=Namespace(c=2, d=3),
                          type=int)
    assert namespacify(obj) == obj_as_ns
    assert isinstance(namespacify(obj).dict, Namespace)
    assert isinstance(namespacify(obj).namespace, Namespace)
Beispiel #3
0
def test_artifact_encoding(tmp_path: Path) -> None:
    '''
    Test converting paths strings to path-like objects.
    '''
    path = Path('x/y.ext')
    decode_path = lambda path_str: Path(path_str[2:])
    assert namespacify('@/x/y.ext', decode_path) == path
    assert namespacify(['@/x/y.ext'], decode_path) == [path]
    assert namespacify({'a': '@/x/y.ext'}, decode_path) == Namespace(a=path)
Beispiel #4
0
def test_namespacify_with_nesting():
    obj = {
        'list': [{
            'a': 0,
            'b': 1
        }, SimpleNamespace(c=2, d=3)],
        'dict': {
            'a': {
                'a': 0,
                'b': 1
            },
            'b': SimpleNamespace(c=2, d=3)
        },
        'namespace':
        SimpleNamespace(c={
            'a': 0,
            'b': 1
        }, d=SimpleNamespace(c=2, d=3))
    }
    obj_as_ns = Namespace(list=[Namespace(a=0, b=1),
                                Namespace(c=2, d=3)],
                          dict=Namespace(a=Namespace(a=0, b=1),
                                         b=Namespace(c=2, d=3)),
                          namespace=Namespace(c=Namespace(a=0, b=1),
                                              d=Namespace(c=2, d=3)))
    assert namespacify(obj) == obj_as_ns
    assert isinstance(namespacify(obj).dict, Namespace)
    assert isinstance(namespacify(obj).dict.a, Namespace)
    assert isinstance(namespacify(obj).dict.b, Namespace)
    assert isinstance(namespacify(obj).namespace, Namespace)
    assert isinstance(namespacify(obj).namespace.c, Namespace)
    assert isinstance(namespacify(obj).namespace.d, Namespace)
Beispiel #5
0
def test_json_compatibility_with_nesting() -> None:
    '''
    Test that `dictify` and `namespacify` also work recursively.
    '''
    dict_ = {
        'list': [{
            'a': 0,
            'b': 1
        }, {
            'c': 2,
            'd': 3
        }],
        'dict': {
            'a': {
                'a': 0,
                'b': 1
            },
            'b': {
                'c': 2,
                'd': 3
            }
        }
    }

    ns = Namespace(list=[Namespace(a=0, b=1),
                         Namespace(c=2, d=3)],
                   dict=Namespace(a=Namespace(a=0, b=1), b=Namespace(c=2,
                                                                     d=3)))

    assert dictify(ns) == dict_
    assert isinstance(dictify(ns)['dict'], dict)
    assert isinstance(dictify(ns)['dict']['a'], dict)
    assert isinstance(dictify(ns)['dict']['b'], dict)

    assert namespacify(dict_) == ns
    assert isinstance(namespacify(dict_).dict, Namespace)
    assert isinstance(namespacify(dict_).dict.a, Namespace)
    assert isinstance(namespacify(dict_).dict.b, Namespace)