CRRA_Optimization_Tool_V2 / utils /state_utils.py
CarlyneB's picture
[REFACTOR] state_utils: remove apply_auto_disable_logic, replaced by refresh_active_methods in tab2
03d4cf5
Raw
History Blame Contribute Delete
1.52 kB
import streamlit as st
def init_custom_resources():
"""Initialise custom resource session state keys and coerce amounts/coefficients to float.
Ensures custom_resources, enabled_methods, and auto_disabled_methods exist in
session state, then sanitises every batch so numeric fields are float (not str).
"""
if "custom_resources" not in st.session_state:
st.session_state.custom_resources = []
if "enabled_methods" not in st.session_state:
st.session_state.enabled_methods = {}
if "auto_disabled_methods" not in st.session_state:
st.session_state.auto_disabled_methods = set()
for batch in st.session_state.custom_resources:
try:
batch["amount"] = float(batch["amount"])
except (ValueError, TypeError):
batch["amount"] = 0.0
for m, coefs in batch.get("methods", {}).items():
for key in ("min", "median", "max"):
try:
coefs[key] = float(coefs[key])
except (ValueError, TypeError):
coefs[key] = 0.0
def clear_widget_keys():
"""Delete all Streamlit widget state keys for sliders, manual inputs, and toggles.
Called after loading a new file or scenario so widgets re-initialise from
fresh session-state values instead of showing stale cached values.
"""
prefixes = ("toggle_", "cap_type_", "slider_", "manual_")
for k in [k for k in st.session_state if k.startswith(prefixes)]:
del st.session_state[k]