def parse_ellipsis(index):
    """
    Helper to split a slice into parts left and right of Ellipses.

    :param index: A tuple, or other object (None, int, slice, Funsor).
    :returns: a pair of tuples ``left, right``.
    :rtype: tuple
    """
    if not isinstance(index, tuple):
        index = (index,)
    left = []
    i = 0
    for part in index:
        i += 1
        if part is Ellipsis:
            break
        left.append(part)
    right = []
    for part in reversed(index[i:]):
        if part is Ellipsis:
            break
        right.append(part)
    right.reverse()
    return tuple(left), tuple(right)