diff options
author | Maxim Devaev <[email protected]> | 2023-06-20 05:45:25 +0300 |
---|---|---|
committer | Maxim Devaev <[email protected]> | 2023-06-20 05:45:25 +0300 |
commit | a74044b086498cae1d6aed7cbf624e0b95e4f247 (patch) | |
tree | 376c184e24b0a01e23cd633874ea1039df87a6c0 | |
parent | db3f6220238da8138c670924a074477987790fbe (diff) |
refactoring
-rw-r--r-- | kvmd/apps/__init__.py | 2 | ||||
-rw-r--r-- | kvmd/yamlconf/merger.py | 27 | ||||
-rw-r--r-- | testenv/tests/yamlconf/test_merger.py | 3 |
3 files changed, 16 insertions, 16 deletions
diff --git a/kvmd/apps/__init__.py b/kvmd/apps/__init__.py index 31847bc3..1a8acad9 100644 --- a/kvmd/apps/__init__.py +++ b/kvmd/apps/__init__.py @@ -179,7 +179,7 @@ def _init_config(config_path: str, override_options: list[str], **load_flags: bo scheme = _get_config_scheme() try: yaml_merge(raw_config, (raw_config.pop("override", {}) or {})) - yaml_merge(raw_config, build_raw_from_options(override_options), "raw command line options") + yaml_merge(raw_config, build_raw_from_options(override_options), "raw CLI options") _patch_raw(raw_config) config = make_config(raw_config, scheme) diff --git a/kvmd/yamlconf/merger.py b/kvmd/yamlconf/merger.py index 51a168c8..a11ff3aa 100644 --- a/kvmd/yamlconf/merger.py +++ b/kvmd/yamlconf/merger.py @@ -19,30 +19,29 @@ # # # ========================================================================== # -from typing import Optional - # ===== -def _merge(dest: dict, src: dict) -> None: - for key in src: - if key in dest: - if isinstance(dest[key], dict) and isinstance(src[key], dict): - _merge(dest[key], src[key]) - continue - dest[key] = src[key] - - -def yaml_merge(dest: dict, src: dict, source_name: Optional[str]=None) -> None: +def yaml_merge(dest: dict, src: dict, src_name: str="") -> None: """ Merges the source dictionary into the destination dictionary. """ # Checking if destination is None if dest is None: # We can't merge into a None - raise ValueError(f"Could not merge {source_name} into None. The destination cannot be None") + raise ValueError(f"Could not merge {src_name or 'config'} into None. The destination cannot be None") # Checking if source is None or empty - if src is None: + if not src: # If src is None or empty, there's nothing to merge return _merge(dest, src) + + +# ====== +def _merge(dest: dict, src: dict) -> None: + for key in src: + if key in dest: + if isinstance(dest[key], dict) and isinstance(src[key], dict): + _merge(dest[key], src[key]) + continue + dest[key] = src[key] diff --git a/testenv/tests/yamlconf/test_merger.py b/testenv/tests/yamlconf/test_merger.py index 661a187e..21180605 100644 --- a/testenv/tests/yamlconf/test_merger.py +++ b/testenv/tests/yamlconf/test_merger.py @@ -21,6 +21,7 @@ import pytest + from kvmd.yamlconf import merger @@ -108,7 +109,7 @@ def test_non_dict_values_in_source() -> None: def test_empty_base() -> None: - base = {} + base: dict = {} incoming = {"key1": "value1"} merger.yaml_merge(base, incoming) assert base == {"key1": "value1"} |