class_docstr: A context object that contains data for a "script run" - that is,
  data that's scoped to a single ScriptRunner execution (and therefore also
  scoped to a single connected "session").
  
  ScriptRunContext is used internally by virtually every `st.foo()` function.
  It is accessed only from the script thread that's created by ScriptRunner,
  or from app-created helper threads that have been "attached" to the
  ScriptRunContext via `add_script_run_ctx`.
  
  Streamlit code typically retrieves the active ScriptRunContext via the
  `get_script_run_ctx` function.
docstr: Enqueue a ForwardMsg for this context's session.
docstr_tok: ["Enqueue","a","ForwardMsg","for","this","context","'s","session","."]
code: def enqueue(self, msg: ForwardMsg) -> None:
      """Enqueue a ForwardMsg for this context's session."""
      if (
          msg.HasField("page_config_changed")
          and not self._set_page_config_allowed
      ):
          raise StreamlitAPIException(
              "`set_page_config()` can only be called once per app page, "
              + "and must be called as the first Streamlit command in your script.\n\n"
              + "For more information refer to the [docs]"
              + "(https://docs.streamlit.io/library/api-reference/utilities/st.set_page_config)."
          )
  
      # We want to disallow set_page config if one of the following occurs:
      # - set_page_config was called on this message
      # - The script has already started and a different st call occurs (a delta)
      if msg.HasField("page_config_changed") or (
          msg.HasField("delta") and self._has_script_started
      ):
          self._set_page_config_allowed = False
  
      # Pass the message up to our associated ScriptRunner.
      self._enqueue(msg)
  
imports: import collections
  import contextvars
  import threading
  from dataclasses import dataclass, field
  from typing import Callable, Counter, Dict, List, Optional, Set, Tuple
  from urllib import parse
  from typing_extensions import Final, TypeAlias
  from streamlit import runtime
  from streamlit.errors import StreamlitAPIException
  from streamlit.logger import get_logger
  from streamlit.proto.ForwardMsg_pb2 import ForwardMsg
  from streamlit.proto.PageProfile_pb2 import Command
  from streamlit.runtime.scriptrunner.script_requests import ScriptRequests
  from streamlit.runtime.state import SafeSessionState
  from streamlit.runtime.uploaded_file_manager import UploadedFileManager
  import streamlit
label_desc: Use image node_id 3 for calling the ScriptRunContext obj's underlying member method code with example usage: obj.enqueue(msg) without return types