|
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() |
|
|