code: def __init__(self, config_path):
      if not config_path:
          raise ValueError("Config path is invalid.")
      self.config_path = config_path
  
      with open(config_path) as fp:
          config = yaml.safe_load(fp)
      self.config = copy.deepcopy(config)
  
      self.pipeline_ex_config = PipelineExperimentConfig(
          config.get("experiment", dict()), self
      )
      self.pipeline_config = config.get("tuner_pipeline", list())
      self.optim_config = OptimizationConfig(
          config.get("optimization_criteria", dict()), self
      )
  
      self.time_config = config.get("time_period", dict())
      self.data_config = config.get("data", dict())
      self.backtest_config = config.get("backtest", dict())
      self.qlib_client_config = config.get("qlib_client", dict())
  
file_path: qlib/qlib/contrib/tuner/config.py
imports: import yaml
  import copy
  import os
label_desc: Use image node_id 1 to create a new TunerConfigManager object  with example: obj = TunerConfigManager(config_path)