code: def generate_df_with_holidays(freq, periods):
      # generate data
      df = generate_df_for_tests(
          freq, periods, remove_extra_cols=False
      )["df"]
  
      # generate holidays
      countries = ["US", "India"]
      event_df_dict = get_holidays(
          countries, year_start=2015, year_end=2025
      )
  
      for country in countries:
          event_df_dict[country][EVENT_DF_LABEL_COL] = (
              country + "_holiday"
          )
  
      df = add_daily_events(
          df=df,
          event_df_dict=event_df_dict,
          date_col=TIME_COL,
          regular_day_label="",
      )
  
      df[VALUE_COL] = (
          df[VALUE_COL]
          + 2
          * (df["events_US"] == "US_holiday")
          * df[
              get_fourier_col_name(
                  1, TimeFeaturesEnum.tod.value, function_name="sin"
              )
          ]
          + 3
          * (df["events_US"] == "US_holiday")
          * df[
              get_fourier_col_name(
                  1, TimeFeaturesEnum.tod.value, function_name="cos"
              )
          ]
          + 4
          * (df["events_India"] == "India_holiday")
          * df[
              get_fourier_col_name(
                  1, TimeFeaturesEnum.tod.value, function_name="cos"
              )
          ]
      )
  
      df = df[[TIME_COL, VALUE_COL]]
      thresh = datetime.datetime(2019, 8, 1)
      train_df = df[df[TIME_COL] <= thresh]
      test_df = df[df[TIME_COL] > thresh]
      fut_time_num = test_df.shape[0]
  
      return {
          "df": df,
          "train_df": train_df,
          "test_df": test_df,
          "fut_time_num": fut_time_num,
      }
  
imports: import datetime
  import warnings
  import numpy
  import pandas
  from greykite.common.constants import ADJUSTMENT_DELTA_COL
  from greykite.common.constants import ANOMALY_COL
  from greykite.common.constants import END_TIME_COL
  from greykite.common.constants import EVENT_DF_LABEL_COL
  from greykite.common.constants import METRIC_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 TimeFeaturesEnum
  from greykite.common.features.timeseries_features import add_daily_events
  from greykite.common.features.timeseries_features import build_time_features_df
  from greykite.common.features.timeseries_features import fourier_series_multi_fcn
  from greykite.common.features.timeseries_features import get_default_origin_for_time_vars
  from greykite.common.features.timeseries_features import get_fourier_col_name
  from greykite.common.features.timeseries_features import get_holidays
  from greykite.common.python_utils import assert_equal
label_desc: Use image node_id 2 for calling a global function with example usage: generate_df_with_holidays(freq, periods) and returns: dict