docs: def chunk(self, chunks=None, name_prefix='xarray-', token=None,
                lock=False):
          """Coerce this array's data into a dask arrays with the given chunks.
  
          If this variable is a non-dask array, it will be converted to dask
          array. If it's a dask array, it will be rechunked to the given chunk
          sizes.
  
          If neither chunks is not provided for one or more dimensions, chunk
          sizes along that dimension will not be updated; non-dask arrays will be
          converted into dask arrays with a single block.
  
          Parameters
          ----------
          chunks : int, tuple or dict, optional
              Chunk sizes along each dimension, e.g., ``5``, ``(5, 5)`` or
              ``{'x': 5, 'y': 5}``.
          name_prefix : str, optional
              Prefix for the name of the new dask array.
          token : str, optional
              Token uniquely identifying this array.
          lock : optional
              Passed on to :py:func:`dask.array.from_array`, if the array is not
              already as dask array.
  
          Returns
          -------
          chunked : xarray.DataArray
          """
          if isinstance(chunks, (list, tuple)):
              chunks = dict(zip(self.dims, chunks))
  
          ds = self._to_temp_dataset().chunk(chunks, name_prefix=name_prefix,
                                             token=token, lock=lock)
          return self._from_temp_dataset(ds)