Wuvin's picture
init
37aeb5b
raw
history blame contribute delete
832 Bytes
from omegaconf import DictConfig, OmegaConf
def parse_structured(fields, cfg) -> DictConfig:
scfg = OmegaConf.structured(fields(**cfg))
return scfg
def load_config(fields, config, extras=None):
if extras is not None:
print("Warning! extra parameter in cli is not verified, may cause erros.")
if isinstance(config, str):
cfg = OmegaConf.load(config)
elif isinstance(config, dict):
cfg = OmegaConf.create(config)
elif isinstance(config, DictConfig):
cfg = config
else:
raise NotImplementedError(f"Unsupported config type {type(config)}")
if extras is not None:
cli_conf = OmegaConf.from_cli(extras)
cfg = OmegaConf.merge(cfg, cli_conf)
OmegaConf.resolve(cfg)
assert isinstance(cfg, DictConfig)
return parse_structured(fields, cfg)