def _join_candidate_lists()

in google/generativeai/types/generation_types.py [0:0]


def _join_candidate_lists(candidate_lists: Iterable[list[protos.Candidate]]):
    """Joins stream chunks where each chunk is a list of candidate chunks."""
    # Assuming that is a candidate ends, it is no longer returned in the list of
    # candidates and that's why candidates have an index
    candidates = collections.defaultdict(list)
    for candidate_list in candidate_lists:
        for candidate in candidate_list:
            candidates[candidate.index].append(candidate)

    new_candidates = []
    for index, candidate_parts in sorted(candidates.items()):
        new_candidates.append(_join_candidates(candidate_parts))

    return new_candidates