code: def __init__(
      self,
      cache_type: CacheType,
      st_func_name: str,
      cached_func: types.FunctionType,
  ):
      args = {
          "st_func_name": f"`st.{st_func_name}()`",
          "func_name": self._get_cached_func_name_md(cached_func),
          "decorator_name": get_decorator_api_name(cache_type),
      }
  
      msg = (
          """
  Your script uses %(st_func_name)s to write to your Streamlit app from within
  some cached code at %(func_name)s. This code will only be called when we detect
  a cache "miss", which can lead to unexpected results.
  
  How to fix this:
  * Move the %(st_func_name)s call outside %(func_name)s.
  * Or, if you know what you're doing, use `@st.%(decorator_name)s(experimental_allow_widgets=True)`
  to enable widget replay and suppress this warning.
              """
          % args
      ).strip("\n")
  
      super().__init__(msg)
  
imports: import types
  from typing import Any, Optional
  from streamlit import type_util
  from streamlit.errors import MarkdownFormattedException, StreamlitAPIException, StreamlitAPIWarning
  from streamlit.runtime.caching.cache_type import CacheType, get_decorator_api_name
label_desc: Use image node_id 1 to create a new CachedStFunctionWarning object from inherited base classes: StreamlitAPIWarning with example: obj = CachedStFunctionWarning(cache_type, st_func_name, cached_func)