docstr: Checks the validity of an add_seasonality() call and stores valid calls.
  As the actual model is only created at fitting time, and seasonalities are added pre-fit,
  the add_seasonality calls must be stored and checked on Darts' side.
  
  Raises
  ----------
  ValueError
      if `seasonality_call` has missing or empty mandatory keys/arguments
  
      if `seasonality_call` with `name` already exists.
  
      if `seasonality_call` has invalid keys/arguments
  
      if `seasonality_call` has invalid dtypes
docstr_tok: ["Checks","the","validity","of","an","add_seasonality","(",")","call","and","stores","valid","calls",".","As","the","actual","model","is","only","created","at","fitting","time",",","and","seasonalities","are","added","pre-fit",",","the","add_seasonality","calls","must","be","stored","and","checked","on","Darts","'","side",".","Raises","--","--","--","--","--","ValueError","if","`","seasonality_call","`","has","missing","or","empty","mandatory","keys\/arguments","if","`","seasonality_call","`","with","`","name","`","already","exists",".","if","`","seasonality_call","`","has","invalid","keys\/arguments","if","`","seasonality_call","`","has","invalid","dtypes"]
code: def _store_add_seasonality_call(
      self, seasonality_call: Optional[dict] = None
  ) -> None:
      """Checks the validity of an add_seasonality() call and stores valid calls.
      As the actual model is only created at fitting time, and seasonalities are added pre-fit,
      the add_seasonality calls must be stored and checked on Darts' side.
  
      Raises
      ----------
      ValueError
          if `seasonality_call` has missing or empty mandatory keys/arguments
  
          if `seasonality_call` with `name` already exists.
  
          if `seasonality_call` has invalid keys/arguments
  
          if `seasonality_call` has invalid dtypes
      """
  
      if seasonality_call is None:
          return
  
      seasonality_properties = {
          "name": {"default": None, "dtype": str},
          "seasonal_periods": {"default": None, "dtype": (int, float)},
          "fourier_order": {"default": None, "dtype": int},
          "prior_scale": {"default": None, "dtype": float},
          "mode": {"default": None, "dtype": str},
          "condition_name": {"default": None, "dtype": str},
      }
      seasonality_default = {
          kw: seasonality_properties[kw]["default"]
          for kw in seasonality_properties
      }
  
      mandatory_keywords = ["name", "seasonal_periods", "fourier_order"]
  
      add_seasonality_call = dict(
          seasonality_default, **seasonality_call
      )
  
      missing_kws = [
          kw
          for kw in mandatory_keywords
          if add_seasonality_call[kw] is None
      ]
      raise_if(
          len(missing_kws) > 0,
          f'Seasonality `{add_seasonality_call["name"]}` has missing mandatory keywords or empty arguments: '
          f"{missing_kws}.",
          logger,
      )
  
      seasonality_name = add_seasonality_call["name"]
      raise_if(
          seasonality_name in self._auto_seasonalities
          or seasonality_name in self._add_seasonalities,
          f"Adding seasonality with `name={seasonality_name}` failed. A seasonality with this name already "
          f"exists.",
      )
  
      invalid_kws = [
          kw
          for kw in add_seasonality_call
          if kw not in seasonality_default
      ]
      raise_if(
          len(invalid_kws) > 0,
          f'Seasonality `{add_seasonality_call["name"]}` has invalid keywords: {invalid_kws}. Only the '
          f"following arguments are supported: {list(seasonality_default)}",
          logger,
      )
  
      invalid_types = [
          kw
          for kw, value in add_seasonality_call.items()
          if not isinstance(value, seasonality_properties[kw]["dtype"])
          and value is not None
      ]
      raise_if(
          len(invalid_types) > 0,
          f'Seasonality `{add_seasonality_call["name"]}` has invalid value dtypes: {invalid_types} must be '
          f'of type {[seasonality_properties[kw]["dtype"] for kw in invalid_types]}.',
          logger,
      )
  
      self._add_seasonalities[seasonality_name] = add_seasonality_call
  
imports: import logging
  import re
  from typing import Callable, List, Optional, Sequence, Union
  import numpy
  import pandas
  import prophet
  from darts.logging import execute_and_suppress_output, get_logger, raise_if, raise_log
  from darts.models.forecasting.forecasting_model import FutureCovariatesLocalForecastingModel
  from darts.timeseries import TimeSeries
label_desc: Use image node_id 12 for calling the Prophet obj's underlying member method code with example usage: obj._store_add_seasonality_call(seasonality_call) without return types