docs: def get_squeeze_dims(xarray_obj,
                       dim: Union[Hashable, Iterable[Hashable], None] = None,
                       axis: Union[int, Iterable[int], None] = None
                       ) -> List[Hashable]:
      """Get a list of dimensions to squeeze out.
      """
      if dim is not None and axis is not None:
          raise ValueError('cannot use both parameters `axis` and `dim`')
      if dim is None and axis is None:
          return [d for d, s in xarray_obj.sizes.items() if s == 1]
  
      if isinstance(dim, Iterable) and not isinstance(dim, str):
          dim = list(dim)
      elif dim is not None:
          dim = [dim]
      else:
          assert axis is not None
          if isinstance(axis, int):
              axis = [axis]
          axis = list(axis)
          if any(not isinstance(a, int) for a in axis):
              raise TypeError(
                  'parameter `axis` must be int or iterable of int.')
          alldims = list(xarray_obj.sizes.keys())
          dim = [alldims[a] for a in axis]
  
      if any(xarray_obj.sizes[k] > 1 for k in dim):
          raise ValueError('cannot select a dimension to squeeze out '
                           'which has length greater than one')
      return dim