def slice_indexer(self, start=None, end=None, step=None, kind=None):
start_slice, end_slice = self.slice_locs(start, end, step=step,<EOL>kind=kind)<EOL>if not is_scalar(start_slice):<EOL><INDENT>raise AssertionError("<STR_LIT>")<EOL><DEDENT>if not is_scalar(end_slice):<EOL><INDENT>raise AssertionError("<STR_LIT>")<EOL><DEDENT>return slice(start_slice, end_slice, step)<EOL>
For an ordered or unique index, compute the slice indexer for input
labels and step.

Parameters
----------
start : label, default None
    If None, defaults to the beginning
end : label, default None
    If None, defaults to the end
step : int, default None
kind : string, default None

Returns
-------
indexer : slice

Raises
------
KeyError : If key does not exist, or key is not unique and index is
    not ordered.

Notes
-----
This function assumes that the data is sorted, so use at your own peril

Examples
---------
This is a method on all index types. For example you can do:

>>> idx = pd.Index(list('abcd'))
>>> idx.slice_indexer(start='b', end='c')
slice(1, 3)

>>> idx = pd.MultiIndex.from_arrays([list('abcd'), list('efgh')])
>>> idx.slice_indexer(start='b', end=('c', 'g'))
slice(1, 3)