def get(**kwargs): """Gets a SessionState object for the current session. Creates a new object if necessary. Parameters ---------- **kwargs : any Default values you want to add to the session state, if we're creating a new one. Example ------- >>> session_state = get(user_name='', favorite_color='black') >>> session_state.user_name '' >>> session_state.user_name = 'Mary' >>> session_state.favorite_color 'black' Since you set user_name above, next time your script runs this will be the result: >>> session_state = get(user_name='', favorite_color='black') >>> session_state.user_name 'Mary' """ # Hack to get the session object from Streamlit. ctx = ReportThread.get_report_ctx() this_session = None current_server = Server.get_current() if hasattr(current_server, "_session_infos"): # Streamlit < 0.56 session_infos = Server.get_current()._session_infos.values() else: session_infos = Server.get_current()._session_info_by_id.values() for session_info in session_infos: s = session_info.session if ( # Streamlit < 0.54.0 (hasattr(s, "_main_dg") and s._main_dg == ctx.main_dg) or # noqa: W504 # Streamlit >= 0.54.0 (not hasattr(s, "_main_dg") and s.enqueue == ctx.enqueue ) or # noqa: W504 # Streamlit >= 0.65.2 (not hasattr(s, "_main_dg") and s._uploaded_file_mgr == ctx.uploaded_file_mgr)): this_session = s if this_session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object. " "Are you doing something fancy with threads?") # Got the session object! Now let's attach some state into it. if not hasattr(this_session, "_custom_session_state"): this_session._custom_session_state = SessionState(**kwargs) return this_session._custom_session_state
def get_state(setup_func: Callable[..., T], **kwargs) -> T: ctx = ReportThread.get_report_ctx() this_session = None session_infos = Server.get_current()._session_infos.values() for session_info in session_infos: ''' if session_info.session._main_dg == ctx.main_dg: session = session_info.session ''' s = session_info.session if ((hasattr(s, '_main_dg') and s._main_dg == ctx.main_dg) or (not hasattr(s, '_main_dg') and s.enqueue == ctx.enqueue)): this_session = s if this_session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object" 'Are you doing something fancy with threads?') # Got the session object! Now let's attach some state into it. if not getattr(this_session, '_custom_session_state', None): this_session._custom_session_state = setup_func(**kwargs) return this_session._custom_session_state
def _get_widget_states(): # Hack to get the session object from Streamlit. ctx = ReportThread.get_report_ctx() session = None current_server = Server.get_current() if hasattr(current_server, '_session_infos'): # Streamlit < 0.56 session_infos = Server.get_current()._session_infos.values() else: session_infos = Server.get_current()._session_info_by_id.values() for session_info in session_infos: if session_info.session.enqueue == ctx.enqueue: session = session_info.session if session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object" "Are you doing something fancy with threads?") # Got the session object! return session._widget_states
def _get_widget_states(): # Hack to get the session object from Streamlit. ctx = ReportThread.get_report_ctx() session = None session_infos = Server.get_current()._session_info_by_id.values() for session_info in session_infos: s = session_info.session if ( # Streamlit < 0.54.0 (hasattr(s, '_main_dg') and s._main_dg == ctx.main_dg) or # Streamlit >= 0.54.0 (not hasattr(s, '_main_dg') and s.enqueue == ctx.enqueue) or # Streamlit >= 0.65.2 (not hasattr(s, '_main_dg') and s._uploaded_file_mgr == ctx.uploaded_file_mgr)): session = s if session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object" 'Are you doing something fancy with threads?') # Got the session object! return session._client_state.widget_states
def get(**kwargs): # Hack to get the session object from Streamlit. ctx = ReportThread.get_report_ctx() this_session = None current_server = Server.get_current() if hasattr(current_server, '_session_infos'): # Streamlit < 0.56 session_infos = Server.get_current()._session_infos.values() else: session_infos = Server.get_current()._session_info_by_id.values() for session_info in session_infos: s = session_info.session if ( # Streamlit < 0.54.0 (hasattr(s, '_main_dg') and s._main_dg == ctx.main_dg) or # Streamlit >= 0.54.0 (not hasattr(s, '_main_dg') and s.enqueue == ctx.enqueue)): this_session = s if this_session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object" 'Are you doing something fancy with threads?') # Got the session object! Now let's attach some state into it. if not hasattr(this_session, '_custom_session_state'): this_session._custom_session_state = SessionState(**kwargs) return this_session._custom_session_state
def get(**kwargs): """Gets a SessionState object for the current session. Creates a new object if necessary. Parameters ---------- **kwargs : any Default values you want to add to the session state, if we're creating a new one. Example ------- >>> session_state = get(user_name='', favorite_color='black') >>> session_state.user_name '' >>> session_state.user_name = 'Mary' >>> session_state.favorite_color 'black' Since you set user_name above, next time your script runs this will be the result: >>> session_state = get(user_name='', favorite_color='black') >>> session_state.user_name 'Mary' """ # Hack to get the session object from Streamlit. ctx = ReportThread.get_report_ctx() this_session = st_session() # Got the session object! Now let's attach some state into it. if not hasattr(this_session, "_custom_session_state"): this_session._custom_session_state = SessionState(**kwargs) return this_session._custom_session_state
def get_current_session() -> ReportSession: # type: ignore # Hack to get the session object from Streamlit. ctx = ReportThread.get_report_ctx() this_session = None current_server = Server.get_current() if hasattr(current_server, "_session_infos"): # Streamlit < 0.56 session_infos = Server.get_current()._session_infos.values() else: session_infos = Server.get_current()._session_info_by_id.values() for session_info in session_infos: s = session_info.session if ((hasattr(s, "_main_dg") and s._main_dg == ctx.main_dg ) # Streamlit < 0.54.0 or (not hasattr(s, "_main_dg") and s.enqueue == ctx.enqueue ) # Streamlit >= 0.54.0 or (not hasattr(s, "_main_dg") and s._uploaded_file_mgr == ctx.uploaded_file_mgr ) # Streamlit >= 0.65.2 ): this_session = s if this_session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object. " "Are you doing something fancy with threads?") return this_session
def _get_session_raw(): # Hack to get the session object from Streamlit. ctx = ReportThread.get_report_ctx() this_session = None current_server = Server.get_current() if hasattr(current_server, "_session_infos"): # Streamlit < 0.56 session_infos = Server.get_current()._session_infos.values() else: session_infos = Server.get_current()._session_info_by_id.values() for session_info in session_infos: s = session_info if ( # Streamlit < 0.54.0 (hasattr(s, "_main_dg") and s.session._main_dg == ctx.main_dg) or # Streamlit >= 0.54.0 (not hasattr(s, "_main_dg") and s.session.enqueue == ctx.enqueue)): this_session = s if this_session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object" "Are you doing something fancy with threads?") return this_session
def get_session_id(): # Copied from tvst's great gist: # https://gist.github.com/tvst/6ef6287b2f3363265d51531c62a84f51 # Hack to get the session object from Streamlit. ctx = ReportThread.get_report_ctx() session = None session_infos = Server.get_current()._session_infos.values() for session_info in session_infos: s = session_info.session if ((hasattr(s, '_main_dg') and s._main_dg == ctx.main_dg) # Streamlit < 0.54.0 or # Streamlit >= 0.54.0 (not hasattr(s, '_main_dg') and s.enqueue == ctx.enqueue)): session = session_info.session if session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object" 'Are you doing something fancy with threads?') return id(session)
def trigger_rerun(): ctx = ReportThread.get_report_ctx() this_session = None current_server = Server.get_current() if hasattr(current_server, '_session_infos'): # Streamlit < 0.56 session_infos = Server.get_current()._session_infos.values() else: session_infos = Server.get_current()._session_info_by_id.values() for session_info in session_infos: s = session_info.session if ( # Streamlit < 0.54.0 (hasattr(s, '_main_dg') and s._main_dg == ctx.main_dg) or # Streamlit >= 0.54.0 (not hasattr(s, '_main_dg') and s.enqueue == ctx.enqueue)): this_session = s if this_session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object" 'Are you doing something fancy with threads?') this_session.request_rerun()
def _get_session(): session_id = ReportThread.get_report_ctx().session_id session_info = Server.get_current()._get_session_info(session_id) if session_info is None: raise RuntimeError("Couldn't get your Streamlit Session object.") return session_info.session
def get(**kwargs): # """Gets a SessionState object for the current session. # Creates a new object if necessary. # Parameters # ---------- # **kwargs : any # Default values you want to add to the session state, if we're creating a # new one. # Example # ------- # >>> session_state = get(user_name='', favorite_color='black') # >>> session_state.user_name # '' # >>> session_state.user_name = 'Mary' # >>> session_state.favorite_color # 'black' # Since you set user_name above, next time your script runs this will be the # result: # >>> session_state = get(user_name='', favorite_color='black') # >>> session_state.user_name # 'Mary' # """ # Hack to get the session object from Streamlit. ctx = ReportThread.get_report_ctx() this_session = None current_server = Server.get_current() if hasattr(current_server, '_session_infos'): # Streamlit < 0.56 session_infos = Server.get_current()._session_infos.values() else: session_infos = Server.get_current()._session_info_by_id.values() for session_info in session_infos: s = session_info.session if ( # Streamlit < 0.54.0 (hasattr(s, '_main_dg') and s._main_dg == ctx.main_dg) or # Streamlit >= 0.54.0 (not hasattr(s, '_main_dg') and s.enqueue == ctx.enqueue) ): this_session = s if this_session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object" 'Are you doing something fancy with threads?') # Got the session object! Now let's attach some state into it. if not hasattr(this_session, '_custom_session_state'): this_session._custom_session_state = SessionState(**kwargs) return this_session._custom_session_state
def get(**kwargs): """Gets a SessionState object for the current session. Creates a new object if necessary. Parameters ---------- **kwargs : any Default values you want to add to the session state, if we're creating a new one. Example ------- 'Mary' """ # Hack to get the session object from Streamlit. ctx = ReportThread.get_report_ctx() this_session = None current_server = Server.get_current() if hasattr(current_server, '_session_infos'): # Streamlit < 0.56 session_infos = Server.get_current()._session_infos.values() else: session_infos = Server.get_current()._session_info_by_id.values() for session_info in session_infos: s = session_info.session if ( # Streamlit < 0.54.0 (hasattr(s, '_main_dg') and s._main_dg == ctx.main_dg) or # Streamlit >= 0.54.0 (not hasattr(s, '_main_dg') and s.enqueue == ctx.enqueue) or # Streamlit >= 0.65.2 (not hasattr(s, '_main_dg') and s._uploaded_file_mgr == ctx.uploaded_file_mgr) ): this_session = s if this_session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object. " 'Are you doing something fancy with threads?') # Got the session object! Now let's attach some state into it. if not hasattr(this_session, '_custom_session_state'): this_session._custom_session_state = SessionState(**kwargs) return this_session._custom_session_state
def get_user_id(): ctx = ReportThread.get_report_ctx() session_infos = Server.get_current()._session_info_by_id.values() # print(dir(session_infos[0])) for session_info in session_infos: # print("Session info session dir:") # print(dir(session_info.session)) if session_info.session.enqueue == ctx.enqueue: user_id = session_info.session.id # print("Current: " + str(session_info.session.id)) else: # print(session_info.session.id) pass return user_id
def get(**kwargs): """Gets a SessionState object for the current session. Creates a new object if necessary. Parameters ---------- **kwargs : any Default values you want to add to the session state, if we're creating a new one. Example ------- >>> session_state = get(user_name='', favorite_color='black') >>> session_state.user_name '' >>> session_state.user_name = 'Mary' >>> session_state.favorite_color 'black' Since you set user_name above, next time your script runs this will be the result: >>> session_state = get(user_name='', favorite_color='black') >>> session_state.user_name 'Mary' """ # Hack to get the session object from Streamlit. ctx = ReportThread.get_report_ctx() session = None session_infos = Server.get_current()._session_infos.values() for session_info in session_infos: if session_info.session._main_dg == ctx.main_dg: session = session_info.session if session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object" "Are you doing something fancy with threads?") # Got the session object! Now let's attach some state into it. if not getattr(session, "_custom_session_state", None): session._custom_session_state = SessionState(**kwargs) return session._custom_session_state
def _get_widget_states(): # Hack to get the session object from Streamlit. ctx = ReportThread.get_report_ctx() session = None session_infos = Server.get_current()._session_infos.values() for session_info in session_infos: if session_info.session._main_dg == ctx.main_dg: session = session_info.session if session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object" 'Are you doing something fancy with threads?') # Got the session object! return session._widget_states ctx = ReportThread.get_report_ctx() session = None session_infos = Server.get_current()._session_infos.values() for session_info in session_infos: if session_info.session._main_dg == ctx.main_dg: session = session_info.session if session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object" 'Are you doing something fancy with threads?') # Got the session object! return session._widget_states
def _get_widget_states(): ctx = ReportThread.get_report_ctx() session = None session_infos = Server.get_current()._session_infos.values() for session_info in session_infos: session = session_info.session if session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object" "Are you doing something fancy with threads?") return session._widget_states
def _get_widget_states(): ctx = ReportThread.get_report_ctx() session = None session_infos = Server.get_current()._session_infos.values() for session_info in session_infos: s = session_info.session if ((hasattr(s, '_main_dg') and s._main_dg == ctx.main_dg) or (not hasattr(s, '_main_dg') and s.enqueue == ctx.enqueue)): session = s if session is None: raise RuntimeError( "ERROR: while working with SessionState of streamlit") return session._widget_states
def get(**kwargs): ctx = ReportThread.get_report_ctx() session = None session_infos = Server.get_current()._session_infos.values() for session_info in session_infos: if session_info.session._main_dg == ctx.main_dg: session = session_info.session if session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object" 'Are you doing something fancy with threads?') if not getattr(session, '_custom_session_state', None): session._custom_session_state = SessionState(**kwargs) return session._custom_session_state
def get_state(setup_func: Callable[..., T], **kwargs) -> T: ctx = ReportThread.get_report_ctx() session = None session_infos = Server.get_current()._session_info_by_id.values() for session_info in session_infos: if session_info.session.enqueue == ctx.enqueue: session = session_info.session if session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object" 'Are you doing something fancy with threads?') # Got the session object! Now let's attach some state into it. if not getattr(session, '_custom_session_state', None): session._custom_session_state = setup_func(**kwargs) return session._custom_session_state
def get_session_id(): # Hack to get the session object from Streamlit. ctx = ReportThread.get_report_ctx() session = None session_infos = Server.get_current()._session_info_by_id.values() for session_info in session_infos: s = session_info.session if ((hasattr(s, "_main_dg") and s._main_dg == ctx.main_dg) # Streamlit < 0.54.0 or # Streamlit >= 0.54.0 (not hasattr(s, "_main_dg") and s.enqueue == ctx.enqueue)): session = session_info.session if session is None: raise RuntimeError( "Oh noes. Couldn't get your Streamlit Session object" "Are you doing something fancy with threads?") return id(session)
def get_session_id(): return ReportThread.get_report_ctx().session_id