class_docstr: Represents a websocket connection to a server-side session.
  
  Each server session stores a Document, which is kept in sync with the
  corresponding Document for this ``ClientSession`` instance. Updates on
  either side of the connection will automatically propagate to the other
  side, as long as the connection is open.
  
  ClientSession objects can (and usually should) be used as a context manager
  so that the session is properly closed:
  
  .. code-block:: python
  
      with pull_session(url=app_url) as mysession:
          # customize session here
          script = server_session(session_id=mysession.id, url=app_url)
          return render_template("embed.html", script=script, template="Flask")
  
  If you do not use ``ClientSession`` in this way, it is up to you to ensure
  that ``mysession.close()`` is called.
docstr: Open a browser displaying this session.
  
  Args:
      obj (UIElement object, optional) : a Layout (Row/Column),
          Plot or Widget object to display. The object will be added
          to the session's document.
  
      browser (str, optional) : browser to show with (default: None)
          For systems that support it, the **browser** argument allows
          specifying which browser to display in, e.g. "safari", "firefox",
          "opera", "windows-default" (see the :doc:`webbrowser <python:library/webbrowser>`
          module documentation in the standard lib for more details).
  
      new (str, optional) : new file output mode (default: "tab")
          For file-based output, opens or raises the browser window
          showing the current output file.  If **new** is 'tab', then
          opens a new tab. If **new** is 'window', then opens a new window.
docstr_tok: ["Open","a","browser","displaying","this","session",".","Args",":","obj","(","UIElement","object",",","optional",")",":","a","Layout","(","Row\/Column",")",",","Plot","or","Widget","object","to","display",".","The","object","will","be","added","to","the","session","'s","document",".","browser","(","str",",","optional",")",":","browser","to","show","with","(","default",":","None",")","For","systems","that","support","it",",","the","*","*","browser","*","*","argument","allows","specifying","which","browser","to","display","in",",","e.g",".","``","safari","''",",","``","firefox","''",",","``","opera","''",",","``","windows-default","''","(","see","the",":","doc",":","`","webbrowser","<","python",":","library\/webbrowser",">","`","module","documentation","in","the","standard","lib","for","more","details",")",".","new","(","str",",","optional",")",":","new","file","output","mode","(","default",":","``","tab","''",")","For","file-based","output",",","opens","or","raises","the","browser","window","showing","the","current","output","file",".","If","*","*","new","*","*","is","'tab","'",",","then","opens","a","new","tab",".","If","*","*","new","*","*","is","'window","'",",","then","opens","a","new","window","."]
code: def show(
      self,
      obj: UIElement | None = None,
      browser: str | None = None,
      new: Literal["tab", "window"] = "tab",
  ) -> None:
      """Open a browser displaying this session.
  
      Args:
          obj (UIElement object, optional) : a Layout (Row/Column),
              Plot or Widget object to display. The object will be added
              to the session's document.
  
          browser (str, optional) : browser to show with (default: None)
              For systems that support it, the **browser** argument allows
              specifying which browser to display in, e.g. "safari", "firefox",
              "opera", "windows-default" (see the :doc:`webbrowser <python:library/webbrowser>`
              module documentation in the standard lib for more details).
  
          new (str, optional) : new file output mode (default: "tab")
              For file-based output, opens or raises the browser window
              showing the current output file.  If **new** is 'tab', then
              opens a new tab. If **new** is 'window', then opens a new window.
  
      """
      if obj and obj not in self.document.roots:
          self.document.add_root(obj)
      show_session(session=self, browser=browser, new=new)
  
imports: from __future__ import annotations
  import logging
  from typing import TYPE_CHECKING, Any, Literal
  from urllib.parse import quote_plus
  from ..core.types import ID
  from ..document import Document
  from ..resources import DEFAULT_SERVER_HTTP_URL, SessionCoordinates
  from ..util.browser import NEW_PARAM, BrowserLike, BrowserTarget
  from ..util.token import generate_jwt_token, generate_session_id
  from .states import ErrorReason
  from .util import server_url_for_websocket_url, websocket_url_for_server_url
label_desc: Use image node_id 19 for calling the ClientSession obj's underlying member method code with example usage: obj.show(obj, browser, new) without return types