Mercurial > hgrepos > Python > libs > ConfigMix
changeset 638:ef485419d723
FIX: Now the merge logic does not interpolate variables in any case.
Previously it did sometimes.
| author | Franz Glasner <f.glasner@feldmann-mg.com> |
|---|---|
| date | Fri, 04 Mar 2022 18:14:12 +0100 |
| parents | 4499e9b4855d |
| children | 999cfca55d25 |
| files | CHANGES.txt configmix/__init__.py |
| diffstat | 2 files changed, 27 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/CHANGES.txt Fri Mar 04 17:35:27 2022 +0100 +++ b/CHANGES.txt Fri Mar 04 18:14:12 2022 +0100 @@ -21,6 +21,10 @@ configurations: sometimes they were tried to be interpolated -- and this failed. +- **[bugfix]** + The merge login should never interpolate variables. But some parts + of the merge logic did this unintentionally. + 0.20.4 (2022-01-17) ~~~~~~~~~~~~~~~~~~~
--- a/configmix/__init__.py Fri Mar 04 17:35:27 2022 +0100 +++ b/configmix/__init__.py Fri Mar 04 18:14:12 2022 +0100 @@ -427,15 +427,15 @@ if filter_comments and _is_comment(k): continue if k in user: - if user[k] == constants.DEL_VALUE: + if isinstance(user, Configuration): + ukv = user.getitem_ns(k) + else: + ukv = user[k] + if ukv == constants.DEL_VALUE: # do not copy del user[k] else: - if isinstance(user, Configuration): - user[k] = _merge( - user.getitem_ns(k), v, filter_comments) - else: - user[k] = _merge(user[k], v, filter_comments) + user[k] = _merge(ukv, v, filter_comments) else: user[k] = v _filter_deletions(user) @@ -451,15 +451,15 @@ if filter_comments and _is_comment(k): continue if k in user: - if user[k] == constants.DEL_VALUE: + if isinstance(user, Configuration): + ukv = user.getitem_ns(k) + else: + ukv = user[k] + if ukv == constants.DEL_VALUE: # do not copy del user[k] else: - if isinstance(user, Configuration): - user[k] = _merge( - user.getitem_ns(k), v, filter_comments) - else: - user[k] = _merge(user[k], v, filter_comments) + user[k] = _merge(ukv, v, filter_comments) else: user[k] = v return user @@ -488,15 +488,15 @@ if filter_comments and _is_comment(k): continue if k in user: - if user[k] == constants.DEL_VALUE: + if isinstance(user, Configuration): + ukv = user.getitem_ns(k) + else: + ukv = user[k] + if ukv == constants.DEL_VALUE: # do not copy del user[k] else: - 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) + user[k] = _safe_merge(ukv, v, filter_comments) else: user[k] = copy.deepcopy(v) _filter_deletions(user) @@ -512,15 +512,15 @@ if filter_comments and _is_comment(k): continue if k in user: + if isinstance(user, Configuration): + ukv = user.getitem_ns(k) + else: + ukv = user[k] if user[k] == constants.DEL_VALUE: # do not copy del user[k] else: - 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) + user[k] = _safe_merge(ukv, v, filter_comments) else: user[k] = copy.deepcopy(v) return user
