
    gS                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZ d dl	m
Z
mZmZmZ d dlmZmZ d dlmZ dee   fdZ G d d	e      Z G d
 de      Zy)    N)ABCabstractmethod)CallableDictOptionalUnion)compute_driver_executableget_driver_env)ParsedMessagePayloadreturnc                     	 t         j                  t        t         j                  d      sy t         j                  j                  ry t         j                  j	                         S # t
        t        t        j                  f$ rC t        t         d      rt         j                  sY y t         j                  j	                         cY S w xY w)Nclosed
__stderr__)
sysstderrhasattrr   filenoNotImplementedErrorAttributeErrorioUnsupportedOperationr        P/var/www/openai/venv/lib/python3.12/site-packages/playwright/_impl/_transport.py_get_stderr_filenor      s    ' ::WSZZ%B::zz  ""1H1HI ' sL)~~$$&&'s"   *A& A& A& &>C&CCc                       e Zd Zdej                  ddfdZedd       ZddZedd       Z	edd       Z
edd	       Zed
eddfd       Zd
edefdZdeeef   defdZy)	Transportloopr   Nc                 L    || _         d | _        |j                         | _        y )Nc                      y Nr   )_s    r   <lambda>z$Transport.__init__.<locals>.<lambda>3   s    Dr   )_loop
on_messagecreate_futureon_error_future)selfr   s     r   __init__zTransport.__init__1   s!    
BP/3/A/A/Cr   c                      y r!   r   r(   s    r   request_stopzTransport.request_stop6       r   c                      y r!   r   r+   s    r   disposezTransport.dispose:   s    r   c                    K   y wr!   r   r+   s    r   wait_until_stoppedzTransport.wait_until_stopped=   	        c                    K   y wr!   r   r+   s    r   connectzTransport.connectA   r2   r3   c                    K   y wr!   r   r+   s    r   runzTransport.runE   r2   r3   messagec                      y r!   r   )r(   r8   s     r   sendzTransport.sendI   r-   r   c                     t        j                  |      }dt        j                  v r!t	        dt        j                  |d             |j                         S )NDEBUGPz[32mSEND>[0m   indent)jsondumpsosenvironprintencode)r(   r8   msgs      r   serialize_messagezTransport.serialize_messageM   s>    jj!rzz!($**WQ*GHzz|r   datac                     t        j                  |      }dt        j                  v r!t	        dt        j
                  |d             |S )Nr<   z[33mRECV>[0mr=   r>   )r@   loadsrB   rC   rD   rA   )r(   rH   objs      r   deserialize_messagezTransport.deserialize_messageS   s7    jjrzz!($**S*CD
r   r   N)__name__
__module____qualname__asyncioAbstractEventLoopr)   r   r,   r/   r1   r5   r7   r   r:   bytesrG   r   strr   rL   r   r   r   r   r   0   s    DW66 D4 D
         D T   % c5j(9 >R r   r   c                   l     e Zd Zdej                  ddf fdZddZddZddZddZ	d	e
ddfd
Z xZS )PipeTransportr   r   Nc                 2    t         |   |       d| _        y )NF)superr)   _stopped)r(   r   	__class__s     r   r)   zPipeTransport.__init__\   s    r   c                 b    | j                   sJ d| _        | j                   j                          y )NT)_outputrY   closer+   s    r   r,   zPipeTransport.request_stop`   s%    |||r   c                 8   K   | j                    d {    y 7 wr!   )_stopped_futurer+   s    r   r1   z PipeTransport.wait_until_stoppede   s     """"s   c                   K   t        j                         | _        	 t               }t	        t
        dd      st               j                  d      r|j                  dd       d }t
        j                  dk(  rLt        j                         }|xj                  t        j                  z  c_        t        j                  |_        t!               \  }}t        j"                  ||dt         j                  j$                  t         j                  j$                  t'               d||		       d {   | _        | j(                  j0                  | _        y 7 %# t*        $ r"}| j,                  j/                  |       |d }~ww xY ww)
NfrozenF__compiled__PLAYWRIGHT_BROWSERS_PATH0win32z
run-driver   )stdinstdoutr   limitenvstartupinfo)rQ   Futurer_   r
   getattrr   globalsget
setdefaultplatform
subprocessSTARTUPINFOdwFlagsSTARTF_USESHOWWINDOWSW_HIDEwShowWindowr	   create_subprocess_execPIPEr   _proc	Exceptionr'   set_exceptionrg   r\   )r(   rj   rk   executable_pathentrypoint_pathexcs         r   r5   zPipeTransport.connecth   s*    /6~~/?	 "CsHe,	n0M93?K||w&(446##z'F'FF#*4*<*<'/H/J,O_&==((--))..)+'
  
DJ zz''
  	  ..s3I	s;   F DE *E+	E 4F E 	E=E88E==F c                   K   | j                   j                  sJ | j                   j                  sJ | j                  s	 | j                   j                  j	                  d       d {   }| j                  rnt
        j                  |dd      }t        d      }|rat        |d      }| j                   j                  j	                  |       d {   }| j                  rn||z  }t        |      r||z   }n|}|ra| j                  rnM| j                  |      }| j                  |       t        j"                  d       d {    | j                  s| j                   j%                          d {    | j&                  j)                  d        y 7 07 # t        j                  $ r3 | j                  s$| j                  j                  t!        d             Y w xY w7 7 pw)N   littleF	byteordersignedr   rf   z/Connection closed while reading from the driver)rz   rh   rg   rY   readexactlyint
from_bytesrS   minlenrL   r%   rQ   IncompleteReadErrorr'   r|   r{   sleepcommunicater_   
set_result)r(   bufferlengthto_readrH   rK   s         r   r7   zPipeTransport.run   s    zz    zz--#zz00<<Q??==(5Qq!&%0G!%!2!2!>!>w!GGD}}g%F6{!'$!%  ==..v6$ --"""9 --< jj$$&&&''-; @ H .. }}((66!"ST  #&s   >G+(F )F*F :G+;AF F+F F G+"F 0G+G'	G+G+8G)9 G+F F AG$!G+#G$$G+)G+r8   c                     | j                   sJ | j                  |      }| j                   j                  t        |      j	                  ddd      |z          y )Nr   r   Fr   )r\   rG   writer   to_bytes)r(   r8   rH   s      r   r:   zPipeTransport.send   sN    |||%%g.IqHUCdJ	
r   rM   )rN   rO   rP   rQ   rR   r)   r,   r1   r5   r7   r   r:   __classcell__)rZ   s   @r   rV   rV   [   sE    W66 4 
#(B".H
D 
T 
r   rV   )rQ   r   r@   rB   rr   r   abcr   r   typingr   r   r   r   playwright._impl._driverr	   r
   playwright._impl._helperr   r   r   r   rV   r   r   r   <module>r      sS     	  	  
 # 2 2 N 9'HSM '&( (VW
I W
r   