import yaml from easydict import EasyDict def merge_new_config(config, new_config): if '_BASE_CONFIG_' in new_config: with open(new_config['_BASE_CONFIG_'], 'r') as f: try: yaml_config = yaml.safe_load(f, Loader=yaml.FullLoader) except: yaml_config = yaml.safe_load(f) config.update(EasyDict(yaml_config)) for key, val in new_config.items(): if not isinstance(val, dict): config[key] = val continue if key not in config: config[key] = EasyDict() merge_new_config(config[key], val) return config def cfg_from_yaml_file(cfg_file, config): with open(cfg_file, 'r') as f: try: new_config = yaml.safe_load(f, Loader=yaml.FullLoader) except: new_config = yaml.safe_load(f) merge_new_config(config=config, new_config=new_config) return config cfg = EasyDict()