from typing import TypeVar | |
import dataclasses | |
import streamlit as st | |
StateT = TypeVar('StateT') | |
def persistent_game_state(initial_state: StateT) -> StateT: | |
session_id = st.report_thread.get_report_ctx().session_id | |
session = st.server.server.Server.get_current()._get_session_info(session_id).session | |
if not hasattr(session, '_gamestate'): | |
setattr(session, '_gamestate', initial_state) | |
return session._gamestate | |