from collections.abc import Mapping from typing import Any def merge_settings(base: Mapping[str, Any], overlay: Mapping[str, Any]) -> dict[str, Any]: result = dict(base) for key, value in overlay.items(): if isinstance(value, Mapping) and isinstance(result.get(key), Mapping): result[key].update(value) else: result[key] = value return result