nodes: 0, module; 1, function_definition; 2, function_name:slice_locs; 3, parameters; 4, block; 5, identifier:self; 6, default_parameter; 7, default_parameter; 8, default_parameter; 9, default_parameter; 10, expression_statement; 11, comment:# This function adds nothing to its parent implementation (the magic; 12, comment:# happens in get_slice_bound method), but it adds meaningful doc.; 13, return_statement; 14, identifier:start; 15, None; 16, identifier:end; 17, None; 18, identifier:step; 19, None; 20, identifier:kind; 21, None; 22, comment:"""
          For an ordered MultiIndex, compute the slice locations for input
          labels.
  
          The input labels can be tuples representing partial levels, e.g. for a
          MultiIndex with 3 levels, you can pass a single value (corresponding to
          the first level), or a 1-, 2-, or 3-tuple.
  
          Parameters
          ----------
          start : label or tuple, default None
              If None, defaults to the beginning
          end : label or tuple
              If None, defaults to the end
          step : int or None
              Slice step
          kind : string, optional, defaults None
  
          Returns
          -------
          (start, end) : (int, int)
  
          Notes
          -----
          This method only works if the MultiIndex is properly lexsorted. So,
          if only the first 2 levels of a 3-level MultiIndex are lexsorted,
          you can only pass two levels to ``.slice_locs``.
  
          Examples
          --------
          >>> mi = pd.MultiIndex.from_arrays([list('abbd'), list('deff')],
          ...                                names=['A', 'B'])
  
          Get the slice locations from the beginning of 'b' in the first level
          until the end of the multiindex:
  
          >>> mi.slice_locs(start='b')
          (1, 4)
  
          Like above, but stop at the end of 'b' in the first level and 'f' in
          the second level:
  
          >>> mi.slice_locs(start='b', end=('b', 'f'))
          (1, 3)
  
          See Also
          --------
          MultiIndex.get_loc : Get location for a label or a tuple of labels.
          MultiIndex.get_locs : Get location for a label/slice/list/mask or a
                                sequence of such.
          """; 23, call; 24, attribute; 25, argument_list; 26, call; 27, identifier:slice_locs; 28, identifier:start; 29, identifier:end; 30, identifier:step; 31, keyword_argument; 32, identifier:super; 33, argument_list; 34, identifier:kind; 35, identifier:kind
code: def slice_locs(self, start=None, end=None, step=None, kind=None):
          """
          For an ordered MultiIndex, compute the slice locations for input
          labels.
  
          The input labels can be tuples representing partial levels, e.g. for a
          MultiIndex with 3 levels, you can pass a single value (corresponding to
          the first level), or a 1-, 2-, or 3-tuple.
  
          Parameters
          ----------
          start : label or tuple, default None
              If None, defaults to the beginning
          end : label or tuple
              If None, defaults to the end
          step : int or None
              Slice step
          kind : string, optional, defaults None
  
          Returns
          -------
          (start, end) : (int, int)
  
          Notes
          -----
          This method only works if the MultiIndex is properly lexsorted. So,
          if only the first 2 levels of a 3-level MultiIndex are lexsorted,
          you can only pass two levels to ``.slice_locs``.
  
          Examples
          --------
          >>> mi = pd.MultiIndex.from_arrays([list('abbd'), list('deff')],
          ...                                names=['A', 'B'])
  
          Get the slice locations from the beginning of 'b' in the first level
          until the end of the multiindex:
  
          >>> mi.slice_locs(start='b')
          (1, 4)
  
          Like above, but stop at the end of 'b' in the first level and 'f' in
          the second level:
  
          >>> mi.slice_locs(start='b', end=('b', 'f'))
          (1, 3)
  
          See Also
          --------
          MultiIndex.get_loc : Get location for a label or a tuple of labels.
          MultiIndex.get_locs : Get location for a label/slice/list/mask or a
                                sequence of such.
          """
          # This function adds nothing to its parent implementation (the magic
          # happens in get_slice_bound method), but it adds meaningful doc.
          return super().slice_locs(start, end, step, kind=kind)