hunk.code_window:             each time the cached value is accessed. It receives the cached value as
               its only parameter and it must return a boolean. If `validate` returns
               False, the current cached value is discarded, and the decorated function
               is called to compute a new value. This is useful e.g. to check the
               health of database connections.
           experimental_allow_widgets : boolean
  
hunk.labels: keep replace keep keep keep keep keep
hunk.after_edit:             its only parameter and it must return a boolean. If ``validate`` returns
  
hunk.file_path: lib/streamlit/runtime/caching/cache_resource_api.py
hunk.type: replace
file: # Copyright (c) Streamlit Inc. (2018-2022) Snowflake Inc. (2022)
  #
  # Licensed under the Apache License, Version 2.0 (the "License");
  # you may not use this file except in compliance with the License.
  # You may obtain a copy of the License at
  #
  #     http://www.apache.org/licenses/LICENSE-2.0
  #
  # Unless required by applicable law or agreed to in writing, software
  # distributed under the License is distributed on an "AS IS" BASIS,
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  # See the License for the specific language governing permissions and
  # limitations under the License.
  
  from typing import TYPE_CHECKING, cast
  
  from streamlit.proto.Balloons_pb2 import Balloons as BalloonsProto
  from streamlit.runtime.metrics_util import gather_metrics
  
  if TYPE_CHECKING:
      from streamlit.delta_generator import DeltaGenerator
  
  
  class BalloonsMixin:
      @gather_metrics("balloons")
      def balloons(self) -> "DeltaGenerator":
          """Draw celebratory balloons.
  
          Example
          -------
          >>> import streamlit as st
          >>>
          >>> st.balloons()
  
          ...then watch your app and get ready for a celebration!
  
          """
          balloons_proto = BalloonsProto()
          balloons_proto.show = True
          return self.dg._enqueue("balloons", balloons_proto)
  
      @property
      def dg(self) -> "DeltaGenerator":
          """Get our DeltaGenerator."""
          return cast("DeltaGenerator", self)
  