def as_indexable(array):
    """
    This function always returns a ExplicitlyIndexed subclass,
    so that the vectorized indexing is always possible with the returned
    object.
    """
    if isinstance(array, ExplicitlyIndexed):
        return array
    if isinstance(array, np.ndarray):
        return NumpyIndexingAdapter(array)
    if isinstance(array, pd.Index):
        return PandasIndexAdapter(array)
    if isinstance(array, dask_array_type):
        return DaskIndexingAdapter(array)
    raise TypeError('Invalid array type: {}'.format(type(array)))
def as_indexable ( array ) : if isinstance ( array , ExplicitlyIndexed ) : return array if isinstance ( array , np . ndarray ) : return NumpyIndexingAdapter ( array ) if isinstance ( array , pd . Index ) : return PandasIndexAdapter ( array ) if isinstance ( array , dask_array_type ) : return DaskIndexingAdapter ( array ) raise TypeError ( 'Invalid array type: {}' . format ( type ( array ) ) )
This function always returns a ExplicitlyIndexed subclass,
    so that the vectorized indexing is always possible with the returned
    object.