Streamlit Pages Skill (AGILAB)
Use this skill when editing:
src/agilab/AGILAB.pysrc/agilab/pages/*.pysrc/agilab/apps-pages/*/src/*/*.py
Session State Rules (Avoid Common Crashes)
Never assign
st.session_state["k"] = …after a widget withkey="k"was created.- Prefer
st.session_state.setdefault("k", default)before the widget. - Or use widget return values and compute derived state separately.
- Prefer
If you need to “reset” a widget value:
- Use a different key (versioned key pattern), or
- Gate the reset behind a rerun and only mutate state before widget creation.
Recommended Pattern
- Initialize defaults with
setdefaultat the top of the page. - Render widgets.
- Read values from widgets, compute derived state, store under different keys.
Rerun API
- Do not use
st.experimental_rerun(); usest.rerun().
Key Hygiene
- Every widget must have a stable, unique key.
- Prefer namespaced keys:
f\"{page_id}:df_files\", not"df_files".