class_docstr: A derived class of `~greykite.algo.forecast.silverkite.SilverkiteForecast`.
  Provides an alternative interface with simplified configuration parameters.
  Produces the same trained model output and uses the same predict functions.
class_docstr_tok: ["A","derived","class","of","`","~greykite.algo.forecast.silverkite.SilverkiteForecast","`",".","Provides","an","alternative","interface","with","simplified","configuration","parameters",".","Produces","the","same","trained","model","output","and","uses","the","same","predict","functions","."]
docstr: Generates `fs_components_df` parameter for `forecast_silverkite`
  for modeling seasonality.
  
  Parameters
  ----------
  simple_freq : `str`
      SimpleTimeFrequencyEnum member that best matches the input data frequency
      according to `get_simple_time_frequency_from_period`
  num_days : `int`
      Number of days of observations in the input data
  seasonality : `dict` or None
      Seasonality configuration dictionary, with the following optional keys.
      (keys are SilverkiteSeasonalityEnum members in lower case):
  
          - ``"yearly_seasonality"`` : `str` or `bool` or `int` or None, default = 'auto'
              Determines the yearly seasonality
              'auto', True, False, or a number for the Fourier order
          ``"quarterly_seasonality"`` : `str` or `bool` or `int` or None, default = 'auto'
              Determines the quarterly seasonality
              'auto', True, False, or a number for the Fourier order
          ``"monthly_seasonality"`` : `str` or `bool` or `int` or None, default = 'auto'
              Determines the monthly seasonality
              'auto', True, False, or a number for the Fourier order
          ``"weekly_seasonality"`` : `str` or `bool` or `int` or None, default = 'auto'
              Determines the weekly seasonality
              'auto', True, False, or a number for the Fourier order
          ``"daily_seasonality"`` : `str` or `bool` or `int` or None, default = 'auto'
              Determines the daily seasonality
              'auto', True, False, or a number for the Fourier order
  
      None is equivalent to 'auto'. If 'auto', seasonality components are based on input data
      (``num_days``, ``simple_freq``), according to
      `~greykite.algo.forecast.silverkite.constants.silverkite_seasonality.SilverkiteSeasonalityEnum`.
      and `~greykite.algo.forecast.silverkite.constants.silverkite_time_frequency.SilverkiteTimeFrequencyEnum`.
  
  Returns
  -------
  fs_components_df : `pandas.DataFrame`
      Contains fourier series specification. Columns:
  
          - "name"
          - "period"
          - "order"
          - "seas_names"
code: def __get_silverkite_seasonality(
      self,
      simple_freq=SimpleTimeFrequencyEnum.DAY.name,
      num_days=1000,
      seasonality=None,
  ):
      """Generates `fs_components_df` parameter for `forecast_silverkite`
      for modeling seasonality.
  
      Parameters
      ----------
      simple_freq : `str`
          SimpleTimeFrequencyEnum member that best matches the input data frequency
          according to `get_simple_time_frequency_from_period`
      num_days : `int`
          Number of days of observations in the input data
      seasonality : `dict` or None
          Seasonality configuration dictionary, with the following optional keys.
          (keys are SilverkiteSeasonalityEnum members in lower case):
  
              - ``"yearly_seasonality"`` : `str` or `bool` or `int` or None, default = 'auto'
                  Determines the yearly seasonality
                  'auto', True, False, or a number for the Fourier order
              ``"quarterly_seasonality"`` : `str` or `bool` or `int` or None, default = 'auto'
                  Determines the quarterly seasonality
                  'auto', True, False, or a number for the Fourier order
              ``"monthly_seasonality"`` : `str` or `bool` or `int` or None, default = 'auto'
                  Determines the monthly seasonality
                  'auto', True, False, or a number for the Fourier order
              ``"weekly_seasonality"`` : `str` or `bool` or `int` or None, default = 'auto'
                  Determines the weekly seasonality
                  'auto', True, False, or a number for the Fourier order
              ``"daily_seasonality"`` : `str` or `bool` or `int` or None, default = 'auto'
                  Determines the daily seasonality
                  'auto', True, False, or a number for the Fourier order
  
          None is equivalent to 'auto'. If 'auto', seasonality components are based on input data
          (``num_days``, ``simple_freq``), according to
          `~greykite.algo.forecast.silverkite.constants.silverkite_seasonality.SilverkiteSeasonalityEnum`.
          and `~greykite.algo.forecast.silverkite.constants.silverkite_time_frequency.SilverkiteTimeFrequencyEnum`.
  
      Returns
      -------
      fs_components_df : `pandas.DataFrame`
          Contains fourier series specification. Columns:
  
              - "name"
              - "period"
              - "order"
              - "seas_names"
      """
      if seasonality is None:
          seasonality = {}
  
      # recognized seasonalities for silverkite
      silverkite_seasonalities = (
          self._silverkite_seasonality_enum.__members__.copy()
      )
      silverkite_seasonalities = {
          k.lower(): v for k, v in silverkite_seasonalities.items()
      }
  
      # valid seasonalities based on input data frequency
      freq_valid_seas_names = SimpleTimeFrequencyEnum[
          simple_freq
      ].value.valid_seas
      freq_auto_seas_names = self._silverkite_time_frequency_enum[
          simple_freq
      ].value.auto_fourier_seas
  
      for key in seasonality.keys():
          if key not in silverkite_seasonalities.keys():
              raise ValueError(
                  f"{key} must be one of {silverkite_seasonalities.keys()}"
              )
  
      seasonalities = []  # seasonalities to add to the model
      for seas in silverkite_seasonalities.values():
          # keys are SilverkiteSeasonalityEnum members in lower case
          seas_input = seasonality.get(seas.name.lower(), "auto")
          # under auto configuration, seasonality is added if it's recommended for both
          # the input frequency and data size
          is_enabled_auto = (
              num_days >= seas.value.default_min_days
              and seas.name in freq_auto_seas_names
          )
          order = self.__get_requested_seasonality_order(
              requested_seasonality=seas_input,
              default_order=seas.value.order,
              is_enabled_auto=is_enabled_auto,
          )
          if order > 0:
              if seas.name not in freq_valid_seas_names:
                  log_message(
                      f"'{seas.name.lower()}' is typically not valid for "
                      f"data with '{simple_freq}' frequency. Each seasonality period "
                      f"should cover multiple observations in the data. To remove "
                      f"these seasonality terms from the model, remove {seas.name.lower()}={seas_input} "
                      f"or set it to 'auto' or 0.",
                      LoggingLevelEnum.WARNING,
                  )
              seasonalities.append(
                  {
                      "name": seas.value.name,
                      "period": seas.value.period,
                      "order": order,  # user is allowed to override default order
                      "seas_names": seas.value.seas_names,
                  }
              )
  
      # constructs dataframe where each seasonality is a row
      if len(seasonalities) > 0:
          fs = pd.DataFrame(
              seasonalities,
              columns=["name", "period", "order", "seas_names"],
          )
      else:
          fs = None
      return fs
  
imports: from datetime import datetime
  from typing import Dict
  from typing import List
  from typing import Optional
  from typing import Type
  from typing import Union
  import pandas
  from greykite.algo.changepoint.adalasso.changepoint_detector import get_changepoints_dict
  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.algo.forecast.silverkite.constants.silverkite_column import SilverkiteColumn
  from greykite.algo.forecast.silverkite.constants.silverkite_constant import SilverkiteConstant
  from greykite.algo.forecast.silverkite.constants.silverkite_constant import default_silverkite_constant
  from greykite.algo.forecast.silverkite.constants.silverkite_holiday import SilverkiteHoliday
  from greykite.algo.forecast.silverkite.constants.silverkite_time_frequency import SilverkiteTimeFrequencyEnum
  from greykite.algo.forecast.silverkite.forecast_silverkite import SilverkiteForecast
  from greykite.algo.forecast.silverkite.forecast_simple_silverkite_helper import cols_interact
  from greykite.algo.forecast.silverkite.forecast_simple_silverkite_helper import generate_holiday_events
  from greykite.algo.forecast.silverkite.forecast_simple_silverkite_helper import get_event_pred_cols
  from greykite.algo.forecast.silverkite.forecast_simple_silverkite_helper import patsy_categorical_term
  from greykite.common import constants
  from greykite.common.constants import GrowthColEnum
  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_changepoint_features_and_values_from_config
  from greykite.common.logging import LoggingLevelEnum
  from greykite.common.logging import log_message
  from greykite.common.python_utils import unique_elements_in_list
  from greykite.common.python_utils import update_dictionary
  from greykite.common.time_properties_forecast import get_forecast_time_properties
label_desc: Use image node_id 5 for calling the SimpleSilverkiteForecast obj's underlying member method code with example usage: obj.__get_silverkite_seasonality(simple_freq, num_days, seasonality) and returns: fs