code: def test_prophet_hyperparameter_grid_changepoints_uncertainty_custom(
      default_holidays,
  ):
      """Tests get_prophet_hyperparameter_grid for selected
      changepoints, regressor, and uncertainty"""
      changepoints = {
          "changepoint_prior_scale": [0.05, 1.0, 5.0, 10.0, 15.0],
          "changepoints": [
              None,
              ["2018-10-11", "2018-11-11", "2019-01-17"],
          ],
          "n_changepoints": [25, 50, 100],
          "changepoint_range": [0.8, 0.9],
      }
      uncertainty = {
          "mcmc_samples": [0, 1000],
          "uncertainty_samples": [1000, 2000],
      }
      regressors = {
          "add_regressor_dict": [
              {
                  "reg_col1": {
                      "prior_scale": 10.0,
                      "standardize": False,
                      "mode": "additive",
                  },
                  "reg_col2": {
                      "prior_scale": 20.0,
                      "standardize": True,
                      "mode": "multiplicative",
                  },
              },
              {
                  "reg_col1": {
                      "prior_scale": 20.0,
                      "standardize": True,
                      "mode": "additive",
                  },
                  "reg_col2": {
                      "prior_scale": 40.0,
                      "standardize": False,
                      "mode": "multiplicative",
                  },
              },
          ]
      }
      model_components = ModelComponentsParam(
          changepoints=changepoints,
          regressors=regressors,
          uncertainty=uncertainty,
      )
      template = ProphetTemplate()
      template.config = template.apply_forecast_config_defaults()
      template.config.model_components_param = model_components
      hyperparameter_grid = template.get_hyperparameter_grid()
  
      # Expected Values
      expected_holidays = default_holidays
      expected_grid = {
          "estimator__growth": ["linear"],
          "estimator__seasonality_mode": ["additive"],
          "estimator__seasonality_prior_scale": [10.0],
          "estimator__yearly_seasonality": ["auto"],
          "estimator__weekly_seasonality": ["auto"],
          "estimator__daily_seasonality": ["auto"],
          "estimator__add_seasonality_dict": [None],
          "estimator__holidays": [expected_holidays],
          "estimator__holidays_prior_scale": [10.0],
          "estimator__changepoint_prior_scale": [
              0.05,
              1.0,
              5.0,
              10.0,
              15.0,
          ],
          "estimator__changepoints": [
              None,
              ["2018-10-11", "2018-11-11", "2019-01-17"],
          ],
          "estimator__n_changepoints": [25, 50, 100],
          "estimator__changepoint_range": [0.8, 0.9],
          "estimator__mcmc_samples": [0, 1000],
          "estimator__uncertainty_samples": [1000, 2000],
          "estimator__add_regressor_dict": [
              {
                  "reg_col1": {
                      "prior_scale": 10.0,
                      "standardize": False,
                      "mode": "additive",
                  },
                  "reg_col2": {
                      "prior_scale": 20.0,
                      "standardize": True,
                      "mode": "multiplicative",
                  },
              },
              {
                  "reg_col1": {
                      "prior_scale": 20.0,
                      "standardize": True,
                      "mode": "additive",
                  },
                  "reg_col2": {
                      "prior_scale": 40.0,
                      "standardize": False,
                      "mode": "multiplicative",
                  },
              },
          ],
      }
      assert_equal(actual=hyperparameter_grid, expected=expected_grid)
  
imports: import datetime
  import sys
  import warnings
  import numpy
  import pandas
  import pytest
  from pandas.testing import assert_frame_equal
  import greykite.common.constants
  from greykite.common.evaluation import EvaluationMetricEnum
  from greykite.common.python_utils import assert_equal
  from greykite.common.testing_utils import generate_df_for_tests
  from greykite.common.testing_utils import generate_df_with_reg_for_tests
  from greykite.framework.constants import COMPUTATION_N_JOBS
  from greykite.framework.constants import CV_REPORT_METRICS_ALL
  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.forecaster import Forecaster
  from greykite.framework.templates.model_templates import ModelTemplateEnum
  from greykite.framework.templates.prophet_template import ProphetTemplate
  from greykite.framework.utils.framework_testing_utils import assert_basic_pipeline_equal
  from greykite.sklearn.estimator.prophet_estimator import ProphetEstimator
label_desc: Use image node_id 11 for calling a global function with example usage: test_prophet_hyperparameter_grid_changepoints_uncertainty_custom(default_holidays) without return types