docs: def interp(var, indexes_coords, method, **kwargs):
      """ Make an interpolation of Variable
  
      Parameters
      ----------
      var: Variable
      index_coords:
          Mapping from dimension name to a pair of original and new coordinates.
          Original coordinates should be sorted in strictly ascending order.
          Note that all the coordinates should be Variable objects.
      method: string
          One of {'linear', 'nearest', 'zero', 'slinear', 'quadratic',
          'cubic'}. For multidimensional interpolation, only
          {'linear', 'nearest'} can be used.
      **kwargs:
          keyword arguments to be passed to scipy.interpolate
  
      Returns
      -------
      Interpolated Variable
  
      See Also
      --------
      DataArray.interp
      Dataset.interp
      """
      if not indexes_coords:
          return var.copy()
  
      # simple speed up for the local interpolation
      if method in ['linear', 'nearest']:
          var, indexes_coords = _localize(var, indexes_coords)
  
      # default behavior
      kwargs['bounds_error'] = kwargs.get('bounds_error', False)
  
      # target dimensions
      dims = list(indexes_coords)
      x, new_x = zip(*[indexes_coords[d] for d in dims])
      destination = broadcast_variables(*new_x)
  
      # transpose to make the interpolated axis to the last position
      broadcast_dims = [d for d in var.dims if d not in dims]
      original_dims = broadcast_dims + dims
      new_dims = broadcast_dims + list(destination[0].dims)
      interped = interp_func(var.transpose(*original_dims).data,
                             x, destination, method, kwargs)
  
      result = Variable(new_dims, interped, attrs=var.attrs)
  
      # dimension of the output array
      out_dims = OrderedSet()
      for d in var.dims:
          if d in dims:
              out_dims.update(indexes_coords[d][1].dims)
          else:
              out_dims.add(d)
      return result.transpose(*tuple(out_dims))