code: def test_prophet_with_regressor():
      """Tests forecast_pipeline function with Prophet,
      input regressors, and default parameters
      """
      data = generate_df_with_reg_for_tests(
          freq="H",
          periods=24 * 16,
          train_frac=0.8,
          conti_year_origin=2018,
          remove_extra_cols=True,
          mask_test_actuals=True,
      )
      # select relevant columns for testing
      regressor_cols = ["regressor1", "regressor2", "regressor3"]
      relevant_cols = [TIME_COL, VALUE_COL] + regressor_cols
      df = data["df"][relevant_cols]
  
      hyperparameter_grid = {
          "estimator__weekly_seasonality": [True],
          "estimator__daily_seasonality": [True, False],
          "estimator__n_changepoints": [
              0
          ],  # to speed up test case, remove for better fit
          "estimator__uncertainty_samples": [
              10
          ],  # to speed up test case
          "estimator__add_regressor_dict": [
              {
                  "regressor1": {
                      "prior_scale": 10,
                      "standardize": True,
                      "mode": "additive",
                  },
                  "regressor2": {
                      "prior_scale": 15,
                      "standardize": False,
                      "mode": "additive",
                  },
                  "regressor3": {},
              }
          ],
      }
      # run pipeline with 1 CV fold, 2 parameter sets. Using default horizons
      result = forecast_pipeline(
          df,
          estimator=ProphetEstimator(),
          regressor_cols=regressor_cols,
          hyperparameter_grid=hyperparameter_grid,
          cv_min_train_periods=24 * 8,
      )
  
      backtest_prophet_estimator = (
          result.grid_search.best_estimator_.steps[-1][-1]
      )
      assert [
          backtest_prophet_estimator.add_regressor_dict
      ] == hyperparameter_grid["estimator__add_regressor_dict"]
      check_forecast_pipeline_result(
          result,
          coverage=0.95,
          score_func=EvaluationMetricEnum.MeanAbsolutePercentError.name,
          greater_is_better=False,
      )
  
imports: import datetime
  import math
  import sys
  import warnings
  import numpy
  import pandas
  import pytest
  from scipy.stats import randint
  from sklearn.metrics import explained_variance_score
  from sklearn.metrics import mean_absolute_error
  from sklearn.metrics import mean_squared_error
  from sklearn.pipeline import Pipeline
  from greykite.common.constants import ACTUAL_COL
  from greykite.common.constants import ADJUSTMENT_DELTA_COL
  from greykite.common.constants import END_TIME_COL
  from greykite.common.constants import FRACTION_OUTSIDE_TOLERANCE
  from greykite.common.constants import METRIC_COL
  from greykite.common.constants import PREDICTED_COL
  from greykite.common.constants import QUANTILE_SUMMARY_COL
  from greykite.common.constants import START_TIME_COL
  from greykite.common.constants import TIME_COL
  from greykite.common.constants import VALUE_COL
  from greykite.common.constants import R2_null_model_score
  from greykite.common.evaluation import EvaluationMetricEnum
  from greykite.common.evaluation import add_finite_filter_to_scorer
  from greykite.common.evaluation import add_preaggregation_to_scorer
  from greykite.common.python_utils import assert_equal
  from greykite.common.python_utils import unique_elements_in_list
  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 CV_REPORT_METRICS_ALL
  from greykite.framework.constants import FRACTION_OUTSIDE_TOLERANCE_NAME
  from greykite.framework.input.univariate_time_series import UnivariateTimeSeries
  from greykite.framework.pipeline.pipeline import forecast_pipeline
  from greykite.framework.templates.prophet_template import ProphetTemplate
  from greykite.framework.utils.framework_testing_utils import check_forecast_pipeline_result
  from greykite.framework.utils.framework_testing_utils import mock_pipeline
  from greykite.sklearn.estimator.null_model import DummyEstimator
  from greykite.sklearn.estimator.prophet_estimator import ProphetEstimator
  from greykite.sklearn.estimator.silverkite_estimator import SilverkiteEstimator
  from greykite.sklearn.estimator.simple_silverkite_estimator import SimpleSilverkiteEstimator
  from greykite.sklearn.transform.column_selector import ColumnSelector
  from greykite.sklearn.transform.drop_degenerate_transformer import DropDegenerateTransformer
  from greykite.sklearn.transform.dtype_column_selector import DtypeColumnSelector
  from greykite.sklearn.transform.normalize_transformer import NormalizeTransformer
  from greykite.sklearn.transform.null_transformer import NullTransformer
  from greykite.sklearn.transform.pandas_feature_union import PandasFeatureUnion
  from greykite.sklearn.transform.zscore_outlier_transformer import ZscoreOutlierTransformer
label_desc: Use image node_id 15 for calling a global function with example usage: test_prophet_with_regressor() without return types