# external imports import logging import confini logg = logging.getLogger(__name__) default_arg_overrides = { 'abi_dir': 'ETH_ABI_DIR', 'p': 'ETH_PROVIDER', 'i': 'CIC_CHAIN_SPEC', 'r': 'CIC_REGISTRY_ADDRESS', } def override(config, override_dict, label): config.dict_override(override_dict, label) config.validate() return config def create(config_dir, args, env_prefix=None, arg_overrides=default_arg_overrides): # handle config input config = confini.Config(config_dir, env_prefix) config.process() if arg_overrides != None and args != None: override_dict = {} for k in arg_overrides: v = getattr(args, k) if v != None: override_dict[arg_overrides[k]] = v config = override(config, override_dict, 'args') else: config.validate() return config def log(config): logg.debug('config loaded:\n{}'.format(config))