コード例 #1
0
ファイル: __init__.py プロジェクト: develucas/pyramid_yml
def config_defaults(configurator, config, files=['config.yml']):
    '''
        Reads and extends/creates configuration from yaml source.

        .. note::
            If exists, this method extends config with defaults, so it will not override existing values,
            merely add those, that were not defined already!

        :param pyramid.config.Configurator configurator: pyramid's app configurator
        :param string config: yaml file locations
        :param list files: list of files to include from location
    '''

    # getting spec path
    package_name, filename = resolve_asset_spec(config)
    if not package_name:
        path = filename
    else:
        __import__(package_name)
        package = sys.modules[package_name]
        path = os.path.join(package_path(package), filename)

    config = ConfigManager(files=[os.path.join(path, f) for f in files])

    # we could use this method both for creating and extending. Hence the checks to not override
    if not 'config' in configurator.registry:
        configurator.registry['config'] = config
    else:
        config.merge(configurator.registry['config'])
        configurator.registry['config'] = config
コード例 #2
0
ファイル: configuration.py プロジェクト: pylover/myrpi
def init(config=None, directories=None, files=None, force=False):
    """
    Initialize the configuration manager
    :param config: `string` or `dict`
    :param directories: semi-colon separated `string` or `list` of director(y|es)
    :param files: semi-colon separated `string` or `list` of file(s)
    :param force: force initialization even if it's already initialized
   """
    global _settings

    if not force and _settings is not None:
        raise ConfigurationAlreadyInitializedException("Configuration manager object is already initialized.")

    context = {
        'user_config_dir': user_config_dir()
    }

    _settings = ConfigManager(__builtin_config, context=context)

    if config:
        _settings.merge(config)

    local_config_file = join(user_config_dir(), 'myrpi.yaml')
    if exists(local_config_file):
        print('Loading config file: %s' % local_config_file)
        _settings.load_files(local_config_file)

    if directories:
        _settings.load_dirs(directories)

    if files:
        _settings.load_files(files)

    return _settings
コード例 #3
0
    def test_builtins(self):
        a_date = '2014/12/01'
        cm = ConfigManager(init_value=self.builtin_config, context=dict(date=a_date))
        cm.merge("""
a_date: %(date)s
        """)
        cm.version = 2.6
        self.assertEqual(cm.version, 2.6)
        self.assertEqual(cm.a_date, a_date)
        self.assertEqual(cm.general.name, self.builtin_config['general']['name'])
        self.assertIsInstance(cm.domains['coldon_ir'], ConfigDict)
        self.assertEqual(cm.data.url, 'some uri')
コード例 #4
0
ファイル: test_merge.py プロジェクト: Sharez/pymlconf
    def test_issue9(self):
        """
        Test just loading config files: https://github.com/pylover/pymlconf/issues/9
        """
        files = [path.join(thisdir, 'files', 'pytest_sauce.conf')]
        _cm = ConfigManager(files=files)
        self.assertTrue(_cm != None)
        _cm.merge("""
browsers:
    -   browsername: chrome
        platform: linux
        driver: chrome
        """)
コード例 #5
0
    def test_issue9(self):
        """
        Test just loading config files: https://github.com/pylover/pymlconf/issues/9
        """
        files = [path.join(thisdir, 'files', 'pytest_sauce.conf')]
        _cm = ConfigManager(files=files)
        self.assertTrue(_cm != None)
        _cm.merge("""
browsers:
    -   browsername: chrome
        platform: linux
        driver: chrome
        """)
コード例 #6
0
def config_defaults(configurator,
                    config_locations,
                    files=['config.yaml', 'config.yml']):
    """
    Read and extends/creates configuration from yaml source.

    .. note::
        If exists, this method extends config with defaults,
        so it will not override existing values, merely add those,
        that were not defined already!

    :param pyramid.config.Configurator configurator: pyramid's app configurator
    :param list config_locations: list of yaml file locations
    :param list files: list of files to include from location
    """
    if not isinstance(config_locations, (list, tuple)):
        config_locations = config_locations.split(',')

    env = configurator.registry.settings.get('env', 'dev')

    file_paths = []
    for location in config_locations:
        path = _translate_config_path(location)
        current_files = files
        if os.path.isfile(path):
            path, current_files = os.path.split(path)
            current_files = [current_files]

        for config_path in [
                os.path.join(path, f)
                for f in _env_filenames(current_files, env)
        ]:
            if os.path.isfile(config_path):
                file_paths.append(config_path)

    config = ConfigManager(files=file_paths)

    # we could use this method both for creating and extending.
    # Hence the checks to not override
    if 'config' not in configurator.registry:
        configurator.registry['config'] = config
    else:
        config.merge(configurator.registry['config'])
        configurator.registry['config'] = config
コード例 #7
0
ファイル: test_merge.py プロジェクト: Sharez/pymlconf
    def test_overiding_branch(self):
        """
        Testing Branch overriding
        """

        cm = ConfigManager(init_value=self._builtin)

        self.assertEqual(cm.background, [255, 255, 255])

        # testing merge
        additinal_config = """
my_section:
    item1:    hi
app:
    listen:
        sock3:
            addr: 10.8.0.2
            port: 9090
"""
        cm.merge(additinal_config)
        self.assertEqual(cm.app.name, "MyApp")
        self.assertEqual(len(cm.app.listen), 3)
        self.assertEqual(cm.app.listen.sock1.addr, "192.168.0.1")
        self.assertEqual(cm.app.listen.sock1.port, 8080)
        self.assertEqual(cm.app.listen.sock2.addr, "127.0.0.1")
        self.assertEqual(cm.app.listen.sock2.port, '89')
        self.assertEqual(cm.app.listen.sock3.addr, "10.8.0.2")  # Issue 7
        self.assertEqual(cm.app.listen.sock3.port, 9090)  # Issue 7
        self.assertEqual(cm.logging.logfile, "/var/log/myapp.log")

        self.assertEqual(cm.my_section.item1, "hi")

        # testing replace
        additinal_config = """
my_section:
    item1:    hi
app:
    listen: false
"""
        cm.merge(additinal_config)
        self.assertEqual(cm.my_section.item1, "hi")
        self.assertEqual(cm.app.listen, False)  # Issue 7
コード例 #8
0
    def test_overiding_branch(self):
        """
        Testing Branch overriding
        """

        cm = ConfigManager(init_value=self._builtin)

        self.assertEqual(cm.background, [255, 255, 255])

        # testing merge
        additinal_config = """
my_section:
    item1:    hi
app:
    listen:
        sock3:
            addr: 10.8.0.2
            port: 9090
"""
        cm.merge(additinal_config)
        self.assertEqual(cm.app.name, "MyApp")
        self.assertEqual(len(cm.app.listen), 3)
        self.assertEqual(cm.app.listen.sock1.addr, "192.168.0.1")
        self.assertEqual(cm.app.listen.sock1.port, 8080)
        self.assertEqual(cm.app.listen.sock2.addr, "127.0.0.1")
        self.assertEqual(cm.app.listen.sock2.port, '89')
        self.assertEqual(cm.app.listen.sock3.addr, "10.8.0.2")  # Issue 7
        self.assertEqual(cm.app.listen.sock3.port, 9090)  # Issue 7
        self.assertEqual(cm.logging.logfile, "/var/log/myapp.log")

        self.assertEqual(cm.my_section.item1, "hi")

        # testing replace
        additinal_config = """
my_section:
    item1:    hi
app:
    listen: false
"""
        cm.merge(additinal_config)
        self.assertEqual(cm.my_section.item1, "hi")
        self.assertEqual(cm.app.listen, False)  # Issue 7
コード例 #9
0
def config_defaults(
        configurator, config_locations, files=['config.yaml', 'config.yml']):
    """
    Read and extends/creates configuration from yaml source.

    .. note::
        If exists, this method extends config with defaults,
        so it will not override existing values, merely add those,
        that were not defined already!

    :param pyramid.config.Configurator configurator: pyramid's app configurator
    :param list config_locations: list of yaml file locations
    :param list files: list of files to include from location
    """
    if not isinstance(config_locations, (list, tuple)):
        config_locations = config_locations.split(',')

    env = configurator.registry.settings.get('env', 'dev')

    file_paths = []
    for location in config_locations:
        path = _translate_config_path(location)
        current_files = files
        if os.path.isfile(path):
            path, current_files = os.path.split(path)
            current_files = [current_files]

        for config_path in [
            os.path.join(path, f) for f in _env_filenames(current_files, env)
        ]:
            if os.path.isfile(config_path):
                file_paths.append(config_path)

    config = ConfigManager(files=file_paths)

    # we could use this method both for creating and extending.
    # Hence the checks to not override
    if 'config' not in configurator.registry:
        configurator.registry['config'] = config
    else:
        config.merge(configurator.registry['config'])
        configurator.registry['config'] = config
コード例 #10
0
def load_config(args):
    """Tries to load the configuration file or throws ExitWithError."""
    config = ConfigManager(DEFAULT_CONFIG)
    config_dir = home_dir.get()
    try:
        if args.config_file is not None:
            filename_override = os.path.abspath(args.config_file)
        else:
            filename_override = None
        config_contents = config_dir.read_config_file(filename_override)
        config.merge(ConfigManager(config_contents))
    except Exception as ex:
        print "Error reading configuration: %s" % ex.message
    if not 'api_key' in config.keys() or not 'api_secret' in config.keys():
        raise ExitWithError(
            -1, ("Cosmos command is unconfigured. Use '%s configure' to " +
                 "create a valid configuration or use --config-file with a " +
                 "valid configuration file") % sys.argv[0])
    config.credentials = (config.api_key, config.api_secret)
    strip_config(config)
    return config
コード例 #11
0
    def test_builtins(self):
        a_date = "2014/12/01"

        builtin = """
        builtin:
          value1: built-in config value
        """

        cm = ConfigManager(builtin=builtin, init_value=self.initial_config, context=dict(date=a_date))
        self.assertEqual(cm.builtin.value1, "built-in config value")
        cm.merge(
            """
a_date: %(date)s
        """
        )
        self.assertEqual(cm.version, 2.5)
        cm.version = 2.6
        self.assertEqual(cm.version, 2.6)
        self.assertEqual(cm.a_date, a_date)
        self.assertEqual(cm.general.name, self.initial_config["general"]["name"])
        self.assertIsInstance(cm.domains["coldon_ir"], ConfigDict)
        self.assertEqual(cm.data.url, "some uri")