# HG changeset patch # User Franz Glasner # Date 1646414052 -3600 # Node ID ef485419d7230e9c811aaca7ade607ef133ce3b7 # Parent 4499e9b4855d97a2c1395178d55035f5afb2f875 FIX: Now the merge logic does not interpolate variables in any case. Previously it did sometimes. diff -r 4499e9b4855d -r ef485419d723 CHANGES.txt --- 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) ~~~~~~~~~~~~~~~~~~~ diff -r 4499e9b4855d -r ef485419d723 configmix/__init__.py --- 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