class_docstr: Loader for an entire directory, maintaining multiple active file
  loaders.
  
  This class takes a directory, a factory for loaders, and optionally a
  path filter and watches all the paths inside that directory for new data.
  Each file loader created by the factory must read a path and produce an
  iterator of (timestamp, value) pairs.
  
  Unlike DirectoryWatcher, this class does not assume that only one file
  receives new data at a time; there can be arbitrarily many active files.
  However, any file whose maximum load timestamp fails an "active" predicate
  will be marked as inactive and no longer checked for new data.
docstr: Generator for values from a single path's loader.
  
  Args:
    path: the path to load from
  
  Yields:
    All values from this path's loader that have not been yielded yet.
code: def _LoadPath(self, path):
      """Generator for values from a single path's loader.
  
      Args:
        path: the path to load from
  
      Yields:
        All values from this path's loader that have not been yielded yet.
      """
      max_timestamp = self._max_timestamps.get(path, None)
      if max_timestamp is _INACTIVE or self._MarkIfInactive(
          path, max_timestamp
      ):
          logger.debug("Skipping inactive path %s", path)
          return
      loader = self._loaders.get(path, None)
      if loader is None:
          try:
              loader = self._loader_factory(path)
          except tf.errors.NotFoundError:
              # Happens if a file was removed after we listed the directory.
              logger.debug("Skipping nonexistent path %s", path)
              return
          self._loaders[path] = loader
      logger.info("Loading data from path %s", path)
      for timestamp, value in loader.Load():
          if max_timestamp is None or timestamp > max_timestamp:
              max_timestamp = timestamp
          yield value
      if not self._MarkIfInactive(path, max_timestamp):
          self._max_timestamps[path] = max_timestamp
  
file_path: tensorboard/tensorboard/backend/event_processing/directory_loader.py
imports: from tensorboard.backend.event_processing import directory_watcher
  from tensorboard.backend.event_processing import io_wrapper
  from tensorboard.compat import tf
  from tensorboard.util import tb_logging
label_desc: Use image node_id 3 for calling the DirectoryLoader obj's underlying member method code with example usage: obj._LoadPath(path) without return types