docs: def load(path, group=None, sel=None, unpack=False):
      """
      Loads an HDF5 saved with `save`.
  
      This function requires the `PyTables <http://www.pytables.org/>`_ module to
      be installed.
  
      Parameters
      ----------
      path : string
          Filename from which to load the data.
      group : string or list
          Load a specific group in the HDF5 hierarchy. If `group` is a list of
          strings, then a tuple will be returned with all the groups that were
          specified.
      sel : slice or tuple of slices
          If you specify `group` and the target is a numpy array, then you can
          use this to slice it. This is useful for opening subsets of large HDF5
          files. To compose the selection, you can use `deepdish.aslice`.
      unpack : bool
          If True, a single-entry dictionaries will be unpacked and the value
          will be returned directly. That is, if you save ``dict(a=100)``, only
          ``100`` will be loaded.
  
      Returns
      -------
      data : anything
          Hopefully an identical reconstruction of the data that was saved.
  
      See also
      --------
      save
  
      """
      with tables.open_file(path, mode='r') as h5file:
          pathtable = {}  # dict to keep track of objects already loaded
          if group is not None:
              if isinstance(group, str):
                  data = _load_specific_level(h5file, h5file, group, sel=sel,
                                              pathtable=pathtable)
              else:  # Assume group is a list or tuple
                  data = []
                  for g in group:
                      data_i = _load_specific_level(h5file, h5file, g, sel=sel,
                                                    pathtable=pathtable)
                      data.append(data_i)
                  data = tuple(data)
          else:
              grp = h5file.root
              auto_unpack = (DEEPDISH_IO_UNPACK in grp._v_attrs and
                             grp._v_attrs[DEEPDISH_IO_UNPACK])
              do_unpack = unpack or auto_unpack
              if do_unpack and len(grp._v_children) == 1:
                  name = next(iter(grp._v_children))
                  data = _load_specific_level(h5file, grp, name, sel=sel,
                                              pathtable=pathtable)
                  do_unpack = False
              elif sel is not None:
                  raise ValueError("Must specify group with `sel` unless it "
                                   "automatically unpacks")
              else:
                  data = _load_level(h5file, grp, pathtable)
  
              if DEEPDISH_IO_VERSION_STR in grp._v_attrs:
                  v = grp._v_attrs[DEEPDISH_IO_VERSION_STR]
              else:
                  v = 0
  
              if v > IO_VERSION:
                  warnings.warn('This file was saved with a newer version of '
                                'deepdish. Please upgrade to make sure it loads '
                                'correctly.')
  
              # Attributes can't be unpacked with the method above, so fall back
              # to this
              if do_unpack and isinstance(data, dict) and len(data) == 1:
                  data = next(iter(data.values()))
  
      return data