Spaces:
Sleeping
Sleeping
| 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] | |