Mercurial > hgrepos > Python > libs > ConfigMix
diff configmix/__init__.py @ 443:23941c014130
FIX: Merge properly when the configuration's __getitem__ do now interpolate: prohibit duplicate interpolation and interpolation while merging
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Fri, 10 Dec 2021 09:27:47 +0100 |
| parents | fa08713a4992 |
| children | 7ff4ee40b36c |
line wrap: on
line diff
--- a/configmix/__init__.py Fri Dec 10 03:00:11 2021 +0100 +++ b/configmix/__init__.py Fri Dec 10 09:27:47 2021 +0100 @@ -431,7 +431,11 @@ # do not copy del user[k] else: - user[k] = _merge(user[k], v, filter_comments) + if isinstance(user, Configuration): + user[k] = _merge( + user.getitem_ns(k), v, filter_comments) + else: + user[k] = _merge(user[k], v, filter_comments) else: user[k] = v _filter_deletions(user) @@ -451,7 +455,11 @@ # do not copy del user[k] else: - user[k] = _merge(user[k], v, filter_comments) + if isinstance(user, Configuration): + user[k] = _merge( + user.getitem_ns(k), v, filter_comments) + else: + user[k] = _merge(user[k], v, filter_comments) else: user[k] = v return user @@ -484,7 +492,11 @@ # do not copy del user[k] else: - user[k] = _safe_merge(user[k], v, filter_comments) + if isinstance(user, Configuration): + user[k] = _safe_merge( + user.getitem_ns(k), v, filter_comments) + else: + user[k] = _safe_merge(user[k], v, filter_comments) else: user[k] = copy.deepcopy(v) _filter_deletions(user) @@ -504,7 +516,11 @@ # do not copy del user[k] else: - user[k] = _safe_merge(user[k], v, filter_comments) + if isinstance(user, Configuration): + user[k] = _safe_merge( + user.getitem_ns(k), v, filter_comments) + else: + user[k] = _safe_merge(user[k], v, filter_comments) else: user[k] = copy.deepcopy(v) return user @@ -520,12 +536,21 @@ if not isinstance(d, dict): return # use a copy of the keys because we change `d` while iterating - for k in list(d.keys()): - if _is_comment(k): - del d[k] - else: - if isinstance(d[k], dict): - _filter_comments(d[k]) + if isinstance(d, Configuration): + for k in list(d.keys()): + if _is_comment(k): + del d[k] + else: + dk = d.getitem_ns(k) + if isinstance(dk, dict): + _filter_comments(dk) + else: + for k in list(d.keys()): + if _is_comment(k): + del d[k] + else: + if isinstance(d[k], dict): + _filter_comments(d[k]) def _is_comment(k): @@ -548,12 +573,21 @@ if not isinstance(d, dict): return # use a copy of the items because we change `d` while iterating - for k, v in list(d.items()): - if v == constants.DEL_VALUE: - del d[k] - else: - if isinstance(d[k], dict): - _filter_deletions(d[k]) + if isinstance(d, Configuration): + for k, v in list(d.items()): + if v == constants.DEL_VALUE: + del d[k] + else: + dk = d.getitem_ns(k) + if isinstance(dk, dict): + _filter_deletions(dk) + else: + for k, v in list(d.items()): + if v == constants.DEL_VALUE: + del d[k] + else: + if isinstance(d[k], dict): + _filter_deletions(d[k]) #
