Spaces:
Runtime error
Runtime error
Commit
·
30f4a40
1
Parent(s):
ad61148
Create session_state.py
Browse files- session_state.py +28 -0
session_state.py
ADDED
@@ -0,0 +1,28 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
class _SessionState:
|
2 |
+
def __init__(self, **kwargs):
|
3 |
+
for key, val in kwargs.items():
|
4 |
+
setattr(self, key, val)
|
5 |
+
|
6 |
+
|
7 |
+
def get(**kwargs):
|
8 |
+
from streamlit.report_thread import get_report_ctx
|
9 |
+
|
10 |
+
session_id = get_report_ctx().session_id
|
11 |
+
session = _get_session(session_id)
|
12 |
+
session_state = session.setdefault("state", _SessionState(**kwargs))
|
13 |
+
return session_state
|
14 |
+
|
15 |
+
|
16 |
+
def _get_session(session_id):
|
17 |
+
from streamlit.server.server import Server
|
18 |
+
|
19 |
+
server = Server.get_current()
|
20 |
+
if not hasattr(server, "_session_infos"):
|
21 |
+
raise RuntimeError("Oh noes. Couldn't get your Streamlit Session object.")
|
22 |
+
|
23 |
+
session_infos = server._session_infos.values()
|
24 |
+
for session_info in session_infos:
|
25 |
+
if session_info.session._main_dg.report_ctx.session_id == session_id:
|
26 |
+
return session_info.session
|
27 |
+
|
28 |
+
raise RuntimeError("Oh noes. Couldn't get your Streamlit Session object.")
|