```python
import streamlit as st
import time
def inner_func(a, b):
    st.write("inner_func(", a, ",", b, ") ran")
    return a  b  # 👈 Changed the * to  here
@st.cache(suppress_st_warning=True)
def expensive_computation(a, b):
    st.write("Cache miss: expensive_computation(", a, ",", b, ") ran")
    time.sleep(2)  # This makes the function take 2s to run
    return inner_func(a, b) + 1
a = 2
b = 21
res = expensive_computation(a, b)
st.write("Result:", res)
```
Even though inner_func() is not annotated with @st.cache, when we edit its body we cause a "Cache miss" in the outer expensive_computation().
That's because Streamlit always traverses your code and its dependencies to verify that the cached values are still valid. This means that while developing your app you can edit your code freely without worrying about the cache. Any change you make to your app, Streamlit should do the right thing!
