o
    %hG                     @   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m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mZmZmZ d dlmZmZ d dlmZ d dlmZmZm Z m!Z!m"Z" d dl#m$Z$ d d	l%m&Z& d d
l'm(Z( erd dlm)Z) d dl*m+Z+m,Z,m-Z-m.Z. ee/ee/ ee/ge0f f Z1ee/ee/ edge0f f Z2ee/ee/ edge0f f Z3eedgef eddgef f Z4edgef Z5ed Z6ed Z7ed Z8ed Z9ed Z:ed Z;ed Z<ed Z=ed Z>ed Z?ed Z@G dd deddZAG d d! d!eddZBd"ed#ee/ef fd$d%ZCG d&d' d'eZDG d(d) d)eddZEG d*d+ d+eZFG d,d- d-eZGee/ee/eHe0f f ZI	dsd.ee/ d/e/d0ee1 d1e0d#e0f
d2d3ZJ	dsd.ee/ d4e/d1e0d#e/fd5d6ZKd.ee/ d#ee/ fd7d8ZLd.ee/ d0e/d#e/fd9d:ZMd;e/d#e/fd<d=ZNG d>d? d?eddZOd@ZPdAZQdBZRG dCdD dDZSdEeTdFee	 d#eAfdGdHZUdsdIeAdJee/ d#efdKdLZVdMe/d#e/fdNdOZWdPed#efdQdRZXd#eYfdSdTZZG dUdV dVZ[G dWdX dXZ\e]dYZ^dZe/d#e/fd[d\Z_d]eee/f d#dfd^d_Z`d`ee/ef daee/eaf d#dfdbdcZbd`ee/ef d#eafdddeZcedfZddgedd#edfdhdiZedgee d#eee  fdjdkZfdlee d#e0fdmdnZge]doZhdpe/d#e0fdqdrZidS )t    N)Path)TracebackType)TYPE_CHECKINGAnyCallableDictListLiteralOptionalPatternSet	TypedDictTypeVarUnioncast)urljoinurlparse)	NameValue)ErrorTargetClosedErrorTimeoutErroris_target_closed_errorrewrite_error)glob_to_regex_pattern)RouteGreenlet)escape_regex_flags)HeadersArray)RequestResponseRouteWebSocketRouter   r   r   r    )darklightno-preferencenull)activenoner$   )morer#   r$   )r#   r$   reduce)commitdomcontentloadedloadnetworkidle)AltControlControlOrMetaMetaShift)leftmiddleright)allowblock)fullminimal)attachembedomit)abortfallbackc                   @   s2   e Zd ZU eed< eed< eed< ee ed< dS )ErrorPayloadmessagenamestackvalueN)__name__
__module____qualname__str__annotations__r
   r    rH   rH   L/var/www/html/myenv/lib/python3.10/site-packages/playwright/_impl/_helper.pyr>   L   s
   
 r>   F)totalc                   @   s"   e Zd ZU eed< ee ed< dS )HarRecordingMetadatapathcontentN)rC   rD   rE   rF   rG   r
   HarContentPolicyrH   rH   rH   rI   rK   S   s   
 rK   paramsreturnc                 C   s   dt | d i}d| v r,| d }t|t r||d< t|tr)|j|d< t||d< | d= d| v r9| d |d< | d= d }d }d	| v rH| d	 }| d	= d
| v rS| d
 }| d
= |pZ|rYdnd }|ra||d< |S )NrL   recordHarPathrecordHarUrlFilterurlGloburlRegexSourceurlRegexFlagsrecordHarModemoderecordHarContentrecordHarOmitContentr;   rM   )rF   
isinstancer   patternr   )rO   
out_paramsoptnew_content_apiold_content_apirM   rH   rH   rI   prepare_record_har_optionsX   s0   


r`   c                   @   s&   e Zd ZU eed< eed< eed< dS )ParsedMessageParamstypeguidinitializerN)rC   rD   rE   rF   rG   r   rH   rH   rH   rI   ra   u   s   
 ra   c                   @   s>   e Zd ZU eed< eed< eed< eed< eed< eed< dS )ParsedMessagePayloadidrc   methodrO   resulterrorN)	rC   rD   rE   intrG   rF   ra   r   r>   rH   rH   rH   rI   re   {   s   
 re   c                   @   s   e Zd ZU ee ed< dS )DocumentrequestN)rC   rD   rE   r
   r   rG   rH   rH   rH   rI   rk      s   
 rk   c                   @   s6   e Zd ZU eed< eed< ee ed< ee ed< dS )FrameNavigatedEventurlr@   newDocumentri   N)rC   rD   rE   rF   rG   r
   rk   rH   rH   rH   rI   rm      s
   
 rm   base_url
url_stringmatchwebsocket_urlc                 C   sD   |sdS t |trtt| ||}t |trt||S ||S )NT)rZ   rF   recompileresolve_glob_to_regex_patternr   boolsearch)rp   rq   rr   rs   rH   rH   rI   url_matches   s   


ry   globc                 C   s   |rt | } t| |}t|S N)to_websocket_base_urlresolve_glob_baser   )rp   rz   rs   rH   rH   rI   rv      s   
rv   c                 C   s&   | d urt d| rt dd| } | S )Nz
^https?://z^httpws)rt   rr   sub)rp   rH   rH   rI   r|      s   r|   c                    sz  |d dkr|S i  dt dt dt f fdd}|dd	}|d
s6|ds6|ds6|ds6|dr8|S g }t|dD ]W\}}|dv rO|| qA|dkra|dra|||d qA|d	}|dkrw|||d| d qA||d | d| d}|||d  d| d}|||  qAd|}	t	| d ur| nd|	}
 
 D ]\}}|
||d}
qt|
S )Nr   *originalreplacementrP   c                    s   t | dkrdS |  |< |S )Nr    )len)r   r   	token_maprH   rI   	map_token   s   z$resolve_glob_base.<locals>.map_tokenz\\??zabout:zdata:zchrome:zedge:zfile:/).z..r   :zhttp:z$_z_$z?$_r      )rF   replace
startswith	enumeratesplitappendendswithfindjoinr   itemsensure_trailing_slash)rp   rr   r   processed_partsindextokenquestion_index
new_prefix
new_suffixrelative_pathresolved_urlr   r   rH   r   rI   r}      sF   


r}   rn   c                 C   sv   | j ddd}t|dkrd|d  }n| }t|dd}t|dkr*|j|d d	}|jd
kr9|jdd}| } | S )Nz://r   )maxsplit   zhttp://T)allow_fragmentsr   )schemer   r   rL   )r   r   r   _replacerL   geturl)rn   r   parsable_urlparsedrH   rH   rI   r      s   
r   c                   @   sV   e Zd ZU ed ed< ee ed< ee ed< ee ed< ed ed< ee ed< d	S )
HarLookupResult)ri   redirectfulfillnoentryactionr?   redirectURLstatusr   headersbodyN)rC   rD   rE   r	   rG   r
   rF   rj   rH   rH   rH   rI   r      s   
 r   i0u  i  ic                   @   s   e Zd Zeddee defddZded  ddfddZdee ddfd	d
ZddedefddZ	dee ddfddZ
dee fddZdee fddZddedefddZdS )TimeoutSettingsNtimeoutrP   c                 C   s   | d ur| S t S r{   )1DEFAULT_PLAYWRIGHT_LAUNCH_TIMEOUT_IN_MILLISECONDS)r   rH   rH   rI   launch_timeout  s
   zTimeoutSettings.launch_timeoutparentc                 C   s   || _ d | _d | _d S r{   )_parent_default_timeout_default_navigation_timeout)selfr   rH   rH   rI   __init__  s   
zTimeoutSettings.__init__c                 C   
   || _ d S r{   r   r   r   rH   rH   rI   set_default_timeout  s   
z#TimeoutSettings.set_default_timeoutc                 C   s0   |d ur|S | j d ur| j S | jr| j S tS r{   )r   r   r   *DEFAULT_PLAYWRIGHT_TIMEOUT_IN_MILLISECONDSr   rH   rH   rI   r     s   

zTimeoutSettings.timeoutnavigation_timeoutc                 C   r   r{   r   )r   r   rH   rH   rI   set_default_navigation_timeout'  s   
z.TimeoutSettings.set_default_navigation_timeoutc                 C      | j S r{   r   r   rH   rH   rI   default_navigation_timeout,     z*TimeoutSettings.default_navigation_timeoutc                 C   r   r{   r   r   rH   rH   rI   default_timeout/  r   zTimeoutSettings.default_timeoutc                 C   s@   |d ur|S | j d ur| j S | jd ur| jS | jr| j S tS r{   )r   r   r   r   r   r   rH   rH   rI   r   2  s   


z"TimeoutSettings.navigation_timeoutr{   )rC   rD   rE   staticmethodr
   floatr   r   r   r   r   r   r   r   rH   rH   rH   rI   r     s    	
r   extbc                 C   s   t t| ddt|dS )Nr   r   )r?   r@   rA   )r>   rF   r   	traceback	format_tb)r   r   rH   rH   rI   serialize_error>  s   r   ri   logc                 C   s\   t }| ddkrt}| ddkrt}|sd}|t| d | }| d |_| d |_|S )Nr@   r   r   r   r?   rA   )r   getr   r   patch_error_message_name_stack)ri   r   base_error_classexcrH   rH   rI   parse_errorD  s   

r   r?   c                 C   s8   t d| }|rt|d|d } | dd} | S )Nz(\w+)(: expected .*)r   r   zPass { acceptDownloads: true }zPass 'accept_downloads=True')rt   rr   to_snake_casegroupr   )r?   rr   rH   rH   rI   r   R  s   r   argsc                 C   sN   i }| D ] }|dkrq| | d ur$t | | ts| | nt| | ||< q|S )Nr   )rZ   r   locals_to_params)r   copykeyrH   rH   rI   r   \  s   

r   c                   C   s   t t d S )Ni  )mathfloortime	monotonicrH   rH   rH   rI   monotonic_timej  s   r   c                   @   s(   e Zd ZU ded< ded< d	ddZdS )
RouteHandlerInvocationasyncio.Futurecompleter   routerP   Nc                 C   s   || _ || _d S r{   )r   r   )r   r   r   rH   rH   rI   r   r  s   
zRouteHandlerInvocation.__init__)r   r   r   r   rP   N)rC   rD   rE   rG   r   rH   rH   rH   rI   r   n  s   
 r   c                   @   s   e Zd Z	ddee dedededee f
ddZ	d	ed
efddZ
ddd
efddZddd
efddZded d
dfddZed
efddZeded  d
eeeef  fddZdS )RouteHandlerNrp   rn   handleris_synctimesc                 C   s@   || _ || _|| _|r|ntj| _d| _|| _d| _t	 | _
d S )Nr   F)	_base_urlrn   r   r   inf_times_handled_count_is_sync_ignore_exceptionset_active_invocations)r   rp   rn   r   r   r   rH   rH   rI   r   x  s   zRouteHandler.__init__request_urlrP   c                 C   s   t | j|| jS r{   )ry   r   rn   )r   r   rH   rH   rI   matches     zRouteHandler.matchesr   r   c              
      s   t t  |}| j| zUz| |I d H W W |jd  | j	| S  t
ye } z2| jrFW Y d }~W |jd  | j	| dS t|r_| jsOdnd}t|dt| d| d|d }~ww |jd  | j	| w )NFzawait r   "z3" while running route callback.
Consider awaiting `zkpage.unroute_all(behavior='ignoreErrors')`
before the end of the test to ignore remaining routes in flight.)r   asyncioget_running_loopcreate_futurer   add_handle_internalr   
set_resultremove	Exceptionr   r   r   r   rF   )r   r   handler_invocationeoptional_async_prefixrH   rH   rI   handle  s2   zRouteHandler.handlec                    s     } jd7  _jr+j  d fdd}t|}|   I d H  nj}|r<t	
|I d H  |I d H S )Nr   rP   c               
      sP   z j  d  W d S  ty' }  z |  W Y d } ~ d S d } ~ ww r{   )r   rl   r   r   set_exception)r   handler_finished_futurer   r   rH   rI   _handler  s   z/RouteHandler._handle_internal.<locals>._handlerrP   N)_start_handlingr   r   _loopr   r   switchr   rl   r   ensure_future)r   r   handled_futurer  gcoro_or_futurerH   r  rI   r     s   
	
zRouteHandler._handle_internalbehavior)ignoreErrorswaitc                    sL   |dkr
d| _ d S g }| jD ]}|jjs||j qtj| I d H  d S )Nr  T)r   r   r   
_did_throwr   r   r   gather)r   r  tasks
activationrH   rH   rI   stop  s   

zRouteHandler.stopc                 C   s   | j d | jkS )Nr   )r   r   r   rH   rH   rI   will_expire  s   zRouteHandler.will_expirehandlersc                 C   sp   g }d}| D ](}t |jtr|d|ji qt |jtjr,||jjt|jd qd}q|r6ddigS |S )NFrz   )regexSource
regexFlagsTz**/*)rZ   rn   rF   r   rt   r   r[   r   )r  patternsallr   rH   rH   rI   prepare_interception_patterns  s   
z*RouteHandler.prepare_interception_patternsr{   )rC   rD   rE   r
   rF   URLMatchRouteHandlerCallbackrw   rj   r   r   r  r   r	   r  propertyr  r   r   r   r  rH   rH   rH   rI   r   w  s2    
r   z(((?<=[a-z0-9])[A-Z]|(?!^)[A-Z](?=[a-z]))r@   c                 C   s   t d|  S )Nz_\1)to_snake_case_regexr   lower)r@   rH   rH   rI   r     r   r   rL   c                 C   s2   t j| st |  } t jt j| dd d S )NT)exist_ok)osrL   isabsr   cwdmakedirsdirnamer   rH   rH   rI   make_dirs_for_file  s   r)  filedatac                    s0   d fdd}t  }|d |I d H  d S )NrP   c                     sH   t t tr	dnd} |   W d    d S 1 sw   Y  d S )Nwwb)openrZ   rF   writefhr+  r*  rH   rI   inner  s   "zasync_writefile.<locals>.innerr  )r   r   run_in_executor)r*  r+  r3  looprH   r2  rI   async_writefile  s   r6  c                    s.   dt f fdd}t }|d |I d H S )NrP   c                     s6   t  d} |  W  d    S 1 sw   Y  d S )Nrb)r.  readr0  r*  rH   rI   r3    s   $zasync_readfile.<locals>.inner)bytesr   r   r4  )r*  r3  r5  rH   r9  rI   async_readfile  s   r;  Tobjc                 C   s   t | drtt| jS | S )N	_impl_obj)hasattrr   r   r>  )r=  rH   rH   rI   to_impl	  s   
r@  c                 C   s8   | sd S g }|   D ]\}}|t|t|d q
|S )N)r@   rB   )r   r   r   rF   )r=  rh   r   rB   rH   rH   rI   object_to_array  s   rA  rB   c                 C   s"   t | tod| v od| v od| v S )Nr@   mimeTypebuffer)rZ   dict)rB   rH   rH   rI   is_file_payload  s   
rE  z^(text\/.*?|application\/(json|(x-)?javascript|xml.*?|ecmascript|graphql|x-www-form-urlencoded)|image\/svg(\+xml)?|application\/.*?(\+json|\+xml))(;\s*charset=.*)?$	mime_typec                 C   s   t t| S r{   )rw   TEXTUAL_MIME_TYPErr   )rF  rH   rH   rI   is_textual_mime_type&  s   rH  r{   )jr   r   r$  rt   r   r   pathlibr   typesr   typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   urllib.parser   r    playwright._impl._api_structuresr   playwright._impl._errorsr   r   r   r   r   playwright._impl._globr   playwright._impl._greenletsr   playwright._impl._str_utilsr   r   playwright._impl._networkr   r   r   r    rF   rw   r  URLMatchRequestURLMatchResponser  WebSocketRouteHandlerCallbackColorSchemeForcedColorsContrastReducedMotionDocumentLoadStateKeyboardModifierMouseButtonServiceWorkersPolicyHarModerN   RouteFromHarNotFoundPolicyr>   rK   r`   ra   re   rk   rm   r   Envry   rv   r|   r}   r   r   r   r   PLAYWRIGHT_MAX_DEADLINEr   r   r   r   r   r   rj   r   r   r   ru   r!  r   r)  r:  r6  r;  r<  r@  rA  rE  rG  rH  rH   rH   rH   rI   <module>   s   <	

	8	2
	
p&				