a
    ҏi-                     @   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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 d dlmZ d dlmZ d dlmZ d dlmZm Z m!Z! d d	l"m#Z# ej$d
krd dlm%Z%m&Z& nd dl'm%Z%m&Z& er*d dlm(Z( d dl)m*Z*m+Z+m,Z, ee-ee- ee-ge.f f Z/ee-ee- edge.f f Z0ee-ee- edge.f f Z1eedgef eddgef f Z2e%d Z3e%d Z4e%d Z5e%d Z6e%d Z7e%d Z8e%d Z9e%d Z:e%d Z;e%d Z<G dd de&ddZ=G dd  d e&ddZ>eee-ef d!d"d#Z?G d$d% d%e&Z@G d&d' d'e&ddZAG d(d) d)e&ZBG d*d+ d+e&ZCee-ee-eDe.f f ZEG d,d- d-ZFG d.d/ d/e&ddZGG d0d1 d1ZHeIee e=d2d3d4ZJe=ed5d6d7ZKee- ee- d8d9d:ZLeed;d<d=ZMeNd>d?d@ZOG dAdB dBZPeQdCZRe-e-dDdEdFZSee
e-f ddGdHdIZTee-e
f ee-eUf ddJdKdLZVee-e
f eUdMdNdOZWedPZXeXeXdQdRdSZYee eee  dQdTdUZZee e.dVdWdXZ[eQdYZ\e-e.dZd[d\Z]dS )]    N)Path)TracebackType)TYPE_CHECKINGAnyCallable	CoroutineDictListOptionalPatternTypeVarUnioncast)urljoin)greenlet)	NameValue)ErrorTargetClosedErrorTimeoutError)escape_regex_flags)      )Literal	TypedDict)HeadersArray)RequestResponseRouter   r   r   )Zdarklightno-preferencenull)activenoner    )r   r    reduce)commitZdomcontentloadedloadZnetworkidle)ZAltZControlZMetaZShift)leftZmiddleright)Zallowblock)fullZ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    r9   r9   H/home/Claro/venv/lib/python3.9/site-packages/playwright/_impl/_helper.pyr/   K   s   
r/   F)totalc                   @   s"   e Zd ZU eed< ee ed< dS )HarRecordingMetadatapathcontentN)r4   r5   r6   r7   r8   r
   HarContentPolicyr9   r9   r9   r:   r<   R   s   
r<   )paramsreturnc                 C   s   dt | d i}d| v rX| d }t|t r2||d< t|trR|j|d< t||d< | d= d| v rr| d |d< | d= d }d }d	| v r| d	 }| d	= d
| v r| d
 }| d
= |p|rdnd }|r||d< |S )Nr=   ZrecordHarPathZrecordHarUrlFilterZurlGlobZurlRegexSourceZurlRegexFlagsZrecordHarModemodeZrecordHarContentZrecordHarOmitContentr,   r>   )r7   
isinstancer   patternr   )r@   Z
out_paramsoptZnew_content_apiZold_content_apir>   r9   r9   r:   prepare_record_har_optionsW   s0    


rF   c                   @   s&   e Zd ZU eed< eed< eed< dS )ParsedMessageParamstypeguidZinitializerN)r4   r5   r6   r7   r8   r   r9   r9   r9   r:   rG   t   s   
rG   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idrI   methodr@   resulterrorN)	r4   r5   r6   intr8   r7   rG   r   r/   r9   r9   r9   r:   rJ   z   s   
rJ   c                   @   s   e Zd ZU ee ed< dS )DocumentrequestN)r4   r5   r6   r
   r   r8   r9   r9   r9   r:   rP      s   
rP   c                   @   s6   e Zd ZU eed< eed< ee ed< ee ed< dS )FrameNavigatedEventurlr1   ZnewDocumentrN   N)r4   r5   r6   r7   r8   r
   rP   r9   r9   r9   r:   rR      s   
rR   c                   @   s6   e Zd Zeedf eddddZeedddZdS )
URLMatcherN)base_urlmatchrA   c                 C   sh   d | _ d | _t|trF|r.|ds.t||}t|}t	|| _nt|t
rX|| _n|| _ || _d S )N*)	_callback
_regex_objrC   r7   
startswithr   fnmatch	translaterecompiler   rV   )selfrU   rV   regexr9   r9   r:   __init__   s    



zURLMatcher.__init__)rS   rA   c                 C   s,   | j r|  |S | jr(tt| j|S dS )NF)rX   rY   r   boolsearch)r_   rS   r9   r9   r:   matches   s
    
zURLMatcher.matches)	r4   r5   r6   r   r7   URLMatchra   rb   rd   r9   r9   r9   r:   rT      s   rT   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)rN   redirectZfulfillZnoentryactionr0   ZredirectURLstatusr   headersbodyN)r4   r5   r6   r   r8   r
   r7   rO   r9   r9   r9   r:   rf      s   
rf   c                   @   s   e Zd Zed  ddddZee ddddZdeeddd	Zee dd
ddZee dddZ	ee dddZ
edddZdS )TimeoutSettingsN)parentrA   c                 C   s   || _ d | _d | _d S N)_parent_default_timeout_default_navigation_timeout)r_   rm   r9   r9   r:   ra      s    zTimeoutSettings.__init__)timeoutrA   c                 C   s
   || _ d S rn   rp   r_   rr   r9   r9   r:   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 dS Ni0u  )rp   ro   rr   rt   r9   r9   r:   rr      s    

zTimeoutSettings.timeout)navigation_timeoutrA   c                 C   s
   || _ d S rn   rq   )r_   rw   r9   r9   r:   set_default_navigation_timeout   s    z.TimeoutSettings.set_default_navigation_timeoutrA   c                 C   s   | j S rn   rx   r_   r9   r9   r:   default_navigation_timeout   s    z*TimeoutSettings.default_navigation_timeoutc                 C   s   | j S rn   rs   r{   r9   r9   r:   default_timeout   s    zTimeoutSettings.default_timeoutc                 C   s$   | j d ur| j S | jr | j S dS rv   )rq   ro   rw   r{   r9   r9   r:   rw      s
    

z"TimeoutSettings.navigation_timeout)N)r4   r5   r6   r
   ra   floatru   rr   ry   r|   r}   rw   r9   r9   r9   r:   rl      s   
rl   )extbrA   c                 C   s   t t| ddt|dS )Nr    )r0   r1   r2   )r/   r7   join	traceback	format_tb)r   r   r9   r9   r:   serialize_error   s    r   )rN   rA   c                 C   sX   t }| ddkrt}| ddkr(t}|ttt| d}| d |_| d |_|S )Nr1   r   r   r0   r2   )	r   getr   r   r   r7   patch_error_message_name_stack)rN   Zbase_error_classexcr9   r9   r:   parse_error   s    

r   )r0   rA   c                 C   sP   | d u rd S t d| }|r4t|d|d } | d us@J | dd} | S )Nz(\w+)(: expected .*)      zPass { acceptDownloads: true }zPass { accept_downloads: True })r]   rV   to_snake_casegroupreplace)r0   rV   r9   r9   r:   r      s    r   )argsrA   c                 C   s4   i }| D ]&}|dkrq| | d ur| | ||< q|S )Nr_   r9   )r   copykeyr9   r9   r:   locals_to_params   s    r   rz   c                   C   s   t t d S )Ni  )mathfloortime	monotonicr9   r9   r9   r:   monotonic_time   s    r   c                   @   s|   e Zd Zdeeeee dddZe	edddZ
ded	d
dZeedddZeed  eee	e	f  dddZdS )RouteHandlerN)matcherhandleris_synctimesc                 C   s,   || _ || _|r|ntj| _d| _|| _d S )Nr   )r   r   r   inf_times_handled_count_is_sync)r_   r   r   r   r   r9   r9   r:   ra     s
    zRouteHandler.__init__)request_urlrA   c                 C   s   | j |S rn   )r   rd   )r_   r   r9   r9   r:   rd     s    zRouteHandler.matchesr   )routerA   c                    s`     }g  d d fdd}jr:t|}|  n|  tj|g R  I d H ^}}|S )Nrz   c                     sT    j d7  _ ttddgtttf f jj} t	| rP 
t|  d S )Nr   r   r   )r   r   r   r   r   r   r   rQ   inspectiscoroutineappendasyncioZcreate_task)rM   Zhandler_taskr   r_   r9   r:   impl  s    
z!RouteHandler.handle.<locals>.impl)Z_start_handlingr   r   switchr   Zgather)r_   r   Zhandled_futurer   gZhandled_r9   r   r:   handle  s    

zRouteHandler.handlerz   c                 C   s   | j d | jkS )Nr   )r   r   r{   r9   r9   r:   will_expire,  s    zRouteHandler.will_expire)handlersrA   c                 C   sz   g }d}| D ]Z}t |jjtr2|d|jji qt |jjtjrb||jjjt	|jjd qd}q|rvddigS |S )NFglob)ZregexSourceZ
regexFlagsTz**/*)
rC   r   rV   r7   r   rY   r]   r   rD   r   )r   patternsallr   r9   r9   r:   prepare_interception_patterns0  s    

z*RouteHandler.prepare_interception_patterns)N)r4   r5   r6   rT   RouteHandlerCallbackrb   r
   rO   ra   r7   rd   r   propertyr   staticmethodr	   r   r   r9   r9   r9   r:   r     s    r   z(((?<=[a-z0-9])[A-Z]|(?!^)[A-Z](?=[a-z])))r1   rA   c                 C   s   t d|  S )Nz_\1)to_snake_case_regexsublower)r1   r9   r9   r:   r   J  s    r   )r=   rA   c                 C   s2   t j| st |  } t jt j| dd d S )NT)exist_ok)osr=   isabsr   cwdmakedirsdirname)r=   r9   r9   r:   make_dirs_for_fileN  s    r   )filedatarA   c                    s2   d d fdd}t  }|d |I d H  d S )Nrz   c                     sF   t t trdnd} |   W d    n1 s80    Y  d S )Nwwb)openrC   r7   writefhr   r   r9   r:   innerU  s    zasync_writefile.<locals>.inner)r   get_running_looprun_in_executor)r   r   r   loopr9   r   r:   async_writefileT  s    r   )r   rA   c                    s,   t d fdd}t }|d |I d H S )Nrz   c                     s6   t  d} |  W  d    S 1 s(0    Y  d S )Nrb)r   readr   r   r9   r:   r   ^  s    zasync_readfile.<locals>.inner)bytesr   r   r   )r   r   r   r9   r   r:   async_readfile]  s    r   T)objrA   c                 C   s   t | drtt| jS | S )N	_impl_obj)hasattrr   r   r   )r   r9   r9   r:   to_impli  s    
r   c                 C   s8   | sd S g }|   D ]\}}|t|t|d q|S )N)r1   r3   )itemsr   r   r7   )r   rM   r   r3   r9   r9   r:   object_to_arrayo  s    r   )r3   rA   c                 C   s"   t | to d| v o d| v o d| v S )Nr1   ZmimeTypebuffer)rC   dict)r3   r9   r9   r:   is_file_payloadx  s    
r   z^(text\/.*?|application\/(json|(x-)?javascript|xml.*?|ecmascript|graphql|x-www-form-urlencoded)|image\/svg(\+xml)?|application\/.*?(\+json|\+xml))(;\s*charset=.*)?$)	mime_typerA   c                 C   s   t t| S rn   )rb   TEXTUAL_MIME_TYPErV   )r   r9   r9   r:   is_textual_mime_type  s    r   )^r   r[   r   r   r   r]   sysr   r   pathlibr   typesr   typingr   r   r   r   r   r	   r
   r   r   r   r   urllib.parser   r   Z playwright._impl._api_structuresr   Zplaywright._impl._errorsr   r   r   Zplaywright._impl._str_utilsr   version_infor   r   Ztyping_extensionsr   Zplaywright._impl._networkr   r   r   r7   rb   re   ZURLMatchRequestZURLMatchResponser   ZColorSchemeZForcedColorsZReducedMotionZDocumentLoadStateZKeyboardModifierZMouseButtonZServiceWorkersPolicyZHarModer?   ZRouteFromHarNotFoundPolicyr/   r<   rF   rG   rJ   rP   rR   r~   ZEnvrT   rf   rl   	Exceptionr   r   r   r   rO   r   r   r^   r   r   r   r   r   r   r   r   r   r   r   r   r9   r9   r9   r:   <module>   s   4
		%
C
"				