Mercurial > hgrepos > Python > libs > ConfigMix
changeset 734:50dea7892b62
Prepare calling conventions for a new merge-stragegy for lists: extens instead of replace
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Fri, 27 Oct 2023 09:32:27 +0200 |
| parents | 06b6c14bcd61 |
| children | b01d76710ddb |
| files | configmix/__init__.py |
| diffstat | 1 files changed, 10 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/configmix/__init__.py Thu Oct 26 17:14:12 2023 +0200 +++ b/configmix/__init__.py Fri Oct 27 09:32:27 2023 +0200 @@ -389,7 +389,7 @@ return result -def merge(user, default, filter_comments=True): +def merge(user, default, filter_comments=True, extend_lists=False): """Logically merge the configuration in `user` into `default`. :param ~configmix.config.Configuration user: @@ -399,6 +399,8 @@ the base configuration where `user` is logically merged into :param bool filter_comments: flag whether to filter comment keys that start with any of the items in :data:`.COMMENTS` + :param bool extens_lists: When ``True`` then lists will be extended instead of + overwritten by the merge process :returns: `user` with the necessary amendments from `default`. If `user` is ``None`` then `default` is returned. @@ -435,14 +437,14 @@ # do not copy del user[k] else: - user[k] = _merge(ukv, v, filter_comments) + user[k] = _merge(ukv, v, filter_comments, extend_lists) else: user[k] = v _filter_deletions(user) return user -def _merge(user, default, filter_comments): +def _merge(user, default, filter_comments, extend_lists): """Recursion helper for :func:`.merge` """ @@ -459,13 +461,13 @@ # do not copy del user[k] else: - user[k] = _merge(ukv, v, filter_comments) + user[k] = _merge(ukv, v, filter_comments, extend_lists) else: user[k] = v return user -def safe_merge(user, default, filter_comments=True): +def safe_merge(user, default, filter_comments=True, extend_lists=False): """A more safe version of :func:`.merge` that makes deep copies of the returned container objects. @@ -496,14 +498,14 @@ # do not copy del user[k] else: - user[k] = _safe_merge(ukv, v, filter_comments) + user[k] = _safe_merge(ukv, v, filter_comments, extend_lists) else: user[k] = copy.deepcopy(v) _filter_deletions(user) return user -def _safe_merge(user, default, filter_comments): +def _safe_merge(user, default, filter_comments, extend_lists): """Recursion helper for :func:`safe_merge` """ @@ -520,7 +522,7 @@ # do not copy del user[k] else: - user[k] = _safe_merge(ukv, v, filter_comments) + user[k] = _safe_merge(ukv, v, filter_comments, extend_lists) else: user[k] = copy.deepcopy(v) return user
