Exemple #1
0
def test_deep_load():

    tree = Tree()

    @tree.root()
    class Config():

        @tree.node()
        class oidc():
            url = str

            @tree.node()
            class credentials():
                client_id = str
                key = str

    source_data = {'oidc': {'url': 'teve', 'credentials': {'client_id': 'muha', 'key': 'da_key'}}}

    cfg = tree.load(source_data)
    assert cfg.oidc.url == 'teve'
    assert cfg.oidc.credentials.client_id == 'muha'
    assert cfg.oidc.credentials.key == 'da_key'
def test_schema_var_annotation_list():

    StringList = List[str]

    tree = Tree()

    @tree.root()
    class Config():

        param_simpe_1: StringList

    schema = tree.build_schema()

    data = {'param_simpe_1': ['teve']}

    assert schema(data) == data

    with raises(MultipleInvalid):
        schema({})
    with raises(MultipleInvalid):
        schema({'param_simpe_1': 42})
    with raises(MultipleInvalid):
        schema({'param_simpe_1': [42]})
def test_list_of_objects():

    class ServerConfig(NodeBase):

        url = str

        def serialize(self):
            return self.__dict__

        class credentials(NodeBase):
            client_id = str
            secret = str

            def serialize(self):
                return self.__dict__

    tree = Tree()

    @tree.root()
    class Config():

        servers = tree.list_node([ServerConfig])

    source_data = {'servers':[{'url': 'http://teve.hu', 'credentials': {'client_id': 'id1', 'secret': '42'}}]}
    source_data2 = deepcopy(source_data)
    source_data2['servers'][0]['credentials']['client_id'] = 42
    source_data3 = deepcopy(source_data)
    del source_data3['servers'][0]['credentials']['secret']

    schema = tree.build_schema()
    assert len(schema.schema) == 1
    assert schema(source_data) == source_data
    assert schema({'servers': []}) == {'servers': []}
    with raises(MultipleInvalid):
        assert schema(source_data2)
    with raises(MultipleInvalid):
        assert schema(source_data3)
Exemple #4
0
def test_dict_node_dump():
    class ServerConfig(NodeBase):

        host = str
        port = int

        def serialize(self):
            return self.__dict__

    tree = Tree()

    @tree.root()
    class Config():

        servers = tree.dict_node(str, ServerConfig)

    source_data = {
        'servers': {
            'server1': {
                'host': 'teve',
                'port': 42
            },
            'server2': {
                'host': 'muha',
                'port': 422
            }
        }
    }

    cfg = tree.load(source_data)

    cfg.servers['server1'].port = 5042

    data = tree.dump(cfg)

    assert data['servers']['server1']['port'] == 5042
Exemple #5
0
def test_list_node_load_two_types():

    class ServerConfig(NodeBase):

        host = str
        port = int

        def serialize(self):
            return self.__dict__

    tree = Tree()

    @tree.root()
    class Config():

        servers = tree.list_node([ServerConfig, int])

    source_data = {'servers':[{'host': 'teve', 'port': 42}, 21]}

    cfg = tree.load(source_data)

    assert cfg.servers[0].host == 'teve'
    assert cfg.servers[0].port == 42
    assert cfg.servers[1] == 21
from configpp.tree import Tree

tree = Tree()


@tree.root()
class Config():

    param_simple_1 = 42


cfg = tree.load({})

print(cfg.param_simple_1)
Exemple #7
0
import logging
import logging.config

from configpp.soil import Config
from configpp.tree import Tree, Settings, DatabaseLeaf

logger = logging.getLogger(__name__)

tree = Tree(Settings(
    convert_underscores_to_hypens = True,
    convert_camel_case_to_hypens = True,
))


@tree.root()
class AppConfig:
    database: DatabaseLeaf
    redis: str
    logger: dict
    discord_token: str
    wows_token: str
    web_base_url: str


def load() -> AppConfig:
    config_loader = Config('scrat.yaml')

    if not config_loader.load():
        raise Exception("config not loaded")

    app_config: AppConfig = tree.load(config_loader.data)
def test_missing_root():
    tree = Tree()

    with raises(ConfigTreeBuilderException):
        tree.build_schema()
Exemple #9
0
from configpp.tree import Tree, Settings
from configpp.soil import create_from_url

tree = Tree(Settings(convert_underscores_to_hypens = True))

@tree.root()
class Config():

    port: int
    host = '0.0.0.0'
    mpv_socket_pattern: str
    logger: dict


def load() -> Config:
    config_loader = create_from_url('configpp://mpv-http-router.yaml')

    if not config_loader.load():
        return None

    return tree.load(config_loader.data)