docstr: Given an Orbit Forecaster and number of periods, return a dataframe for future prediction
  
  Parameters
  ----------
  self : orbit.forecaster.Forecaster
  periods : int
      number of periods to generate future data frame
  
  Returns
  -------
  df : future dataframe
  
  Notes
  -----
  Alert: Right now this only works on future dataframe that doesn't require any regressors.
docstr_tok: ["Given","an","Orbit","Forecaster","and","number","of","periods",",","return","a","dataframe","for","future","prediction","Parameters","--","--","--","--","--","self",":","orbit.forecaster.Forecaster","periods",":","int","number","of","periods","to","generate","future","data","frame","Returns","--","--","--","-","df",":","future","dataframe","Notes","--","--","-","Alert",":","Right","now","this","only","works","on","future","dataframe","that","does","n't","require","any","regressors","."]
code: def make_future_df(self, periods: int = 1) -> pd.DataFrame:
      """Given an Orbit Forecaster and number of periods, return a dataframe for future prediction
  
      Parameters
      ----------
      self : orbit.forecaster.Forecaster
      periods : int
          number of periods to generate future data frame
  
      Returns
      -------
      df : future dataframe
  
      Notes
      -----
      Alert: Right now this only works on future dataframe that doesn't require any regressors.
      """
      if periods < 1:
          raise IllegalArgument(
              "Periods need to be greater than or equal to 1."
          )
      train_meta = self.get_training_meta()
      date_array = train_meta[TrainingMetaKeys.DATE_ARRAY.value]
      date_col = train_meta[TrainingMetaKeys.DATE_COL.value]
      train_end = date_array[len(date_array) - 1]
      freq = pd.infer_freq(date_array)
      future_date_array = pd.date_range(
          start=train_end, periods=periods + 1, freq=freq
      )[1:]
      future_df = pd.DataFrame(future_date_array).rename(
          columns={0: date_col}
      )
  
      return future_df
  
imports: from copy import deepcopy
  import numpy
  import pandas
  import warnings
  from enum import Enum
  from typing import Dict, Any
  from ..exceptions import ForecasterException, AbstractMethodException, IllegalArgument
  from ..utils.general import is_ordered_datetime, is_even_gap_datetime
  from ..template.model_template import ModelTemplate
  from ..estimators.stan_estimator import StanEstimatorMCMC
  from ..constants.constants import TrainingMetaKeys, PredictionMetaKeys
label_desc: Use image node_id 19 for calling the Forecaster obj's underlying member method code with example usage: obj.make_future_df(periods) and returns: future_df