code: def trained_models():
      models = {}
      model_paths = []
      for model_class, prediction_length in itertools.product(
          TESTABLE_MODELS, TESTABLE_PREDICTION_LENGTHS
      ):
          temp_model_path = tempfile.mkdtemp()
          model = model_class(
              path=temp_model_path,
              freq="H",
              prediction_length=prediction_length,
              hyperparameters=DUMMY_HYPERPARAMETERS,
          )
  
          model.fit(train_data=DUMMY_TS_DATAFRAME)
          model.score_and_cache_oof(
              DUMMY_TS_DATAFRAME,
              store_val_score=True,
              store_predict_time=True,
          )
          models[(prediction_length, repr(model_class))] = model
          model_paths.append(temp_model_path)
  
      yield models
  
      for td in model_paths:
          shutil.rmtree(td)
  
imports: import itertools
  import shutil
  import sys
  import tempfile
  from unittest import mock
  import numpy
  import pandas
  import pytest
  from flaky import flaky
  from autogluon.common import space
  from autogluon.core.hpo.constants import RAY_BACKEND
  from autogluon.timeseries import TimeSeriesDataFrame
  from autogluon.timeseries.dataset.ts_dataframe import ITEMID, TIMESTAMP
  from autogluon.timeseries.metrics import AVAILABLE_METRICS
  from autogluon.timeseries.models import DeepARModel, ETSModel
  from autogluon.timeseries.models.abstract import AbstractTimeSeriesModel
  from autogluon.timeseries.models.multi_window import MultiWindowBacktestingModel
  from ..common import DUMMY_TS_DATAFRAME, CustomMetric, dict_equal_primitive, get_data_frame_with_item_index
  from .test_gluonts import TESTABLE_MODELS
  from .test_local import TESTABLE_MODELS
  from .test_mlforecast import TESTABLE_MODELS
  from .test_multi_window_model import get_multi_window_deepar
label_desc: Use image node_id 1 for calling a global function with example usage: trained_models() without return types