class_docstr: Cache storage manager protocol, that should be implemented by the concrete
  cache storage managers.
  
  It is responsible for:
      - Creating cache storage instances for the specific
      decorated functions,
      - Validating the context for the cache storages.
      - Optionally clearing all cache storages in optimal way.
  
  It should be created during Runtime initialization.
docstr: Checks if the context is valid for the storage manager.
  This method should not return anything, but log message or raise an exception
  if the context is invalid.
  
  In case of raising an exception, we not handle it and let the exception to be
  propagated.
  
  check_context is called only once at the moment of creating `@st.cache_data`
  decorator for specific function, so it is not called for every cache hit.
  
  Parameters
  ----------
  context: CacheStorageContext
      The context to check for the storage manager, dummy function_key in context
      will be used, since it is not computed at the point of calling this method.
  
  Raises
  ------
  InvalidCacheStorageContext
      Raised if the cache storage manager is not able to work with provided
      CacheStorageContext. When possible we should log message instead, since
      this exception will be propagated to the user.
  
  Notes
  -----
  Threading: Should be safe to call from any thread.
docstr_tok: ["Checks","if","the","context","is","valid","for","the","storage","manager",".","This","method","should","not","return","anything",",","but","log","message","or","raise","an","exception","if","the","context","is","invalid",".","In","case","of","raising","an","exception",",","we","not","handle","it","and","let","the","exception","to","be","propagated",".","check_context","is","called","only","once","at","the","moment","of","creating","`","@","st.cache_data","`","decorator","for","specific","function",",","so","it","is","not","called","for","every","cache","hit",".","Parameters","--","--","--","--","--","context",":","CacheStorageContext","The","context","to","check","for","the","storage","manager",",","dummy","function_key","in","context","will","be","used",",","since","it","is","not","computed","at","the","point","of","calling","this","method",".","Raises","--","--","--","InvalidCacheStorageContext","Raised","if","the","cache","storage","manager","is","not","able","to","work","with","provided","CacheStorageContext",".","When","possible","we","should","log","message","instead",",","since","this","exception","will","be","propagated","to","the","user",".","Notes","--","--","-","Threading",":","Should","be","safe","to","call","from","any","thread","."]
code: def check_context(self, context: CacheStorageContext) -> None:
      """Checks if the context is valid for the storage manager.
      This method should not return anything, but log message or raise an exception
      if the context is invalid.
  
      In case of raising an exception, we not handle it and let the exception to be
      propagated.
  
      check_context is called only once at the moment of creating `@st.cache_data`
      decorator for specific function, so it is not called for every cache hit.
  
      Parameters
      ----------
      context: CacheStorageContext
          The context to check for the storage manager, dummy function_key in context
          will be used, since it is not computed at the point of calling this method.
  
      Raises
      ------
      InvalidCacheStorageContext
          Raised if the cache storage manager is not able to work with provided
          CacheStorageContext. When possible we should log message instead, since
          this exception will be propagated to the user.
  
      Notes
      -----
      Threading: Should be safe to call from any thread.
      """
  
      pass
  
imports: from __future__ import annotations
  from abc import abstractmethod
  from dataclasses import dataclass
  from typing_extensions import Literal, Protocol
label_desc: Use image node_id 3 for calling the CacheStorageManager obj's underlying member method code with example usage: obj.check_context(context) without return types