Streamlit component that allows you to do manage browser session storage
Project description
Streamlit sessionBrowser storage
This repo is to help streamlt users manage data in a browser's sessionBrowser storage.
Built on the use-session-storage-state
that allows for real time updates especially important when sessionBrowser storage item is deleted.
for more details:
https://www.npmjs.com/package/use-session-storage-state
pip install streamlit-browser-session-storage
from streamlit_session_browser_storage import SessionStorage
sessionBrowserS = SessionStorage()
store items to sessionBrowser storage
itemKey = "camera"
itemValue = "Tarah"
sessionBrowserS.setItem(itemKey, itemValue)
get item from sessionBrowser storage
itemKey = "Taylor Swift"
sessionBrowser_storage_item = sessionBrowserS.getItem(itemKey)
get all items saved on sessionBrowser storage
saved_individual = sessionBrowserS.getAll()
st.write(saved_individual)
delete all
sessionBrowserS.deleteAll()
when getting sessionBrowser storage items with streamlit widgets
st.subheader("Method 1")
def sessionBrowserStorageManager():
return SessionStorage()
sessionBrowserS = sessionBrowserStorageManager()
if "get_val" not in st.session_state:
st.session_state["get_val"] = None
with st.form("get_data"):
st.text_input("key", key="get_sessionBrowser_storage_v")
st.form_submit_button("Submit")
if st.session_state["get_sessionBrowser_storage_v"] != "":
val_ = sessionBrowserS.getItem(st.session_state["get_sessionBrowser_storage_v"], key="test_get_item")
st.session_state["get_val"] = val_
st.write(st.session_state["get_val"])
### When using callbacks for get item, can use the below example. But it wont reveal data unless app has rendered twice. But callback can be work without a hitch generally (based on my tests).
st.subheader("Method 2 - using callback. Does not load instantly especially for get storage")
def sessionBrowserStorageManager():
return SessionStorage()
sessionBrowserS = sessionBrowserStorageManager()
if "get_val_2" not in st.session_state:
st.session_state["get_val_2"] = None
if "st_col_test" not in st.session_state:
st.session_state["st_col_test"] = None
def change_state_2():
with st.session_state["st_col_test"][0]: # call method from below form
sessionBrowserS.getItem(st.session_state["get_sessionBrowser_storage_v_2"], key="test_get_item_2") # initialise/run method and value will be stored in `session_state`
with st.form("get_data_2"):
st.text_input("key", key="get_sessionBrowser_storage_v_2")
st.form_submit_button("Submit", on_click=change_state_2)
st.session_state["st_col_test"] = st.columns(1) #to make sure rendering happens below form (or other streamlit element. Else the re-rendering of component upon re-running of up will be run at the top of the streamlit component (form here) which creates nasty ui experience.)
if "test_get_item_2" in st.session_state and st.session_state["test_get_item_2"] != None:
st.session_state["get_val_2"] = st.session_state["test_get_item_2"] # if sessionBrowser storage method is initialised, get the stored value and use it throughout the app.
st.write(st.session_state["get_val_2"])
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Close
Hashes for streamlit-browser-session-storage-0.0.8.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0b2b04cb8c6a6d361ccc6e90478a8901180792da16e3d4f2d3bcda9d4cd00225 |
|
MD5 | 8c4250d60baad00fc2cf3ee8bb60f9c4 |
|
BLAKE2b-256 | 04c26b8922d8ec7dc9c175bd631f042c386f7729a88f230a6e6c1e2d96838b14 |
Close
Hashes for streamlit_browser_session_storage-0.0.8-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | df5e4a94b4777105d20305fd64e8ffd536b5acd5f38a9e3d3bea1c9cc8d1748f |
|
MD5 | d3b23c9ca535ca362474fef01f2a84c8 |
|
BLAKE2b-256 | ea1ddd755e52afe59d9456128c4e23c0581d3885812ab9882b5ad6764b766759 |