def _set_preprocess(sets, **kwargs):
    """upcasts a sequence of indexable objects to Index objets according to the given kwargs

    Parameters
    ----------
    sets : iterable of indexable objects
    axis : int, optional
        axis to view as item sequence
    assume_unique : bool, optional
        if we should assume the items sequence does not contain duplicates

    Returns
    -------
    list of Index objects

    Notes
    -----
    common preprocessing for all set operations
    """
    axis            = kwargs.get('axis', semantics.axis_default)
    assume_unique   = kwargs.get('assume_unique', False)

    if assume_unique:
        sets = [as_index(s, axis=axis).unique for s in sets]
    else:
        sets = [as_index(s, axis=axis).unique for s in sets]
    return sets