示例#1
0
def test_construct_from_sequence():

    source = """
    --- !declare
    func:
        type: !resolve metaconfig.tests.utils.identity
        load: !resolve metaconfig.construct_from_sequence
    ...

    --- !let
    value: !func
        - 1
        - 2
    ...
    """

    config = Config()

    with StringIO(dedent(source)) as stream:
        config.load(stream)

    value = config.get("value")

    assert_tuple_equal(value[0], (1, 2))
    assert_dict_equal(value[1], {})
示例#2
0
def test_construct_from_mapping():

    source = """
    --- !declare
    func:
        type: !resolve metaconfig.tests.utils.identity
        load: !resolve metaconfig.construct_from_mapping
    ...

    --- !let
    value: !func
        a: 1
        c: 2
        b: 3
        d: 4
        f: 5
        e: 6
        h: 7
        g: 8
    ...
    """

    config = Config()

    with StringIO(dedent(source)) as stream:
        config.load(stream)

    value = config.get("value")

    assert_tuple_equal(value[0], ())
    assert_dict_equal(value[1], {"a": 1, "c": 2, "b": 3, "d": 4, "f": 5, "e": 6, "h": 7, "g": 8})
示例#3
0
def test_construct_from_args_kwargs():

    source = """
    --- !declare
    func:
        type: !resolve metaconfig.tests.utils.identity
        load: !resolve metaconfig.construct_from_args_kwargs
    ...

    --- !let
    value1: !func
        =: 
        - 1
        - 2
        a: 1
        b: 2
    value2: !func
        a: 1
        b: 2
    ...
    """

    config = Config()

    with StringIO(dedent(source)) as stream:
        config.load(stream)

    value1 = config.get("value1")
    assert_tuple_equal(value1[0], (1, 2))
    assert_dict_equal(value1[1], {"a": 1, "b": 2})

    value2 = config.get("value2")
    assert_tuple_equal(value2[0], ())
    assert_dict_equal(value2[1], {"a": 1, "b": 2})
示例#4
0
def test_declare_empty():

    source = """
    --- !declare {}
    ...
    """

    config = Config()

    with StringIO(dedent(source)) as stream:
        config.load(stream)
示例#5
0
def test_declare_resolve():

    source = """
    --- !declare
    type:
        type: !resolve builtins.type
        load: !resolve metaconfig.construct_from_sequence
    ...

    --- !let
    integer: !type 
        - 0
    string: !type 
        - ""
    float: !type 
        - 1.0
    "null": !type
        - ~
    ...
    """

    config = Config()

    with StringIO(dedent(source)) as stream:
        config.load(stream)

    assert_is(int, config.get("integer"))
    assert_is(str, config.get("string"))
    assert_is(float, config.get("float"))
    assert_is(type(None), config.get("null"))
示例#6
0
def test_construct_from_string():

    source = """
    --- !declare
    func:
        type: !resolve metaconfig.tests.utils.identity
        load: !resolve metaconfig.construct_from_string
    ...

    --- !let
    value1: !func "blabla"
    value2: !func 1
    value3: !func 3.14
    ...
    """

    config = Config()

    with StringIO(dedent(source)) as stream:
        config.load(stream)

    value1 = config.get("value1")
    assert_tuple_equal(value1[0], ("blabla",))
    assert_dict_equal(value1[1], {})

    value2 = config.get("value2")
    assert_tuple_equal(value2[0], ("1",))
    assert_dict_equal(value2[1], {})

    value3 = config.get("value3")
    assert_tuple_equal(value3[0], ("3.14",))
    assert_dict_equal(value3[1], {})
示例#7
0
def test_construct_from_value():

    source = """
    --- !declare
    func:
        type: !resolve metaconfig.tests.utils.identity
        load: !resolve metaconfig.construct_from_value
    ...

    --- !let
    value1: !func
        a: 1
        c: 2
        b: 3
        d: 4
        f: 5
        e: 6
        h: 7
        g: 8
    value2: !func
        - 1
        - 2
        - 3
    value3: !func "test"
    value4: !func 12345678
    value5: !func 3.141592
    ...
    """

    config = Config()

    with StringIO(dedent(source)) as stream:
        config.load(stream)

    value1 = config.get("value1")[0]
    assert_dict_equal(value1[0], {"a": 1, "c": 2, "b": 3, "d": 4, "f": 5, "e": 6, "h": 7, "g": 8})
    assert_list_equal(list(value1[0].keys()), ["a", "c", "b", "d", "f", "e", "h", "g"])
    value2 = config.get("value2")[0]
    assert_list_equal(value2[0], [1, 2, 3])

    value3 = config.get("value3")[0]
    assert_tuple_equal(value3, ("test",))

    value4 = config.get("value4")[0]
    assert_tuple_equal(value4, (12345678, ))

    value5 = config.get("value5")[0]
    assert_tuple_equal(value5, (3.141592, ))
示例#8
0
def main():

    print(title(str(datetime.now())))

    args = parse_args()

    config = Config()
    config.load(args.config)

    server = config.get_dependency("server")
    host = server.host
    port = server.port
    logger = server.logging.logger
    handler = server.logging.handler

    with handler.applicationbound():
        logger.info("Starting server at http://{}:{}".format(host, port))

        loop = asyncio.get_event_loop()

        ws_url = "ws://{}:{}".format(host, port)
        factory = ServerFactory(ws_url, 
            loop=loop, model=server.model, logger=logger, debug=False)

        coro = loop.create_server(factory, host, port)
        server = loop.run_until_complete(coro)

        try:
            loop.run_forever()
        except KeyboardInterrupt:
            sys.exit(0)
        else:
            sys.exit(3)
        finally:
            server.close()
            loop.close()
            print("Stopping server.")
示例#9
0
def test_declare_get():

    source = """
    --- !declare
    type:
        type: !resolve builtins.type
        load: !resolve metaconfig.construct_from_sequence
    tuple:
        type: !resolve builtins.tuple
        load: !resolve metaconfig.construct_from_value
    ...

    --- !let
    MyInteger: !type 
        - MyInteger
        - !tuple
            - !resolve builtins.int
        -
            one: 1
    ...

    --- !declare
    MyInteger:
        type: !get MyInteger
        load: !resolve metaconfig.construct_from_integer
    ...

    --- !let
    value: !MyInteger 10
    ...

    """

    config = Config()

    with StringIO(dedent(source)) as stream:
        config.load(stream)

    assert_equals(10, config.get("value"))
    assert_is_instance(config.get("value"), int)
    assert_equals(1, config.get("value").one)
示例#10
0
def test_construct_from_any():

    source = """
    --- !declare
    func:
        type: !resolve metaconfig.tests.utils.identity
        load: !resolve metaconfig.construct_from_any
    ...

    --- !let
    value1: !func
        a: 1
        c: 2
        b: 3
        d: 4
        f: 5
        e: 6
        h: 7
        g: 8
    value2: !func
        - 1
        - 2
        - 3
    value3: !func "test"
    value4: !func 12345678
    value5: !func 3.141592
    value6: !func
        =: 
        - 1
        - 2
        a: 1
        b: 2
    value7: !func ~
    ...
    """

    config = Config()

    with StringIO(dedent(source)) as stream:
        config.load(stream)

    value1 = config.get("value1")
    assert_tuple_equal(value1[0], ())
    assert_dict_equal(value1[1], {"a": 1, "c": 2, "b": 3, "d": 4, "f": 5, "e": 6, "h": 7, "g": 8})
    
    value2 = config.get("value2")
    assert_tuple_equal(value2[0], (1, 2, 3))
    assert_dict_equal(value2[1], {})

    value3 = config.get("value3")
    assert_tuple_equal(value3[0], ("test",))
    assert_dict_equal(value3[1], {})

    value4 = config.get("value4")
    assert_tuple_equal(value4[0], (12345678, ))
    assert_dict_equal(value4[1], {})

    value5 = config.get("value5")
    assert_tuple_equal(value5[0], (3.141592, ))
    assert_dict_equal(value5[1], {})

    value6 = config.get("value6")
    assert_tuple_equal(value6[0], (1, 2))
    assert_dict_equal(value6[1], {"a": 1, "b": 2})

    value7 = config.get("value7")
    assert_tuple_equal(value7[0], (None,))
    assert_dict_equal(value7[1], {})
示例#11
0
from metaconfig import Config


def parse_args():
    import argparse

    parser = argparse.ArgumentParser(description='Repository web application.')

    parser.add_argument('-c',
                        '--config',
                        dest='config',
                        help='path to config file (should be yaml)')

    return parser.parse_args()


if __name__ == '__main__':
    args = parse_args()

    config = Config()
    config.load(args.config)

    server = config.get_dependency("server")

    server['extra_files'] = [
        args.config,
    ]

    from werkzeug.serving import run_simple
    run_simple(**server)
示例#12
0
    sys.path.insert(0, parent_dir)
    import yggdrasil.app
    __package__ = str("yggdrasil.app")
    del sys, os

from metaconfig import Config

def parse_args():
    import argparse

    parser = argparse.ArgumentParser(description='Repository web application.')
    
    parser.add_argument('-c', '--config', 
        dest='config', help='path to config file (should be yaml)')

    return parser.parse_args()

if __name__ == '__main__':
    args = parse_args()

    config = Config()
    config.load(args.config)

    server = config.get_dependency("server")

    server['extra_files'] = [
        args.config,
        ]

    from werkzeug.serving import run_simple
    run_simple(**server)