docs: def set_dims(self, dims, shape=None):
          """Return a new variable with given set of dimensions.
          This method might be used to attach new dimension(s) to variable.
  
          When possible, this operation does not copy this variable's data.
  
          Parameters
          ----------
          dims : str or sequence of str or dict
              Dimensions to include on the new variable. If a dict, values are
              used to provide the sizes of new dimensions; otherwise, new
              dimensions are inserted with length 1.
  
          Returns
          -------
          Variable
          """
          if isinstance(dims, str):
              dims = [dims]
  
          if shape is None and utils.is_dict_like(dims):
              shape = dims.values()
  
          missing_dims = set(self.dims) - set(dims)
          if missing_dims:
              raise ValueError('new dimensions %r must be a superset of '
                               'existing dimensions %r' % (dims, self.dims))
  
          self_dims = set(self.dims)
          expanded_dims = tuple(
              d for d in dims if d not in self_dims) + self.dims
  
          if self.dims == expanded_dims:
              # don't use broadcast_to unless necessary so the result remains
              # writeable if possible
              expanded_data = self.data
          elif shape is not None:
              dims_map = dict(zip(dims, shape))
              tmp_shape = tuple(dims_map[d] for d in expanded_dims)
              expanded_data = duck_array_ops.broadcast_to(self.data, tmp_shape)
          else:
              expanded_data = self.data[
                  (None,) * (len(expanded_dims) - self.ndim)]
  
          expanded_var = Variable(expanded_dims, expanded_data, self._attrs,
                                  self._encoding, fastpath=True)
          return expanded_var.transpose(*dims)