o
    $[iY                     @   s  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Zd dlm	Z	 d dl
mZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlZd dlZd dlmZmZ d dlmZ d dl m!Z!m"Z"m#Z# d d	l$m%Z% erzd d
l&m'Z' d dl(m)Z) G dd deZ*G dd deZ+G dd dZ,G dd de+Z-G dd deZ.de*defddZ/dee* dee fddZ0G dd deZ1G dd deZ2d eej3 d!e4de2fd"d#Z5d$edefd%d&Z6d'eee7  de7fd(d)Z8dS )*    N)Path)
TYPE_CHECKINGAnyCallableDictListMappingOptional	TypedDictUnioncast)EventEmitter)AsyncIOEventEmitter)TargetClosedErrorrewrite_error)EventGreenlet)ErrorParsedMessagePayloadparse_error)	Transport)
LocalUtils)
Playwrightc                       s   e Zd Zd fddZdd	ed
edefddZdd	ed
edefddZdd	ed
eddfddZ	d	ed
e
e dedefddZdddZ  ZS )Channel
connection
ConnectionobjectChannelOwnerreturnNc                    s<   t    | _|j _| _ d fdd d _d S )Nerrorc                    s    j | S N)_connection_on_event_listener_error)excself \/var/www/html/flask_server/venv/lib/python3.10/site-packages/playwright/_impl/_connection.py<lambda>9   s    z"Channel.__init__.<locals>.<lambda>F)super__init__r    _guid_objecton_is_internal_type)r$   r   r   	__class__r#   r&   r)   4   s   

zChannel.__init__methodparamsc                    $   j  fddjI d H S )Nc                           dS NF_inner_sendr%   r0   r1   r$   r%   r&   r'   >       zChannel.send.<locals>.<lambda>r    wrap_api_callr-   r$   r0   r1   r%   r7   r&   send<   
   
zChannel.sendc                    r2   )Nc                      r3   NTr5   r%   r7   r%   r&   r'   D   r8   z-Channel.send_return_as_dict.<locals>.<lambda>r9   r;   r%   r7   r&   send_return_as_dictB   r=   zChannel.send_return_as_dictc                    s   j  fdd d S )Nc                      s$   j j d u ri dS dS r>   )r    _send_message_to_serverr+   r%   r7   r%   r&   r'   K   s
    z'Channel.send_no_reply.<locals>.<lambda>)r    wrap_api_call_syncr;   r%   r7   r&   send_no_replyH   s   zChannel.send_no_replyreturn_as_dictc           
         s   |d u ri }| j jr| j j}d | j _|| j | j|t|}tj| j jj|j	htj
dI d H \}}|j	 s=|j	  tt| }|sId S t|tsPJ |rT|S t|dkr\d S t|dksdJ tt|}	||	 S )N)return_whenr      )r    _errorr@   r+   _filter_noneasynciowait
_transporton_error_futurefutureFIRST_COMPLETEDdonecancelnextiterresult
isinstancedictlen)
r$   r0   r1   rC   r   callbackrN   _rR   keyr%   r%   r&   r6   P   s:   

zChannel._inner_sendc                 C   
   d| _ d S r>   )r-   r#   r%   r%   r&   mark_as_internal_types      
zChannel.mark_as_internal_type)r   r   r   r   r   Nr   r   N)__name__
__module____qualname__r)   strr   r   r<   r?   rB   r	   boolr6   rZ   __classcell__r%   r%   r.   r&   r   3   s    
#r   c                
       s   e Zd Zded dedededdf
 fdd	Zd
ee ddfddZdddZ	deeef ddfddZ
dededdfddZdedededdf fddZdededdf fddZ  ZS )r   parent)r   r   typeguidinitializerr   Nc                    s   t  j|jd |j| _|j| _|| _|| _t|tr|jn|| _t|tr(|nd | _	i | _
t| j| | _|| _d| _| | jj
|< | j	rJ| | j	j
|< i | _d S )N)loopF)r(   r)   _loop_dispatcher_fiber_typer*   rS   r   r    _parent_objectsr   _channel_initializer_was_collected_event_to_subscription_mapping)r$   rc   rd   re   rf   r.   r%   r&   r)   x   s"   
zChannelOwner.__init__reasonc                 C   sT   | j r	| j j| j= | jj| j= |dk| _t| j D ]}|| q| j  d S )Ngc)	rk   rl   r*   r    ro   listvalues_disposeclear)r$   rq   r   r%   r%   r&   ru      s   
zChannelOwner._disposechildc                 C   s(   t d|jj|j= || j|j< | |_d S )Nr   )r   rk   rl   r*   )r$   rw   r%   r%   r&   _adopt   s   
zChannelOwner._adoptmappingc                 C   s
   || _ d S r   )rp   )r$   ry   r%   r%   r&   "_set_event_to_subscription_mapping   r[   z/ChannelOwner._set_event_to_subscription_mappingeventenabledc                    s2   j |rj fddd d S d S )Nc                      s   j d dS )NupdateSubscription)r{   r|   )rm   rB   r%   r|   protocol_eventr$   r%   r&   r'      s    
z3ChannelOwner._update_subscription.<locals>.<lambda>T)rp   getr    rA   )r$   r{   r|   r%   r~   r&   _update_subscription   s   z!ChannelOwner._update_subscriptionkvc                    s*   |  |s| |d t ||| d S r>   )	listenersr   r(   _add_event_handler)r$   r{   r   r   r.   r%   r&   r      s   
zChannelOwner._add_event_handlerfc                    s,   t  || | |s| |d d S d S r4   )r(   remove_listenerr   r   )r$   r{   r   r.   r%   r&   r      s   
zChannelOwner.remove_listener)rw   r   r   N)r]   r^   r_   r   r`   r   r)   r	   ru   rx   rz   ra   r   r   r   r   rb   r%   r%   r.   r&   r   w   s$    

"r   c                   @   s    e Zd ZdejddfddZdS )ProtocolCallbackrg   r   Nc                    sb     |  _t dtjdd f fdd r/  j fdd d S d S )Ntaskr   c                    s(   r   |  rj  d S d S r   )remove_done_callback	cancelledrL   rO   )r   cbcurrent_taskr$   r%   r&   r      s
   
z%ProtocolCallback.__init__.<locals>.cbc                    s   r  S d S r   )r   )rW   )r   r   r%   r&   r'         z+ProtocolCallback.__init__.<locals>.<lambda>)create_futurerL   rH   r   Taskadd_done_callback)r$   rg   r%   r   r&   r)      s   

zProtocolCallback.__init__)r]   r^   r_   rH   AbstractEventLoopr)   r%   r%   r%   r&   r      s    r   c                       s(   e Zd Zd
 fddZddd	Z  ZS )RootChannelOwnerr   r   r   Nc                    s   t  |ddi  d S )NRoot )r(   r)   )r$   r   r.   r%   r&   r)      s   zRootChannelOwner.__init__r   c                    s   t | jdddiI d H S )N
initializesdkLanguagepython)from_channelrm   r<   r#   r%   r%   r&   r      s   zRootChannelOwner.initialize)r   r   r   N)r   r   )r]   r^   r_   r)   r   rb   r%   r%   r.   r&   r      s    r   c                       s  e Zd Z	d>dedeeeeegef dede	j
ded ddf fd	d
Zed?ddZd@ddZd@ddZd@ddZd@ddZd@ddZd>deddfddZdedeegdf ddfddZdeddfdd Z	!dAd"ed#ed$ed%edef
d&d'Zd(eddfd)d*Zd+eddfd,d-Zd.ed/eded0edef
d1d2Zd3edefd4d5Zd3edefd6d7Z 	!dAd8eg ef d9edefd:d;Z!	!dAd8eg ef d9edefd<d=Z"  Z#S )Br   Ndispatcher_fiberobject_factory	transportrg   local_utilsr   r   c                    s   t    | _| _ fdd j_i  _d _i  _i  _| _	d _
g  _| _|  _d  _d _d  _tjdd d _| _d _d  _d S )Nc                    s
     | S r   )dispatch)msgr#   r%   r&   r'      s   
 z%Connection.__init__.<locals>.<lambda>r   FApiZone)default)r(   r)   ri   rJ   
on_message_waiting_for_object_last_idrl   
_callbacks_object_factory_is_sync_child_ws_connectionsrh   r   playwright_futurerF   	is_remote
_init_taskcontextvars
ContextVar	_api_zone_local_utils_tracing_count_closed_error)r$   r   r   r   rg   r   r.   r#   r&   r)      s*   


zConnection.__init__c                 C   s   | j sJ | j S r   )r   r#   r%   r%   r&   r     s   
zConnection.local_utilsc                 C   rY   r>   )r   r#   r%   r%   r&   mark_as_remote	  r[   zConnection.mark_as_remotec                    s   d| _ |  I d H  d S r>   )r   runr#   r%   r%   r&   run_as_sync  s   zConnection.run_as_syncc                    sX   t   _t  _d fdd} j I d H   j|  _ j	 I d H  d S )Nr   c                      s    j  j I d H  d S r   )r   
set_result_root_objectr   r%   r#   r%   r&   init  s   zConnection.run.<locals>.initr\   )
rH   get_running_looprh   r   r   rJ   connectcreate_taskr   r   )r$   r   r%   r#   r&   r     s   

zConnection.runc                 C   s2   | j   | j  | j| j   |   d S r   )rJ   request_stopri   switchrh   run_until_completewait_until_stoppedcleanupr#   r%   r%   r&   	stop_sync  s   

zConnection.stop_syncc                    s(   | j   | j  I d H  |   d S r   )rJ   r   r   r   r#   r%   r%   r&   
stop_async!  s   
zConnection.stop_asynccausec                 C   s   |rt |nt  | _| jr| j s| j  | jD ]}|j  q| j	 D ]}|j
r-q'|j r3q'|j| j q'| j  | d d S )Nclose)r   r   r   rN   rO   r   rJ   disposer   rt   no_replyrL   r   set_exceptionrv   emit)r$   r   ws_connectionrV   r%   r%   r&   r   &  s   



zConnection.cleanupre   rV   c                 C   s   || j |< d S r   )r   )r$   re   rV   r%   r%   r&   call_on_object_with_known_name6  s   z)Connection.call_on_object_with_known_name
is_tracingc                 C   s(   |r|  j d7  _ d S |  j d8  _ d S )NrE   )r   )r$   r   r%   r%   r&   set_is_tracing;  s   zConnection.set_is_tracingFr   r0   r1   r   c                 C   sF  | j r| j |jrtd|  jd7  _| j}t| j}t| j}tt	j
t|dt	 |_||_|| j|< tt| j }|dg }	|	rY|	d d |	d d |	d d d	nd }
ttj  d
 |d |d  d}|
ru|
|d< ||j|| ||d}| jdkr|	r|	r|jdkr| j||	 | j| || j|< |S )Nz?The object has been collected to prevent unbounded heap growth.rE   __pw_stack_trace__framesr   filelinecolumn)r   r   r   i  apiName)wallTimer   internallocation)idre   r0   r1   metadata
localUtils)r   ro   r   r   r   rh   rH   r   r   	tracebackStackSummarygetattrextract_stackstack_tracer   r   ParsedStackTracer   r   intdatetimenow	timestampr*   _replace_channels_with_guidsr   r   add_stack_to_tracing_no_replyrJ   r<   )r$   r   r0   r1   r   r   rV   r   stack_trace_informationr   r   r   messager%   r%   r&   r@   A  s`   








z"Connection._send_message_to_serverr   c              
      s  j rd S |d}|r\j|}|j rd S |jrd S |d}|rL|dsLt|d t|d}d	t
|jdd  |_|j| d S |d}|j| d S |d }|d }|d	}	|d
kr|	sqJ j| }
|
|	d |	d |	d  d S j|}|std| d| |dkrttttf |	d }j|}|std| || d S |dkrt|	tsJ j| ttt |	d d S j| }d|v}zWjr!|j|D ]/dtj dd ffdd d	t!dd f fdd}t"|}|r|#|	 q|#|	 qW d S |r1|j$||	 W d S |j$||	 W d S  t%yS } z&| W Y d }~d S d }~ww )Nr   r   rR   logr   ire   r0   r1   
__create__rd   rf   zCannot find object to "z": 	__adopt__zUnknown new child: __dispose__rq   z	jsonPipe@rL   r   c                    s   |   }|r | d S d S r   )	exceptionr!   )rL   r"   r#   r%   r&   _done_callback  s   z+Connection.dispatch.<locals>._done_callbackc                    s$   | }t |r|  d S d S r   )rH   isfuturer   )r1   potential_future)r   listenerr%   r&   %_listener_with_error_handler_attached  s   
zBConnection.dispatch.<locals>._listener_with_error_handler_attached)'r   r   r   poprL   r   r   r   format_call_logjoinr   format_listr   _stackr   _replace_guids_with_channelsr   rl   _create_remote_object	Exceptionr   r   r`   rx   rS   rT   ru   r	   r   rm   r   rH   Futurer   r   r   r   BaseExceptionr!   )r$   r   r   rV   r   parsed_errorrR   re   r0   r1   rc   r   
child_guidrw   "should_replace_guids_with_channelsr   gr"   r%   )r   r   r$   r&   r   z  s   





 


zConnection.dispatchr"   c                 C   s2   t dtjd tjt|||jtjd || _d S )Nz Error occurred in event listener)r   )printsysstderrr   print_exceptionrd   __traceback__rF   )r$   r"   r%   r%   r&   r!     s   
z#Connection._on_event_listener_errorrc   rd   rf   c                 C   s8   |  |}| ||||}|| jv r| j|| |S r   )r   r   r   r   )r$   rc   rd   re   rf   rR   r%   r%   r&   r     s
   

z Connection._create_remote_objectpayloadc                 C   s   |d u r|S t |trt|S t |tjjr#t |ts#tt| j|S t |t	r.t
|jdS t |t
rGi }| D ]\}}| |||< q9|S |S )N)re   )rS   r   r`   collectionsabcSequencers   mapr   r   rT   r*   itemsr$   r  rR   rX   valuer%   r%   r&   r     s    


z'Connection._replace_channels_with_guidsc                 C   s|   |d u r|S t |trtt| j|S t |tr<|d| jv r(| j|d  jS i }| D ]\}}| |||< q.|S |S )Nre   )	rS   rs   r  r   rT   r   rl   rm   r	  r
  r%   r%   r&   r     s   

z'Connection._replace_guids_with_channelsr   is_internalc              
      s   | j  r| I d H S t| j}t|dt }t||}| j 	| z(z| I d H W W | j 	d  S  t
yM } zt||d  d| d d }~ww | j 	d  w N__pw_stack__r   z: r   r   rH   r   rh   r   inspectstack+_extract_stack_trace_information_from_stacksetr   r   r$   r   r  r   st	parsed_str   r%   r%   r&   r:     s   

zConnection.wrap_api_callc              
   C   s   | j  r| S t| j}t|dt }t||}| j 	| z%z| W W | j 	d  S  t
yF } zt||d  d| d d }~ww | j 	d  w r  r  r  r%   r%   r&   rA     s   

zConnection.wrap_api_call_syncr   )r   r   r\   )F)$r]   r^   r_   r   r   r   r`   r   r   rH   r   r	   r)   propertyr   r   r   r   r   r   r   r   ra   r   r   r@   r   r   r   r!   r   r   r   r:   rA   rb   r%   r%   r.   r&   r      s    






9X
	



r   channelr   c                 C   s   | j S r   r+   r  r%   r%   r&   r   %  s   r   c                 C   s   | r| j S d S r   r  r  r%   r%   r&   from_nullable_channel)  s   r  c                   @   s2   e Zd ZU eed< eed< eed< ee ed< dS )
StackFramer   r   r   functionN)r]   r^   r_   r`   __annotations__r   r	   r%   r%   r%   r&   r  -  s
   
 r  c                   @   s&   e Zd ZU ee ed< ee ed< dS )r   r   r   N)r]   r^   r_   r   r  r  r	   r`   r%   r%   r%   r&   r   4  s   
 r   r  r  c           	      C   s   t ttjjd }d}d}g }| D ]F}tjjj|jkrq|j|}d}d|d j	v r7|d j	d j
jd }||d jj7 }|sM||j|jd|d |rR|}q|rX|}d}q|s]|}||rdddS |dS )Nr   r   r$   .)r   r   r   r  )r   r   )r`   r   
playwright__file__parents_impl_impl_to_api_mappingfilename
startswithf_localsr/   r]   f_codeco_nameappendlineno)	r  r  playwright_module_pathlast_internal_api_nameapi_nameparsed_framesframeis_playwright_internalmethod_namer%   r%   r&   r  9  sB   r  dc                 C   s   dd |   D S )Nc                 S   s   i | ]\}}|d ur||qS r   r%   ).0r   r   r%   r%   r&   
<dictcomp>f  s    z _filter_none.<locals>.<dictcomp>)r	  )r3  r%   r%   r&   rG   e  r   rG   r   c                 C   s8   | sdS t ttdd | dkrdS dd|  d S )Nr   c                 S   s   |   S r   )strip)xr%   r%   r&   r'   l  s    z!format_call_log.<locals>.<lambda>r   z
Call log:
z
  - 
)rU   rs   filterr   )r   r%   r%   r&   r   i  s
   r   )9rH   collections.abcr  r   r   r  r   r   pathlibr   typingr   r   r   r   r   r   r	   r
   r   r   pyeer   pyee.asyncior   r   %playwright._impl._impl_to_api_mappingplaywright._impl._errorsr   r   playwright._impl._greenletsr   playwright._impl._helperr   r   r   playwright._impl._transportr   playwright._impl._local_utilsr   playwright._impl._playwrightr   r   r   r   r   r   r   r  r  r   	FrameInfora   r  rG   r`   r   r%   r%   r%   r&   <module>   sP   0DG  C
,