code: def _run_job(cfg: DictConfig) -> None:
      """Runs a regular maze job.
  
      :param cfg: Hydra configuration for the rollout.
      """
      set_matplotlib_backend()
  
      # If no env or agent base seed is given generate the seeds randomly and add them to the resolved hydra config
      if cfg.seeding.env_base_seed is None:
          cfg.seeding.env_base_seed = (
              MazeSeeding.generate_seed_from_random_state(
                  np.random.RandomState(None)
              )
          )
      if cfg.seeding.agent_base_seed is None:
          cfg.seeding.agent_base_seed = (
              MazeSeeding.generate_seed_from_random_state(
                  np.random.RandomState(None)
              )
          )
  
      # print and log config
      config_str = yaml.dump(
          OmegaConf.to_container(cfg, resolve=True), sort_keys=False
      )
      with open("hydra_config.yaml", "w") as fp:
          fp.write("\n" + config_str)
      BColors.print_colored(config_str, color=BColors.HEADER)
      print("Output directory: {}\n".format(os.path.abspath(".")))
  
      # run job
      runner = Factory(base_type=Runner).instantiate(cfg.runner)
      runner.setup(cfg)
      runner.run()
  
file_path: maze/maze/maze_cli.py
imports: import glob
  import os
  from typing import Optional
  import hydra
  import matplotlib
  import numpy
  import yaml
  from hydra.core.hydra_config import HydraConfig
  from omegaconf import DictConfig, OmegaConf
  from maze.core.log_stats.hparam_writer_tensorboard import manipulate_hparams_logging_for_exp
  from maze.core.utils.factory import Factory
  from maze.core.utils.seeding import MazeSeeding
  from maze.runner import Runner
  from maze.utils.bcolors import BColors
  from maze.utils.log_stats_utils import clear_global_state
  from maze.utils.tensorboard_reader import tensorboard_to_pandas
label_desc: Use image node_id 2 for calling a global function with example usage: _run_job(cfg) without return types