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,10 +19,25 @@ # # # ========================================================================== # -from typing import Optional - # ===== +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 {src_name or 'config'} into None. The destination cannot be None") + + # Checking if source is None or empty + 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: @@ -30,19 +45,3 @@ def _merge(dest: dict, src: dict) -> None: _merge(dest[key], src[key]) continue dest[key] = src[key] - - -def yaml_merge(dest: dict, src: dict, source_name: Optional[str]=None) -> 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") - - # Checking if source is None or empty - if src is None: - # If src is None or empty, there's nothing to merge - return - - _merge(dest, src) 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"}