MCPcopy
hub / github.com/SWE-agent/mini-swe-agent / recursive_merge

Function recursive_merge

src/minisweagent/utils/serialize.py:6–29  ·  view source on GitHub ↗

Merge multiple dictionaries recursively. Later dictionaries take precedence over earlier ones. Nested dictionaries are merged recursively. UNSET values are skipped.

(*dictionaries: dict | None)

Source from the content-addressed store, hash-verified

4
5
6def recursive_merge(*dictionaries: dict | None) -> dict:
7 """Merge multiple dictionaries recursively.
8
9 Later dictionaries take precedence over earlier ones.
10 Nested dictionaries are merged recursively.
11 UNSET values are skipped.
12 """
13 if not dictionaries:
14 return {}
15 result: dict[str, Any] = {}
16 for d in dictionaries:
17 if d is None:
18 continue
19 for key, value in d.items():
20 if value is UNSET:
21 continue
22 if key in result and isinstance(result[key], dict) and isinstance(value, dict):
23 result[key] = recursive_merge(result[key], value)
24 elif isinstance(value, dict):
25 # Recursively merge dict values to filter out nested UNSET values
26 result[key] = recursive_merge(value)
27 else:
28 result[key] = value
29 return result

Callers 15

get_template_varsMethod · 0.90
get_template_varsMethod · 0.90
get_template_varsMethod · 0.90
get_template_varsMethod · 0.90
get_template_varsMethod · 0.90
get_template_varsMethod · 0.90
get_template_varsMethod · 0.90
get_template_varsMethod · 0.90
serializeMethod · 0.90
mainFunction · 0.90
mainFunction · 0.90
mainFunction · 0.90

Calls

no outgoing calls

Tested by 15

test_empty_inputFunction · 0.72
test_single_dictionaryFunction · 0.72
test_simple_overrideFunction · 0.72
test_nested_dict_mergeFunction · 0.72
test_deeply_nested_mergeFunction · 0.72
test_mixed_value_typesFunction · 0.72
test_empty_nested_dictsFunction · 0.72

Used in the wild real call sites across dependent graphs

searching dependent graphs…