#
from attrdict import AttrDict
+from log import LOG
import yaml
.format(file_name))
if from_cfg:
+ _validate_config(cfg, from_cfg)
cfg = from_cfg + cfg
return cfg
# empty string
cfg = AttrDict()
if from_cfg:
+ _validate_config(cfg, from_cfg)
return from_cfg + cfg
return cfg
-def test_config():
- cfg = config_load('a1.yaml')
- cfg = config_load('a2.yaml', cfg)
- cfg = config_loads('color: 500', cfg)
- config_loads('')
- config_loads('#')
+def _get_err_config(subset, superset):
+ result = {}
+ for k, v in subset.items():
+ if k not in superset:
+ result.update({k: v})
+ elif v is not None and superset[k] is not None:
+ if not isinstance(v, type(superset[k])):
+ result.update({k: v})
+ continue
+ if isinstance(v, dict):
+ res = _get_err_config(v, superset[k])
+ if res:
+ result.update({k: res})
+ if not result:
+ return None
+ return result
+
+def _validate_config(subset, superset):
+ err_cfg = _get_err_config(subset, superset)
+ if err_cfg:
+ err_msg = 'Unknown options found in config file/string: ' + str(err_cfg)
+ LOG.error(err_msg)
+ raise Exception(err_msg)