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rôd 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´|r²d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
"				ÿ