def merge_indexed_lists()

in aidial_sdk/utils/merge_chunks.py [0:0]


def merge_indexed_lists(target: list, source: list, path: Path) -> list:
    for elem in source:
        assert isinstance(elem, dict), LIST_OF_DICTS_ERROR_MESSAGE

        index = elem.get("index")
        assert isinstance(index, int), INDEX_ERROR_MESSAGE

        path.append(index)

        if index < len(target):
            target[index] = merge_recursive(target[index], elem, path)
        else:
            target.extend([{"index": idx} for idx in range(len(target), index)])
            target.append(copy.deepcopy(elem))

        path.pop()

    return target