code: def assert_forecast_config_json_multiple_model_components_parameter(
      config: Optional[ForecastConfig] = None,
  ):
      """Asserts the forecast config values. This function expects a particular config and is not generic"""
      config = ForecastConfigDefaults().apply_forecast_config_defaults(
          config
      )
      assert config.model_template == [
          ModelTemplateEnum.SILVERKITE.name,
          ModelTemplateEnum.SILVERKITE_DAILY_90.name,
          ModelTemplateEnum.SILVERKITE_WEEKLY.name,
      ]
      assert (
          config.evaluation_metric_param.relative_error_tolerance
          == 0.02
      )
      # First model_components_param
      model_components_param_1 = config.model_components_param[0]
      assert model_components_param_1.autoregression is None
      assert model_components_param_1.changepoints is None
      assert model_components_param_1.custom is None
      assert model_components_param_1.growth == {"growth_param": 0}
      assert model_components_param_1.events == {"events_param": 1}
      assert (
          model_components_param_1.hyperparameter_override is None
          or model_components_param_1.hyperparameter_override is None
      )
      assert model_components_param_1.regressors == {
          "names": ["regressor1", "regressor2"]
      }
      assert model_components_param_1.lagged_regressors is None
      assert model_components_param_1.seasonality == {"seas_param": 2}
      assert model_components_param_1.uncertainty == {
          "uncertainty_param": 3
      }
      # Second model_components_param
      model_components_param_2 = config.model_components_param[1]
      assert model_components_param_2.autoregression == {
          "autoreg_dict": {"autoreg_param": 0}
      }
      assert model_components_param_2.changepoints is None
      assert model_components_param_2.custom == {"custom_param": 1}
      assert model_components_param_2.growth == {"growth_param": 2}
      assert model_components_param_2.events == {"events_param": 3}
      assert model_components_param_2.hyperparameter_override == [
          {"h1": 4},
          {"h2": 5},
          None,
      ] or model_components_param_2.hyperparameter_override == [
          {"h1": 4},
          {"h2": 5},
          {},
      ]
      assert model_components_param_2.regressors == {
          "names": ["regressor1", "regressor2"]
      }
      assert model_components_param_2.lagged_regressors == {
          "lagged_regressor_dict": {"lag_reg_param": 0}
      }
      assert model_components_param_2.seasonality == {"seas_param": 6}
      assert model_components_param_2.uncertainty == {
          "uncertainty_param": 7
      }
      assert config.to_dict()
  
imports: import json
  from copy import deepcopy
  from typing import Optional
  import pandas
  import pytest
  from pytest import fail
  from greykite.common.constants import TIME_COL
  from greykite.common.constants import VALUE_COL
  from greykite.common.evaluation import EvaluationMetricEnum
  from greykite.framework.constants import COMPUTATION_N_JOBS
  from greykite.framework.constants import COMPUTATION_VERBOSE
  from greykite.framework.constants import CV_REPORT_METRICS_ALL
  from greykite.framework.constants import EVALUATION_PERIOD_CV_MAX_SPLITS
  from greykite.framework.templates.autogen.forecast_config import ComputationParam
  from greykite.framework.templates.autogen.forecast_config import EvaluationMetricParam
  from greykite.framework.templates.autogen.forecast_config import EvaluationPeriodParam
  from greykite.framework.templates.autogen.forecast_config import ForecastConfig
  from greykite.framework.templates.autogen.forecast_config import MetadataParam
  from greykite.framework.templates.autogen.forecast_config import ModelComponentsParam
  from greykite.framework.templates.autogen.forecast_config import assert_equal_forecast_config
  from greykite.framework.templates.autogen.forecast_config import forecast_config_from_dict
  from greykite.framework.templates.autogen.forecast_config import from_list_dict
  from greykite.framework.templates.autogen.forecast_config import from_list_dict_or_none
  from greykite.framework.templates.autogen.forecast_config_utils import FORECAST_CONFIG_JSON_COMPLETE
  from greykite.framework.templates.autogen.forecast_config_utils import FORECAST_CONFIG_JSON_DEFAULT
  from greykite.framework.templates.forecast_config_defaults import ForecastConfigDefaults
  from greykite.framework.templates.model_templates import ModelTemplateEnum
label_desc: Use image node_id 12 for calling a global function with example usage: assert_forecast_config_json_multiple_model_components_parameter(config) without return types