From 1a6d52c58a9b90993ac0d68822d216a7777bc6c0 Mon Sep 17 00:00:00 2001 From: Mukesh Garg Date: Tue, 28 Jul 2026 14:17:13 -0700 Subject: [PATCH] analytical-viz: force-reload our modules on Streamlit rerun MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Streamlit's hot-reload re-executes app.py on every interaction, but sub-modules imported from app.py stay cached in sys.modules across reruns. When we edit auto_explore.py or auto_hardware.py while Streamlit is alive, the app keeps using the pre-edit version until a full Ctrl+C + restart — leading to confusing "unexpected keyword argument" errors after a signature change. Force importlib.reload() on our own modules at the top of app.py so future signature changes land without a full restart. Only reloads if the module is already in sys.modules (first run just imports normally). Applied to: - tests.analytical_visualization.auto_explore - tests.analytical_visualization.auto_hardware - tests.analytical_visualization.autosuggest - tests.analytical_visualization.stage_latencies - tests.analytical_visualization.memory_layout Third-party modules (streamlit, matplotlib, pandas, numpy) NOT reloaded — unnecessary and slow. Co-Authored-By: Claude Opus 4.7 --- tests/analytical_visualization/app.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/analytical_visualization/app.py b/tests/analytical_visualization/app.py index 9ab82df..bf4e97b 100644 --- a/tests/analytical_visualization/app.py +++ b/tests/analytical_visualization/app.py @@ -6,10 +6,30 @@ Run: """ from __future__ import annotations +import importlib +import sys + import matplotlib.pyplot as plt import pandas as pd import streamlit as st +# Streamlit's hot-reload only re-runs THIS script; imported sub-modules stay +# cached in sys.modules across reruns. When we edit auto_explore.py or +# auto_hardware.py while the Streamlit process is alive, the app would +# keep using the pre-edit versions until a full Ctrl+C + restart. Force +# a reload of our own modules on every rerun so signature changes land +# without a full restart. +for _mod_name in ( + "tests.analytical_visualization.auto_explore", + "tests.analytical_visualization.auto_hardware", + "tests.analytical_visualization.autosuggest", + "tests.analytical_visualization.stage_latencies", + "tests.analytical_visualization.memory_layout", +): + _m = sys.modules.get(_mod_name) + if _m is not None: + importlib.reload(_m) + from tests.analytical_visualization.model_config import ( FullConfig, ModelConfig, TopologyConfig, MachineParams, )