
    g	                    `    d dl mZ d dlZd dlmZmZ d dlmZ erd dlm	Z	 	 	 d	 	 	 	 	 	 	 ddZ
y)	    )annotationsN)BaseHTTPRequestHandler
HTTPServer)TYPE_CHECKING)Iterablec                   t        | t              r| j                  d      n| d}|t        j                  d      }nMt        |t              r|g}|D ]  }	 t        j                  |      }| n |t        dt        |      z          G fddt              }t        d||ndf|      }|j                  d|j                          |j                          y# t        j
                  $ r Y w xY w)	a'  
    Display an html document in a web browser without creating a temp file.

    Instantiates a simple http server and uses the webbrowser module to
    open the server's URL

    Parameters
    ----------
    html: str
        HTML string to display
    using: str or iterable of str
        Name of the web browser to open (e.g. "chrome", "firefox", etc.).
        If an iterable, choose the first browser available on the system.
        If none, choose the system default browser.
    port: int
        Port to use. Defaults to a random port
    utf8Nz(Failed to locate a browser with name in c                       e Zd Zd fdZd Zy)3open_html_in_browser.<locals>.OneShotRequestHandlerc                    | j                  d       | j                  dd       | j                          d}t        dt	              |      D ]#  }| j
                  j                  |||z           % y )N   zContent-typez	text/htmli   r   )send_responsesend_headerend_headersrangelenwfilewrite)self
bufferSizei
html_bytess      G/var/www/openai/venv/lib/python3.12/site-packages/altair/utils/_show.pydo_GETz:open_html_in_browser.<locals>.OneShotRequestHandler.do_GET9   sf    s#^[9$J1c*oz:

  AJ!?@ ;    c                     y )N )r   formatargss      r   log_messagez?open_html_in_browser.<locals>.OneShotRequestHandler.log_messageB   s    r   N)returnNone)__name__
__module____qualname__r   r    )r   s   r   OneShotRequestHandlerr   8   s    	A	r   r&   z	127.0.0.1r   zhttp://127.0.0.1:)
isinstancestrencode
webbrowsergetError
ValueErrorr   r   openserver_porthandle_request)htmlusingportbrowserbrowser_keyr&   serverr   s          @r   open_html_in_browserr7      s    . )34(=V$4JG}..& eS!GE K$..5& ' ! ?G#e*TUU 6  	d.dA68MF LL$V%7%7$89:
3 ## s   CC43C4)NN)r1   zstr | bytesr2   zstr | Iterable[str] | Noner3   z
int | Noner!   r"   )
__future__r   r*   http.serverr   r   typingr   collections.abcr   r7   r   r   r   <module>r<      sM    "  :  (
 )-@
@%@ @ 
	@r   