class_docstr: Class for benchmarking multiple ForecastConfig on a rolling window basis.
  
  Attributes
  ----------
  df : `pandas.DataFrame`
      Timeseries data to forecast.
      Contains columns [`time_col`, `value_col`], and optional regressor columns.
      Regressor columns should include future values for prediction.
  
  configs : `Dict` [`str`,  `ForecastConfig`]
      Dictionary of model configurations.
      A model configuration is a ``ForecastConfig``.
      See :class:`~greykite.framework.templates.autogen.forecast_config.ForecastConfig` for details on
      valid ``ForecastConfig``.
      Validity of the ``configs`` for benchmarking is checked via the ``validate`` method.
  
  tscv : `~greykite.sklearn.cross_validation.RollingTimeSeriesSplit`
      Cross-validation object that determines the rolling window evaluation.
      See :class:`~greykite.sklearn.cross_validation.RollingTimeSeriesSplit` for details.
      The ``forecast_horizon`` and ``periods_between_train_test`` parameters of ``configs`` are
      matched against that of ``tscv``. A ValueError is raised if there is a mismatch.
  
  forecaster : `~greykite.framework.templates.forecaster.Forecaster`
      Forecaster used to create the forecasts.
  
  is_run : bool, default False
      Indicator of whether the `run` method is executed.
      After executing `run`, this indicator is set to True.
      Some class methods like ``get_forecast`` requires ``is_run`` to be True
      to be executed.
  
  result : `dict`
      Stores the benchmarking results. Has the same keys as ``configs``.
  
  forecasts : `pandas.DataFrame`, default None
      Merged DataFrame of forecasts, upper and lower confidence interval for all
      input ``configs``. Also stores train end date and forecast step for each prediction.
docstr: Sweeps through ``metric_dict``, converting members of ``enum_class`` to
  their corresponding evaluation function.
  
  For example::
  
      metric_dict = {
          "correlation": EvaluationMetricEnum.Correlation,
          "RMSE": EvaluationMetricEnum.RootMeanSquaredError,
          "Q_95": EvaluationMetricEnum.Quantile95
          "custom_metric": custom_function
      }
  
      is converted to
  
      metric_dict = {
          "correlation": correlation(y_true, y_pred),
          "RMSE": root_mean_squared_error(y_true, y_pred),
          "Q_95": quantile_loss_q(y_true, y_pred, q=0.95),
          "custom_function": custom_function
      }
  
  Parameters
  ----------
  metric_dict : `dict` [`str`, `callable`]
      Evaluation metrics to compute. Same as
      `~greykite.framework.framework.benchmark.benchmark_class.BenchmarkForecastConfig.get_evaluation_metrics`.
  enum_class : Enum
      The enum class ``metric_dict`` elements might be member of.
      It must have a method ``get_metric_func``.
  
  Returns
  -------
  updated_metric_dict : `dict`
      Autocompleted metric dict.
docstr_tok: ["Sweeps","through","``","metric_dict","``",",","converting","members","of","``","enum_class","``","to","their","corresponding","evaluation","function",".","For","example",":",":","metric_dict","=","{","``","correlation","''",":","EvaluationMetricEnum.Correlation",",","``","RMSE","''",":","EvaluationMetricEnum.RootMeanSquaredError",",","``","Q_95","''",":","EvaluationMetricEnum.Quantile95","``","custom_metric","''",":","custom_function","}","is","converted","to","metric_dict","=","{","``","correlation","''",":","correlation","(","y_true",",","y_pred",")",",","``","RMSE","''",":","root_mean_squared_error","(","y_true",",","y_pred",")",",","``","Q_95","''",":","quantile_loss_q","(","y_true",",","y_pred",",","q=0.95",")",",","``","custom_function","''",":","custom_function","}","Parameters","--","--","--","--","--","metric_dict",":","`","dict","`","[","`","str","`",",","`","callable","`","]","Evaluation","metrics","to","compute",".","Same","as","`","~greykite.framework.framework.benchmark.benchmark_class.BenchmarkForecastConfig.get_evaluation_metrics","`",".","enum_class",":","Enum","The","enum","class","``","metric_dict","``","elements","might","be","member","of",".","It","must","have","a","method","``","get_metric_func","``",".","Returns","--","--","--","-","updated_metric_dict",":","`","dict","`","Autocompleted","metric","dict","."]
code: def autocomplete_metric_dict(metric_dict, enum_class):
      """Sweeps through ``metric_dict``, converting members of ``enum_class`` to
      their corresponding evaluation function.
  
      For example::
  
          metric_dict = {
              "correlation": EvaluationMetricEnum.Correlation,
              "RMSE": EvaluationMetricEnum.RootMeanSquaredError,
              "Q_95": EvaluationMetricEnum.Quantile95
              "custom_metric": custom_function
          }
  
          is converted to
  
          metric_dict = {
              "correlation": correlation(y_true, y_pred),
              "RMSE": root_mean_squared_error(y_true, y_pred),
              "Q_95": quantile_loss_q(y_true, y_pred, q=0.95),
              "custom_function": custom_function
          }
  
      Parameters
      ----------
      metric_dict : `dict` [`str`, `callable`]
          Evaluation metrics to compute. Same as
          `~greykite.framework.framework.benchmark.benchmark_class.BenchmarkForecastConfig.get_evaluation_metrics`.
      enum_class : Enum
          The enum class ``metric_dict`` elements might be member of.
          It must have a method ``get_metric_func``.
  
      Returns
      -------
      updated_metric_dict : `dict`
          Autocompleted metric dict.
      """
      updated_metric_dict = {}
      for metric_name, metric_value in metric_dict.items():
          if isinstance(metric_value, enum_class):
              updated_metric_dict[
                  metric_name
              ] = metric_value.get_metric_func()
          else:
              updated_metric_dict[
                  metric_name
              ] = add_finite_filter_to_scorer(metric_value)
              if not callable(metric_value):
                  raise ValueError(
                      f"Value of '{metric_name}' should be a callable or a member of {enum_class}."
                  )
  
      return updated_metric_dict
  
imports: from typing import Dict
  from typing import List
  import numpy
  import pandas
  import plotly.graph_objects
  from plotly.colors import DEFAULT_PLOTLY_COLORS
  from tqdm.autonotebook import tqdm
  from greykite.common.constants import ACTUAL_COL
  from greykite.common.constants import PREDICTED_COL
  from greykite.common.constants import PREDICTED_LOWER_COL
  from greykite.common.constants import PREDICTED_UPPER_COL
  from greykite.common.constants import TIME_COL
  from greykite.common.constants import VALUE_COL
  from greykite.common.evaluation import EvaluationMetricEnum
  from greykite.common.evaluation import add_finite_filter_to_scorer
  from greykite.common.logging import LoggingLevelEnum
  from greykite.common.logging import log_message
  from greykite.common.python_utils import get_pattern_cols
  from greykite.common.viz.timeseries_plotting import plot_multivariate
  from greykite.common.viz.timeseries_plotting import plot_multivariate_grouped
  from greykite.framework.benchmark.benchmark_class_helper import forecast_pipeline_rolling_evaluation
  from greykite.framework.constants import FORECAST_STEP_COL
  from greykite.framework.templates.autogen.forecast_config import ForecastConfig
  from greykite.framework.templates.forecaster import Forecaster
  from greykite.sklearn.cross_validation import RollingTimeSeriesSplit
label_desc: Use image node_id 14 for calling the BenchmarkForecastConfig obj's underlying member method code with example usage: obj.autocomplete_metric_dict(metric_dict, enum_class) and returns: updated_metric_dict