class_docstr: Type containing data related to an AppSession.
  
  For each AppSession, the Runtime tracks that session's
  script_run_count. This is used to track the age of messages in
  the ForwardMsgCache.
code: def to_active(self) -> ActiveSessionInfo:
      assert (
          self.is_active()
      ), "A SessionInfo with no client cannot be active!"
  
      # NOTE: The cast here (rather than copying this SessionInfo's fields into a new
      # ActiveSessionInfo) is important as the Runtime expects to be able to mutate
      # what's returned from get_active_session_info to increment script_run_count.
      return cast(ActiveSessionInfo, self)
  
imports: from abc import abstractmethod
  from dataclasses import dataclass
  from typing import Callable, Dict, List, Optional, cast
  from typing_extensions import Protocol
  from streamlit.proto.ForwardMsg_pb2 import ForwardMsg
  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.uploaded_file_manager import UploadedFileManager
label_desc: Use image node_id 2 for calling the SessionInfo obj's underlying member method code with example usage: obj.to_active() and returns: cast