Source code for dq.config
import os
import toml
[docs]class Config(object):
"""Configuration helper."""
_instance = None
[docs] @classmethod
def init(cls):
"""Initialize the configuration.
If the config file contains a dictionary keyed by ``env``, all its
content will be set as environment variables.
This function should not be called externally. The ``Config.get``
function lazily initializes the config object automatically.
"""
dqenv = os.getenv('DQENV') or 'local'
with open('config/{}.toml'.format(dqenv)) as conffile:
cls._instance = toml.loads(conffile.read())
env = cls._instance.get('env')
if isinstance(env, dict):
for key, value in env.items():
os.environ[key] = value
[docs] @classmethod
def get(cls, key):
"""Get the config value specified by the provided key.
TOML config files should be stored in the config folder, and the
environment (i.e. which file to choose) should be specified by the
``DQENV`` environment variable.
:param string key: The key to retrieve the value for. Nested key should
have its components separated by dot, such as ``owner.email``.
:returns: The value of the key if it exists, and ``None`` otherwise.
"""
if cls._instance is None:
cls.init()
parts = key.split('.')
cfg = cls._instance
for part in parts:
cfg = cfg.get(part)
if cfg is None:
return None
return cfg