class_docstr: Loader for a root log directory, maintaining multiple DirectoryLoaders.
  
  This class takes a root log directory and a factory for DirectoryLoaders, and
  maintains one DirectoryLoader per "logdir subdirectory" of the root logdir.
  
  Note that this class is not thread-safe.
docstr: Constructs a new LogdirLoader.
  
  Args:
    logdir: The root log directory to load from.
    directory_loader_factory: A factory for creating DirectoryLoaders. The
      factory should take a path and return a DirectoryLoader.
  
  Raises:
    ValueError: If logdir or directory_loader_factory are None.
code: def __init__(self, logdir, directory_loader_factory):
      """Constructs a new LogdirLoader.
  
      Args:
        logdir: The root log directory to load from.
        directory_loader_factory: A factory for creating DirectoryLoaders. The
          factory should take a path and return a DirectoryLoader.
  
      Raises:
        ValueError: If logdir or directory_loader_factory are None.
      """
      if logdir is None:
          raise ValueError("A logdir is required")
      if directory_loader_factory is None:
          raise ValueError("A directory loader factory is required")
      self._logdir = logdir
      self._directory_loader_factory = directory_loader_factory
      # Maps run names to corresponding DirectoryLoader instances.
      self._directory_loaders = {}
  
file_path: tensorboard/tensorboard/uploader/logdir_loader.py
imports: import collections
  import os
  from tensorboard.backend.event_processing import directory_watcher
  from tensorboard.backend.event_processing import io_wrapper
  from tensorboard.util import tb_logging
label_desc: Use image node_id 1 to create a new LogdirLoader object  with example: obj = LogdirLoader(logdir, directory_loader_factory)