docs: def open_mfdataset(paths, decode_cf=True, decode_times=True,
                     decode_coords=True, engine=None, gridfile=None,
                     t_format=None, **kwargs):
      """
      Open multiple files as a single dataset.
  
      This function is essentially the same as the :func:`xarray.open_mfdataset`
      function but (as the :func:`open_dataset`) supports additional decoding
      and the ``'gdal'`` engine.
      You can further specify the `t_format` parameter to get the time
      information from the files and use the results to concatenate the files
  
      Parameters
      ----------
      %(xarray.open_mfdataset.parameters.no_engine)s
      %(open_dataset.parameters.engine)s
      %(get_tdata.parameters.t_format)s
      %(CFDecoder.decode_coords.parameters.gridfile)s
  
      Returns
      -------
      xarray.Dataset
          The dataset that contains the variables from `filename_or_obj`"""
      if t_format is not None or engine == 'gdal':
          if isinstance(paths, six.string_types):
              paths = sorted(glob(paths))
          if not paths:
              raise IOError('no files to open')
      if t_format is not None:
          time, paths = get_tdata(t_format, paths)
          kwargs['concat_dim'] = time
      if engine == 'gdal':
          from psyplot.gdal_store import GdalStore
          paths = list(map(GdalStore, paths))
          engine = None
          kwargs['lock'] = False
  
      ds = xr.open_mfdataset(
          paths, decode_cf=decode_cf, decode_times=decode_times, engine=engine,
          decode_coords=False, **kwargs)
      if decode_cf:
          ds = CFDecoder.decode_ds(ds, gridfile=gridfile,
                                   decode_coords=decode_coords,
                                   decode_times=decode_times)
      ds.psy._concat_dim = kwargs.get('concat_dim')
      return ds