in liminal/core/util/dict_util.py [0:0]
def __merge_dicts(dict1, dict2):
# recursive merge
merged_dicts = OrderedDict()
dict_1_keys = dict1.keys()
dict_2_keys = dict2.keys()
for k in OrderedSet(dict_1_keys).union(dict_2_keys):
if k in dict1 and k in dict2:
if isinstance(dict1[k], dict) and isinstance(dict2[k], dict):
merged_dicts[k] = dict(__merge_dicts(dict1[k], dict2[k]))
else:
merged_dicts[k] = dict1[k]
elif k in dict_1_keys:
merged_dicts[k] = dict1[k]
else:
merged_dicts[k] = dict2[k]
return merged_dicts