docstr: Each function should have its own cache, even if it has an
  identical body and arguments to another cached function.
docstr_tok: ["Each","function","should","have","its","own","cache",",","even","if","it","has","an","identical","body","and","arguments","to","another","cached","function","."]
code: def test_unique_function_caches(self):
      """Each function should have its own cache, even if it has an
      identical body and arguments to another cached function.
      """
  
      @st.cache
      def foo():
          return []
  
      @st.cache
      def bar():
          return []
  
      id_foo = id(foo())
      id_bar = id(bar())
      self.assertNotEqual(id_foo, id_bar)
  
imports: import threading
  import types
  from unittest.mock import Mock, patch
  from parameterized import parameterized
  import streamlit
  from streamlit.elements import exception
  from streamlit.proto.Exception_pb2 import Exception
  from streamlit.runtime.legacy_caching import caching, hashing
  from tests import testutil
  from tests.delta_generator_test_case import DeltaGeneratorTestCase
label_desc: Use image node_id 13 for calling the CacheTest obj's underlying member method code with example usage: obj.test_unique_function_caches() and returns: list, list