class_docstr: a job that loads yaml config.
class_docstr_tok: ["a","job","that","loads","yaml","config","."]
code: def _overwrite_task(self, job_config):
      configs_to_save = {}
      self.base_project_dir = os.path.join(
          "projects", job_config.base_dir
      )
      self.base_run_dir = os.path.join("runs", job_config.base_dir)
  
      for config_sets in job_config.task_group:
          overwrite_config = job_config.task_group[config_sets]
          if (
              overwrite_config.task_list is None
              or len(overwrite_config.task_list) == 0
          ):
              print(
                  "[warning]",
                  job_config.task_group,
                  "has no task_list specified.",
              )
          # we don't want this added to a final config.
          task_list = overwrite_config.pop("task_list", None)
          for config_file in task_list:
              config_file_path = os.path.join(
                  self.base_project_dir, config_file
              )
              config = recursive_config(config_file_path)
              # overwrite it.
              if overwrite_config:
                  config = OmegaConf.merge(config, overwrite_config)
              overwrite_dir(
                  config, self.run_dir, basedir=self.base_run_dir
              )
              save_file_path = os.path.join(
                  self.project_dir, config_file
              )
              configs_to_save[save_file_path] = config
      return configs_to_save
  
file_path: fairseq/examples/MMPT/locallaunch.py
imports: import argparse
  import os
  from omegaconf import OmegaConf
  from mmpt.utils import recursive_config, overwrite_dir
  from mmpt_cli.localjob import LocalJob
label_desc: Use image node_id 5 for calling the Pipeline obj's underlying member method code with example usage: obj._overwrite_task(job_config) and returns: configs_to_save