code: def test_get_silverkite_seasonality():
      """Tests get_silverkite_seasonality"""
      silverkite = SimpleSilverkiteForecast()
      fs = silverkite._SimpleSilverkiteForecast__get_silverkite_seasonality(
          simple_freq=SimpleTimeFrequencyEnum.DAY.name, num_days=10
      )
      assert fs is None
  
      fs = silverkite._SimpleSilverkiteForecast__get_silverkite_seasonality(
          simple_freq=SimpleTimeFrequencyEnum.DAY.name, num_days=100
      )
      cols = ["name", "period", "order", "seas_names"]
      expected = pd.DataFrame([["tow", 7.0, 4, "weekly"]], columns=cols)
      assert fs.equals(expected)
  
      fs = silverkite._SimpleSilverkiteForecast__get_silverkite_seasonality(
          simple_freq=SimpleTimeFrequencyEnum.DAY.name, num_days=365
      )
      expected = pd.DataFrame(
          [["tow", 7.0, 4, "weekly"], ["toq", 1.0, 5, "quarterly"]],
          columns=cols,
      )
      assert fs.equals(expected)
  
      fs = silverkite._SimpleSilverkiteForecast__get_silverkite_seasonality(
          simple_freq=SimpleTimeFrequencyEnum.DAY.name,
          num_days=SilverkiteSeasonalityEnum.YEARLY_SEASONALITY.value.default_min_days,
      )
      expected = pd.DataFrame(
          [
              ["tow", 7.0, 4, "weekly"],
              ["toq", 1.0, 5, "quarterly"],
              ["ct1", 1.0, 15, "yearly"],
          ],
          columns=cols,
      )
      assert fs.equals(expected)
  
      fs = silverkite._SimpleSilverkiteForecast__get_silverkite_seasonality(
          simple_freq=SimpleTimeFrequencyEnum.DAY.name,
          num_days=SilverkiteSeasonalityEnum.YEARLY_SEASONALITY.value.default_min_days,
          seasonality={
              "monthly_seasonality": True,
              "yearly_seasonality": False,
          },
      )
      expected = pd.DataFrame(
          [
              ["tow", 7.0, 4, "weekly"],
              ["tom", 1.0, 2, "monthly"],
              ["toq", 1.0, 5, "quarterly"],
          ],
          columns=cols,
      )
      assert fs.equals(expected)
  
      fs = silverkite._SimpleSilverkiteForecast__get_silverkite_seasonality(
          simple_freq=SimpleTimeFrequencyEnum.HOUR.name,
          num_days=SilverkiteSeasonalityEnum.YEARLY_SEASONALITY.value.default_min_days,
      )
      expected = pd.DataFrame(
          [
              ["tod", 24.0, 12, "daily"],
              ["tow", 7.0, 4, "weekly"],
              ["toq", 1.0, 5, "quarterly"],
              ["ct1", 1.0, 15, "yearly"],
          ],
          columns=cols,
      )
      assert fs.equals(expected)
  
      fs = silverkite._SimpleSilverkiteForecast__get_silverkite_seasonality(
          simple_freq=SimpleTimeFrequencyEnum.HOUR.name,
          num_days=SilverkiteSeasonalityEnum.YEARLY_SEASONALITY.value.default_min_days,
          seasonality={
              "weekly_seasonality": 6,
              "quarterly_seasonality": False,
          },
      )
      expected = pd.DataFrame(
          [
              ["tod", 24.0, 12, "daily"],
              ["tow", 7.0, 6, "weekly"],
              ["ct1", 1.0, 15, "yearly"],
          ],
          columns=cols,
      )
      assert fs.equals(expected)
  
      fs = silverkite._SimpleSilverkiteForecast__get_silverkite_seasonality(
          simple_freq=SimpleTimeFrequencyEnum.WEEK.name,
          num_days=TimeEnum.ONE_YEAR_IN_DAYS.value,
      )
      expected = pd.DataFrame(
          [["tom", 1.0, 2, "monthly"], ["toq", 1.0, 5, "quarterly"]],
          columns=cols,
      )
      assert fs.equals(expected)
  
      fs = silverkite._SimpleSilverkiteForecast__get_silverkite_seasonality(
          simple_freq=SimpleTimeFrequencyEnum.MONTH.name,
          num_days=TimeEnum.ONE_YEAR_IN_DAYS.value,
      )
      assert fs is None
  
      fs = silverkite._SimpleSilverkiteForecast__get_silverkite_seasonality(
          simple_freq=SimpleTimeFrequencyEnum.QUARTER.name,
          num_days=TimeEnum.ONE_YEAR_IN_DAYS.value,
      )
      assert fs is None
  
      fs = silverkite._SimpleSilverkiteForecast__get_silverkite_seasonality(
          simple_freq=SimpleTimeFrequencyEnum.YEAR.name,
          num_days=TimeEnum.ONE_YEAR_IN_DAYS.value,
      )
      assert fs is None
  
      fs = silverkite._SimpleSilverkiteForecast__get_silverkite_seasonality(
          simple_freq=SimpleTimeFrequencyEnum.MULTIYEAR.name,
          num_days=TimeEnum.ONE_YEAR_IN_DAYS.value,
      )
      assert fs is None
  
      with pytest.raises(
          ValueError,
          match="unknown must be one of dict_keys\(\['daily_seasonality',"  # noqa: W605
          " 'weekly_seasonality', 'monthly_seasonality', 'quarterly_seasonality',"  # noqa: W605
          " 'yearly_seasonality'\]\)",
      ):  # noqa: W605
          silverkite._SimpleSilverkiteForecast__get_silverkite_seasonality(
              simple_freq=SimpleTimeFrequencyEnum.WEEK.name,
              num_days=SilverkiteSeasonalityEnum.YEARLY_SEASONALITY.value.default_min_days,
              seasonality={"unknown": "auto"},
          )
  
      with LogCapture(LOGGER_NAME) as log_capture:
          silverkite._SimpleSilverkiteForecast__get_silverkite_seasonality(
              simple_freq=SimpleTimeFrequencyEnum.MONTH.name,
              num_days=TimeEnum.ONE_YEAR_IN_DAYS.value,
              seasonality={"weekly_seasonality": 3},
          )
          log_capture.check(
              (
                  LOGGER_NAME,
                  "WARNING",
                  "'weekly_seasonality' is typically not valid for data with 'MONTH' "
                  "frequency. Each seasonality period should cover multiple observations in the "
                  "data. To remove these seasonality terms from the model, remove "
                  "weekly_seasonality=3 or set it to 'auto' or 0.",
              )
          )
  
imports: import datetime
  import math
  import sys
  import warnings
  from datetime import timedelta
  import pandas
  import pytest
  from testfixtures import LogCapture
  import greykite.common.constants
  from greykite.algo.changepoint.adalasso.changepoint_detector import ChangepointDetector
  from greykite.algo.forecast.silverkite.constants.silverkite_column import SilverkiteColumn
  from greykite.algo.forecast.silverkite.constants.silverkite_holiday import SilverkiteHoliday
  from greykite.algo.forecast.silverkite.constants.silverkite_seasonality import SilverkiteSeasonality
  from greykite.algo.forecast.silverkite.constants.silverkite_seasonality import SilverkiteSeasonalityEnum
  from greykite.algo.forecast.silverkite.forecast_simple_silverkite import SimpleSilverkiteForecast
  from greykite.algo.forecast.silverkite.forecast_simple_silverkite_helper import generate_holiday_events
  from greykite.common.constants import CHANGEPOINT_COL_PREFIX
  from greykite.common.constants import EVENT_DF_DATE_COL
  from greykite.common.constants import EVENT_DF_LABEL_COL
  from greykite.common.constants import LOGGER_NAME
  from greykite.common.constants import TIME_COL
  from greykite.common.constants import VALUE_COL
  from greykite.common.data_loader import DataLoader
  from greykite.common.enums import SimpleTimeFrequencyEnum
  from greykite.common.enums import TimeEnum
  from greykite.common.features.timeseries_features import get_available_holidays_across_countries
  from greykite.common.features.timeseries_features import get_holidays
  from greykite.common.python_utils import assert_equal
  from greykite.common.python_utils import update_dictionary
  from greykite.common.testing_utils import generate_df_for_tests
  from greykite.common.testing_utils import generate_df_with_reg_for_tests
label_desc: Use image node_id 14 for calling a global function with example usage: test_get_silverkite_seasonality() without return types