class_docstr: A SessionManager used to manage sessions with lifecycles tied to those of a
  browser tab's websocket connection.
  
  WebsocketSessionManagers differentiate between "active" and "inactive" sessions.
  Active sessions are those with a currently active websocket connection. Inactive
  sessions are sessions without. Eventual cleanup of inactive sessions is a detail left
  to the specific SessionStorage that a WebsocketSessionManager is instantiated with.
class_docstr_tok: ["A","SessionManager","used","to","manage","sessions","with","lifecycles","tied","to","those","of","a","browser","tab","'s","websocket","connection",".","WebsocketSessionManagers","differentiate","between","``","active","''","and","``","inactive","''","sessions",".","Active","sessions","are","those","with","a","currently","active","websocket","connection",".","Inactive","sessions","are","sessions","without",".","Eventual","cleanup","of","inactive","sessions","is","a","detail","left","to","the","specific","SessionStorage","that","a","WebsocketSessionManager","is","instantiated","with","."]
code: def get_session_info(self, session_id: str) -> Optional[SessionInfo]:
      session_info = self.get_active_session_info(session_id)
      if session_info:
          return cast(SessionInfo, session_info)
      return self._session_storage.get(session_id)
  
imports: from typing import Callable, Dict, List, Optional, cast
  from typing_extensions import Final
  from streamlit.logger import get_logger
  from streamlit.runtime.app_session import AppSession
  from streamlit.runtime.script_data import ScriptData
  from streamlit.runtime.scriptrunner.script_cache import ScriptCache
  from streamlit.runtime.session_manager import ActiveSessionInfo, SessionClient, SessionInfo, SessionManager, SessionStorage
  from streamlit.runtime.uploaded_file_manager import UploadedFileManager
  from streamlit.watcher import LocalSourcesWatcher
label_desc: Use image node_id 8 for calling the WebsocketSessionManager obj's underlying member method code with example usage: obj.get_session_info(session_id) and returns: self, cast