From 9b58d812accefa7d6d9836ffcef047418c1a7495 Mon Sep 17 00:00:00 2001 From: Net Zhang Date: Fri, 12 Jun 2026 09:06:58 -0400 Subject: [PATCH] Fix cosmetic `MemoryCache` warning at CLI startup Streamlit 1.58 emits "No runtime found, using MemoryCacheStorageManager" when `@st.cache_data` is decorated (at import) without a runtime. The CLI lancher imports the app module to reach `main()` before the server runtime exists, so importing any cache-decorated component warns. The @st.cache_data is a Streamlit decorator, it eagerly initializes a cache-storage manager, which is looking for a runtime. Breakdown sequence: ``` entry point reach main -> importing the app modules -> top-level imports pull in those cache-decorated component modules -> decoration ran in the bare launcher process (no runtime) -> warning ``` The fix move component imports into `app()` in both applications so the launcher process never touches `@st.cache_data` decorator. The real server runs `app()` under a live Streamlit runtime. --- apps/embed_explore/app.py | 10 +++++----- apps/precalculated/app.py | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/apps/embed_explore/app.py b/apps/embed_explore/app.py index 941af45..18738a3 100644 --- a/apps/embed_explore/app.py +++ b/apps/embed_explore/app.py @@ -7,11 +7,6 @@ import streamlit as st -from apps.embed_explore.components.sidebar import render_clustering_sidebar -from apps.embed_explore.components.image_preview import render_image_preview -from shared.components.summary import render_clustering_summary -from shared.components.visualization import render_scatter_plot - def main(): """CLI entry point — launches the Streamlit server.""" @@ -25,6 +20,11 @@ def main(): def app(): """Streamlit application layout.""" + from apps.embed_explore.components.sidebar import render_clustering_sidebar + from apps.embed_explore.components.image_preview import render_image_preview + from shared.components.summary import render_clustering_summary + from shared.components.visualization import render_scatter_plot + st.set_page_config( layout="wide", page_title="Embed & Explore", diff --git a/apps/precalculated/app.py b/apps/precalculated/app.py index 9456109..9d19650 100644 --- a/apps/precalculated/app.py +++ b/apps/precalculated/app.py @@ -7,16 +7,6 @@ import streamlit as st -from apps.precalculated.components.sidebar import ( - render_file_section, - render_dynamic_filters, - render_projection_section, - render_kmeans_section, -) -from apps.precalculated.components.data_preview import render_data_preview -from shared.components.visualization import render_scatter_plot -from shared.components.summary import render_clustering_summary - def main(): """CLI entry point — launches the Streamlit server.""" @@ -30,6 +20,16 @@ def main(): def app(): """Streamlit application layout.""" + from apps.precalculated.components.sidebar import ( + render_file_section, + render_dynamic_filters, + render_projection_section, + render_kmeans_section, + ) + from apps.precalculated.components.data_preview import render_data_preview + from shared.components.visualization import render_scatter_plot + from shared.components.summary import render_clustering_summary + st.set_page_config( layout="wide", page_title="Precalculated Embeddings Explorer",