class_docstr: Base template with common code used by multiple templates.
  
  Provides a particular modular approach to implement
  `~greykite.framework.templates.template_interface.TemplateInterface.apply_template_for_pipeline_params`.
  
  Includes the config defaults from
  `~greykite.framework.templates.forecast_config_defaults.ForecastConfigDefaults`.
  
  Subclasses must provide these properties / functions used by ``apply_template_for_pipeline_params``:
  
      - estimator (__init__ default value)
      - get_regressor_cols
      - get_lagged_regressor_info
      - get_hyperparameter_grid
  
  Subclasses may optionally want to override:
  
      - get_pipeline
      - get_forecast_time_properties
      - apply_metadata_defaults
      - apply_evaluation_metric_defaults
      - apply_evaluation_period_defaults
      - apply_computation_defaults
      - apply_model_components_defaults
      - apply_forecast_config_defaults
class_docstr_tok: ["Base","template","with","common","code","used","by","multiple","templates",".","Provides","a","particular","modular","approach","to","implement","`","~greykite.framework.templates.template_interface.TemplateInterface.apply_template_for_pipeline_params","`",".","Includes","the","config","defaults","from","`","~greykite.framework.templates.forecast_config_defaults.ForecastConfigDefaults","`",".","Subclasses","must","provide","these","properties","\/","functions","used","by","``","apply_template_for_pipeline_params","``",":","-","estimator","(","__init__","default","value",")","-","get_regressor_cols","-","get_lagged_regressor_info","-","get_hyperparameter_grid","Subclasses","may","optionally","want","to","override",":","-","get_pipeline","-","get_forecast_time_properties","-","apply_metadata_defaults","-","apply_evaluation_metric_defaults","-","apply_evaluation_period_defaults","-","apply_computation_defaults","-","apply_model_components_defaults","-","apply_forecast_config_defaults"]
docstr: Returns forecast time parameters.
  
  Uses ``self.df``, ``self.config``, ``self.regressor_cols``.
  
  Available parameters:
  
      - self.df
      - self.config
      - self.score_func
      - self.score_func_greater_is_better
      - self.regressor_cols
      - self.lagged_regressor_cols
      - self.estimator
      - self.pipeline
  
  Returns
  -------
  time_properties : `dict` [`str`, `any`] or None, default None
      Time properties dictionary (likely produced by
      `~greykite.common.time_properties_forecast.get_forecast_time_properties`)
      with keys:
  
      ``"period"`` : `int`
          Period of each observation (i.e. minimum time between observations, in seconds).
      ``"simple_freq"`` : `SimpleTimeFrequencyEnum`
          ``SimpleTimeFrequencyEnum`` member corresponding to data frequency.
      ``"num_training_points"`` : `int`
          Number of observations for training.
      ``"num_training_days"`` : `int`
          Number of days for training.
      ``"start_year"`` : `int`
          Start year of the training period.
      ``"end_year"`` : `int`
          End year of the forecast period.
      ``"origin_for_time_vars"`` : `float`
          Continuous time representation of the first date in ``df``.
docstr_tok: ["Returns","forecast","time","parameters",".","Uses","``","self.df","``",",","``","self.config","``",",","``","self.regressor_cols","``",".","Available","parameters",":","-","self.df","-","self.config","-","self.score_func","-","self.score_func_greater_is_better","-","self.regressor_cols","-","self.lagged_regressor_cols","-","self.estimator","-","self.pipeline","Returns","--","--","--","-","time_properties",":","`","dict","`","[","`","str","`",",","`","any","`","]","or","None",",","default","None","Time","properties","dictionary","(","likely","produced","by","`","~greykite.common.time_properties_forecast.get_forecast_time_properties","`",")","with","keys",":","``","``","period","''","``",":","`","int","`","Period","of","each","observation","(","i.e",".","minimum","time","between","observations",",","in","seconds",")",".","``","``","simple_freq","''","``",":","`","SimpleTimeFrequencyEnum","`","``","SimpleTimeFrequencyEnum","``","member","corresponding","to","data","frequency",".","``","``","num_training_points","''","``",":","`","int","`","Number","of","observations","for","training",".","``","``","num_training_days","''","``",":","`","int","`","Number","of","days","for","training",".","``","``","start_year","''","``",":","`","int","`","Start","year","of","the","training","period",".","``","``","end_year","''","``",":","`","int","`","End","year","of","the","forecast","period",".","``","``","origin_for_time_vars","''","``",":","`","float","`","Continuous","time","representation","of","the","first","date","in","``","df","``","."]
code: def get_forecast_time_properties(self):
      """Returns forecast time parameters.
  
      Uses ``self.df``, ``self.config``, ``self.regressor_cols``.
  
      Available parameters:
  
          - self.df
          - self.config
          - self.score_func
          - self.score_func_greater_is_better
          - self.regressor_cols
          - self.lagged_regressor_cols
          - self.estimator
          - self.pipeline
  
      Returns
      -------
      time_properties : `dict` [`str`, `any`] or None, default None
          Time properties dictionary (likely produced by
          `~greykite.common.time_properties_forecast.get_forecast_time_properties`)
          with keys:
  
          ``"period"`` : `int`
              Period of each observation (i.e. minimum time between observations, in seconds).
          ``"simple_freq"`` : `SimpleTimeFrequencyEnum`
              ``SimpleTimeFrequencyEnum`` member corresponding to data frequency.
          ``"num_training_points"`` : `int`
              Number of observations for training.
          ``"num_training_days"`` : `int`
              Number of days for training.
          ``"start_year"`` : `int`
              Start year of the training period.
          ``"end_year"`` : `int`
              End year of the forecast period.
          ``"origin_for_time_vars"`` : `float`
              Continuous time representation of the first date in ``df``.
      """
      return get_forecast_time_properties(
          df=self.df,
          time_col=self.config.metadata_param.time_col,
          value_col=self.config.metadata_param.value_col,
          freq=self.config.metadata_param.freq,
          date_format=self.config.metadata_param.date_format,
          train_end_date=self.config.metadata_param.train_end_date,
          regressor_cols=self.regressor_cols,
          lagged_regressor_cols=self.lagged_regressor_cols,
          forecast_horizon=self.config.forecast_horizon,
      )
  
imports: import functools
  from abc import ABC
  from abc import abstractmethod
  from typing import Dict
  from typing import Optional
  import pandas
  from greykite.common.evaluation import EvaluationMetricEnum
  from greykite.common.time_properties_forecast import get_forecast_time_properties
  from greykite.framework.pipeline.utils import get_basic_pipeline
  from greykite.framework.templates.autogen.forecast_config import ForecastConfig
  from greykite.framework.templates.forecast_config_defaults import ForecastConfigDefaults
  from greykite.framework.templates.template_interface import TemplateInterface
  from greykite.sklearn.estimator.base_forecast_estimator import BaseForecastEstimator
label_desc: Use image node_id 6 for calling the BaseTemplate obj's underlying member method code with example usage: obj.get_forecast_time_properties() and returns: get_forecast_time_properties