code: def test_get_prophet_holidays():
      """Tests get_prophet_holidays"""
      year_list = list(range(2014, 2030 + 2))
      holiday_lookup_countries = [
          "UnitedStates",
          "UnitedKingdom",
          "India",
          "France",
          "China",
      ]
  
      # Default holidays from get_prophet_holidays
      actual_holidays = ProphetTemplate().get_prophet_holidays(
          year_list=year_list
      )
  
      # Ensures all given countries' holidays are captured in the given `year_list`.
      # Loops through all country level holidays and confirm they are available in actual_holidays.
      # Suppresses the warnings such as "We only support Diwali and Holi holidays from 2010 to 2025"
      with warnings.catch_warnings():
          warnings.simplefilter("ignore")
          for ctry in holiday_lookup_countries:
              expected_ctry_holidays = make_holidays_df(
                  year_list=year_list, country=ctry
              )
              # sort df and reset index to ensure assert_frame_equal works well. Without it, assert throws an error.
              expected_ctry_holidays = (
                  expected_ctry_holidays.sort_values(
                      by=["ds", "holiday"]
                  ).reset_index(drop=True)
              )
  
              actual = actual_holidays[
                  ["ds", "holiday"]
              ]  # All actual holidays
              actual_ctry_holidays = actual.merge(  # Ensure country-level holidays are a subset of actual holidays
                  expected_ctry_holidays,
                  on=["ds", "holiday"],
                  how="inner",
                  validate="1:1",
              )  # Ensures 1:1 mapping
              actual_ctry_holidays = actual_ctry_holidays.sort_values(
                  by=["ds", "holiday"]
              ).reset_index(drop=True)
              assert_frame_equal(
                  expected_ctry_holidays, actual_ctry_holidays
              )
  
      # there are no duplicates at date and holiday level in the final holidays df
      actual_holidays_rows = actual_holidays.shape[0]
      unique_date_holiday = (
          actual_holidays["ds"].astype(str)
          + " "
          + actual_holidays["holiday"]
      )
      unique_date_holiday_combinations = pd.unique(
          unique_date_holiday
      ).shape[0]
      assert unique_date_holiday_combinations == actual_holidays_rows
  
      # Tests custom params
      lower_window = -1
      upper_window = 4
      countries = ["UnitedKingdom", "Australia"]
      actual_holidays = ProphetTemplate().get_prophet_holidays(
          countries=countries,
          year_list=year_list,
          lower_window=lower_window,
          upper_window=upper_window,
      )
      assert (
          "Australia Day (Observed)"
          in actual_holidays["holiday"].values
      )
      assert "Chinese New Year" not in actual_holidays["holiday"].values
  
      # all of the expected columns are available in the output
      actual_columns = list(actual_holidays.columns)
      expected_columns = [
          "ds",
          "holiday",
          "lower_window",
          "upper_window",
      ]
      assert actual_columns == expected_columns
  
      # lower_window and upper_window are accurately assigned
      assert actual_holidays["lower_window"].unique() == lower_window
      assert actual_holidays["upper_window"].unique() == upper_window
  
      # no countries
      actual_holidays = ProphetTemplate().get_prophet_holidays(
          countries=[],
          year_list=year_list,
          lower_window=lower_window,
          upper_window=upper_window,
      )
      assert actual_holidays is None
      actual_holidays = ProphetTemplate().get_prophet_holidays(
          countries=None,
          year_list=year_list,
          lower_window=lower_window,
          upper_window=upper_window,
      )
      assert actual_holidays is None
  
      # single country
      with pytest.raises(
          ValueError,
          match="`countries` should be a list, found Australia",
      ):
          ProphetTemplate().get_prophet_holidays(
              countries="Australia",
              year_list=year_list,
              lower_window=lower_window,
              upper_window=upper_window,
          )
  
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 3 for calling a global function with example usage: test_get_prophet_holidays() without return types