code: def test_get_auto_holiday_with_holidays_to_model_separately(df_daily):
      """Tests automatic holidays with its functionality of `holidays_to_model_separately`."""
  
      # Initializes inputs that will be used in both cases.
      start_year = 2007
      end_year = 2016
      pre_num = 2
      post_num = 2
      holiday_lookup_countries = ["US"]
      pre_post_num_dict = {"New Year's Day": (1, 3)}
      # Uses minimum thresholds to make sure holidays in holiday groupers are all preserved.
      # e.g. holidays will not be dropped in holiday grouper due to lack of similar days/different
      # impact across years etc. We can then check if the same holiday dates are preserved
      # even when we model some of them separately.
      auto_holiday_params = dict(
          min_abs_avg_score=0,
          min_same_sign_ratio=0,
          get_suffix_func=None,
          min_n_days=1,
      )
  
      # Constructs `daily_event_df_dict` through `get_auto_holidays` with country list.
      daily_event_df_dict_no_separate = get_auto_holidays(
          df=df_daily,
          time_col=TIME_COL,
          value_col=VALUE_COL,
          start_year=start_year,
          end_year=end_year,
          pre_num=pre_num,
          post_num=post_num,
          pre_post_num_dict=pre_post_num_dict,
          holiday_lookup_countries=holiday_lookup_countries,
          holidays_to_model_separately=None,
          daily_event_df_dict=None,
          auto_holiday_params=auto_holiday_params,
      )
  
      # Constructs `daily_event_df_dict` through `get_auto_holidays`, here we model "New Year's Day"
      # Separately. Notice that we also specify its neighboring days though `pre_post_num_dict`.
      # We also expect its neighboring days to be modeled separately in the final `daily_event_df_dict_with_separate`.
      daily_event_df_dict_with_separate = get_auto_holidays(
          df=df_daily,
          time_col=TIME_COL,
          value_col=VALUE_COL,
          start_year=start_year,
          end_year=end_year,
          pre_num=pre_num,
          post_num=post_num,
          pre_post_num_dict=pre_post_num_dict,
          holiday_lookup_countries=holiday_lookup_countries,
          holidays_to_model_separately=["New Year's Day"],
          daily_event_df_dict=None,
          auto_holiday_params=auto_holiday_params,
      )
  
      # Asserts the holiday dates are the same.
      unique_dates_no_separate = pd.concat(
          [df for df in daily_event_df_dict_no_separate.values()]
      )["date"]
      unique_dates_no_separate = set(unique_dates_no_separate)
      unique_dates_with_separate = pd.concat(
          [df for df in daily_event_df_dict_with_separate.values()]
      )["date"]
      unique_dates_with_separate = set(unique_dates_with_separate)
      assert unique_dates_no_separate == unique_dates_with_separate
  
      # Asserts all keys for `daily_event_df_dict_no_separate` for holiday groups are also included in
      # `daily_event_df_dict_with_separate`.
      assert (
          daily_event_df_dict_no_separate.keys()
          - daily_event_df_dict_with_separate.keys()
          == set()
      )
  
      # Checks that "New Year's Day" and its neighboring days have its own groups in `daily_event_df_dict_with_separate`.
      # The number of neighboring days depend on `pre_post_num_dict`.
      assert "New Years Day" in daily_event_df_dict_with_separate.keys()
      assert (
          "New Years Day_minus_1"
          in daily_event_df_dict_with_separate.keys()
      )
      assert (
          "New Years Day_minus_2"
          not in daily_event_df_dict_with_separate.keys()
      )
      assert (
          "New Years Day_plus_3"
          in daily_event_df_dict_with_separate.keys()
      )
  
imports: import numpy
  import pandas
  import pytest
  from greykite.algo.common.holiday_grouper import HolidayGrouper
  from greykite.algo.forecast.silverkite.auto_config import get_auto_growth
  from greykite.algo.forecast.silverkite.auto_config import get_auto_holidays
  from greykite.algo.forecast.silverkite.auto_config import get_auto_seasonality
  from greykite.common.constants import EVENT_DF_DATE_COL
  from greykite.common.constants import EVENT_DF_LABEL_COL
  from greykite.common.constants import TIME_COL
  from greykite.common.constants import VALUE_COL
  from greykite.common.data_loader import DataLoader
  from greykite.common.features.timeseries_features import get_holidays
  from greykite.common.python_utils import assert_equal
label_desc: Use image node_id 7 for calling a global function with example usage: test_get_auto_holiday_with_holidays_to_model_separately(df_daily) without return types