class_docstr: Stores training results in a persistent cache.
  
  Used to minimize re-retraining when the data / config didn't change in between
  training runs.
class_docstr_tok: ["Stores","training","results","in","a","persistent","cache",".","Used","to","minimize","re-retraining","when","the","data","\/","config","did","n't","change","in","between","training","runs","."]
docstr: Returns a potentially cached output result.
  
  Args:
      output_fingerprint_key: The fingerprint key of the output serves as lookup
          key for a potentially cached version of this output.
      node_name: The name of the graph node which wants to use this cached result.
      model_storage: The current model storage (e.g. used when restoring
          `Resource` objects so that they can fill the model storage with data).
  
  Returns:
      `None` if no matching result was found or restored `Cacheable`.
docstr_tok: ["Returns","a","potentially","cached","output","result",".","Args",":","output_fingerprint_key",":","The","fingerprint","key","of","the","output","serves","as","lookup","key","for","a","potentially","cached","version","of","this","output",".","node_name",":","The","name","of","the","graph","node","which","wants","to","use","this","cached","result",".","model_storage",":","The","current","model","storage","(","e.g",".","used","when","restoring","`","Resource","`","objects","so","that","they","can","fill","the","model","storage","with","data",")",".","Returns",":","`","None","`","if","no","matching","result","was","found","or","restored","`","Cacheable","`","."]
code: def get_cached_result(
      self,
      output_fingerprint_key: Text,
      node_name: Text,
      model_storage: ModelStorage,
  ) -> Optional[Cacheable]:
      """Returns a potentially cached output result.
  
      Args:
          output_fingerprint_key: The fingerprint key of the output serves as lookup
              key for a potentially cached version of this output.
          node_name: The name of the graph node which wants to use this cached result.
          model_storage: The current model storage (e.g. used when restoring
              `Resource` objects so that they can fill the model storage with data).
  
      Returns:
          `None` if no matching result was found or restored `Cacheable`.
      """
      ...
  
imports: from __future__ import annotations
  import abc
  import logging
  import os
  import shutil
  from datetime import datetime
  from pathlib import Path
  from typing import Text, Any, Optional, Tuple, List
  from packaging import version
  from sqlalchemy.engine import URL
  from sqlalchemy.exc import OperationalError
  from typing_extensions import Protocol, runtime_checkable
  import rasa
  import rasa.model
  import rasa.utils.common
  import rasa.shared.utils.common
  from rasa.constants import MINIMUM_COMPATIBLE_VERSION
  import sqlalchemy
  import sqlalchemy.orm
  from sqlalchemy.ext.declarative import declarative_base, DeclarativeMeta
  from rasa.engine.storage.storage import ModelStorage
label_desc: Use image node_id 3 for calling the TrainingCache obj's underlying member method code with example usage: obj.get_cached_result(output_fingerprint_key, node_name, model_storage) without return types