|
|
""" |
|
|
Session state management utilities |
|
|
""" |
|
|
|
|
|
import streamlit as st |
|
|
from typing import Any, Dict, Optional |
|
|
|
|
|
class SessionManager: |
|
|
"""Manage session state with better error handling""" |
|
|
|
|
|
@staticmethod |
|
|
def init_session_state(): |
|
|
"""Initialize session state with default values""" |
|
|
defaults = { |
|
|
"results": [], |
|
|
"jobs": [], |
|
|
"job_idx": 0, |
|
|
"running": False, |
|
|
"api_key_val": "", |
|
|
"last_error": None, |
|
|
"retry_count": 0, |
|
|
"backend_loaded": False, |
|
|
"backend": None |
|
|
} |
|
|
|
|
|
for key, value in defaults.items(): |
|
|
if key not in st.session_state: |
|
|
st.session_state[key] = value |
|
|
|
|
|
@staticmethod |
|
|
def safe_update(updates: Dict[str, Any]): |
|
|
"""Safely update session state""" |
|
|
try: |
|
|
st.session_state.update(updates) |
|
|
except Exception as e: |
|
|
st.error(f"Session update failed: {e}") |
|
|
|
|
|
@staticmethod |
|
|
def reset_job_state(): |
|
|
"""Reset job-related state""" |
|
|
SessionManager.safe_update({ |
|
|
"results": [], |
|
|
"jobs": [], |
|
|
"job_idx": 0, |
|
|
"running": False, |
|
|
"last_error": None, |
|
|
"retry_count": 0 |
|
|
}) |
|
|
|
|
|
@staticmethod |
|
|
def get_safe(key: str, default: Any = None) -> Any: |
|
|
"""Safely get session state value""" |
|
|
return st.session_state.get(key, default) |