def __merge_dicts()

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