Mercurial > hgrepos > Python > libs > ConfigMix
changeset 217:b869e792310e
FIX: Extra merged and unsafe merges in configmix.safe_load
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Wed, 08 May 2019 09:39:51 +0200 |
| parents | c03c9162f7e6 |
| children | b56586789838 |
| files | CHANGES.txt configmix/__init__.py |
| diffstat | 2 files changed, 23 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/CHANGES.txt Wed May 08 09:34:00 2019 +0200 +++ b/CHANGES.txt Wed May 08 09:39:51 2019 +0200 @@ -16,6 +16,12 @@ :version: 0.7.1.dev1 :released: unreleased + .. change:: + :tags: bugfix + + :py:function:`configmix.safe_load` did some preliminary unsafe merges + from `defaults` and an extra additional unneeded merge. + .. changelog:: :version: 0.7 :released: 2019-05-06
--- a/configmix/__init__.py Wed May 08 09:34:00 2019 +0200 +++ b/configmix/__init__.py Wed May 08 09:39:51 2019 +0200 @@ -63,16 +63,15 @@ return Configuration() else: return Configuration(defaults) + if defaults is None: + start = 1 + ex = merge(None, _load_cfg_from_file(files[0])) else: - if defaults is None: - start = 1 - ex = merge(None, _load_cfg_from_file(files[0])) - else: - start = 0 - ex = merge(None, defaults) - for f in files[start:]: - ex = merge(_load_cfg_from_file(f), ex) - return Configuration(ex) + start = 0 + ex = merge(None, defaults) + for f in files[start:]: + ex = merge(_load_cfg_from_file(f), ex) + return Configuration(ex) def safe_load(*files, **kwargs): @@ -85,18 +84,16 @@ if defaults is None: return Configuration() else: - return Configuration(defaults) + return Configuration(copy.deepcopy(defaults)) + if defaults is None: + start = 1 + ex = safe_merge(None, _load_cfg_from_file(files[0])) else: - if defaults is None: - start = 1 - ex = merge(None, _load_cfg_from_file(files[0])) - else: - start = 0 - ex = merge(None, defaults) - ex = safe_merge(None, _load_cfg_from_file(files[0])) - for f in files[start:]: - ex = safe_merge(_load_cfg_from_file(f), ex) - return Configuration(ex) + start = 0 + ex = safe_merge(None, defaults) + for f in files[start:]: + ex = safe_merge(_load_cfg_from_file(f), ex) + return Configuration(ex) def _load_yaml(filename):
