o
    $[i7                     @   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 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e/f f Z0ee.ee. edge/f f Z1ee.ee. edge/f f Z2eedgef eddgef f Z3edgef Z4ed Z5ed Z6ed Z7ed Z8ed Z9ed Z:ed Z;ed Z<ed Z=ed Z>G dd deddZ?G dd  d eddZ@d!ed"ee.ef fd#d$ZAG d%d& d&eZBG d'd( d(eddZCG d)d* d*eZDG d+d, d,eZEee.ee.eFe/f f ZGd-ee. d.e.d/ee0 d"e/fd0d1ZHG d2d3 d3eddZIG d4d5 d5ZJd6eKd7ee	 d"e?fd8d9ZLddd:e?d;ee. d"efd<d=ZMd>e.d"e.fd?d@ZNdAed"efdBdCZOd"ePfdDdEZQG dFdG dGZRG dHdI dIZSeTdJZUdKe.d"e.fdLdMZVdNeee.f d"dfdOdPZWdQee.ef dRee.eXf d"dfdSdTZYdQee.ef d"eXfdUdVZZedWZ[dXe[d"e[fdYdZZ\dXee d"eee  fd[d\Z]d]ee d"e/fd^d_Z^eTd`Z_dae.d"e/fdbdcZ`dS )e    N)Path)TracebackType)TYPE_CHECKINGAnyCallableDictListLiteralOptionalPatternSet	TypedDictTypeVarUnioncast)urljoin)	NameValue)ErrorTargetClosedErrorTimeoutErroris_target_closed_errorrewrite_error)glob_to_regex)RouteGreenlet)escape_regex_flags)HeadersArray)RequestResponseRouteWebSocketRouter   r   r   r   )darklightno-preferencenull)activenoner#   )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    rF   rF   X/var/www/html/flask_server/venv/lib/python3.10/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)rA   rB   rC   rD   rE   r
   HarContentPolicyrF   rF   rF   rG   rI   R   s   
 rI   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 )NrJ   recordHarPathrecordHarUrlFilterurlGloburlRegexSourceurlRegexFlagsrecordHarModemoderecordHarContentrecordHarOmitContentr9   rK   )rD   
isinstancer   patternr   )rM   
out_paramsoptnew_content_apiold_content_apirK   rF   rF   rG   prepare_record_har_optionsW   s0   


r^   c                   @   s&   e Zd ZU eed< eed< eed< dS )ParsedMessageParamstypeguidinitializerN)rA   rB   rC   rD   rE   r   rF   rF   rF   rG   r_   t   s   
 r_   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idra   methodrM   resulterrorN)	rA   rB   rC   intrE   rD   r_   r   r<   rF   rF   rF   rG   rc   z   s   
 rc   c                   @   s   e Zd ZU ee ed< dS )DocumentrequestN)rA   rB   rC   r
   r   rE   rF   rF   rF   rG   ri      s   
 ri   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>   newDocumentrg   N)rA   rB   rC   rD   rE   r
   ri   rF   rF   rF   rG   rk      s
   
 rk   base_url
url_stringmatchc                 C   s   |sdS t |tr+|d dkr+| r$td| r$td|r$tdd| } | r+t| |}t |tr4t|}t |tr@t|	|S ||S )NTr   *z
^https?://z^wss?://z^httpws)
rX   rD   rerp   subr   r   r   boolsearch)rn   ro   rp   rF   rF   rG   url_matches   s"   




rw   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)rg   redirectfulfillnoentryactionr=   redirectURLstatusr   headersbodyN)rA   rB   rC   r	   rE   r
   rD   rh   rF   rF   rF   rG   rx      s   
 rx   c                   @   s   e Z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efddZdS )TimeoutSettingsparentrN   Nc                 C   s   || _ d | _d | _d S N)_parent_default_timeout_default_navigation_timeout)selfr   rF   rF   rG   __init__   s   
zTimeoutSettings.__init__timeoutc                 C   
   || _ d S r   r   r   r   rF   rF   rG   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  )r   r   r   r   rF   rF   rG   r      s   

zTimeoutSettings.timeoutnavigation_timeoutc                 C   r   r   r   )r   r   rF   rF   rG   set_default_navigation_timeout   s   
z.TimeoutSettings.set_default_navigation_timeoutc                 C      | j S r   r   r   rF   rF   rG   default_navigation_timeout      z*TimeoutSettings.default_navigation_timeoutc                 C   r   r   r   r   rF   rF   rG   default_timeout   r   zTimeoutSettings.default_timeoutc                 C   s$   | j d ur| j S | jr| j S dS r   )r   r   r   r   rF   rF   rG   r      s
   

z"TimeoutSettings.navigation_timeoutr   )rA   rB   rC   r
   r   floatr   r   r   r   r   r   rF   rF   rF   rG   r      s    	
r   extbc                 C   s   t t| ddt|dS )Nr    )r=   r>   r?   )r<   rD   join	traceback	format_tb)r   r   rF   rF   rG   serialize_error   s   r   rg   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=   r?   )r   getr   r   patch_error_message_name_stack)rg   r   base_error_classexcrF   rF   rG   parse_error   s   

r   r=   c                 C   s8   t d| }|rt|d|d } | dd} | S )Nz(\w+)(: expected .*)      zPass { acceptDownloads: true }zPass 'accept_downloads=True')rs   rp   to_snake_casegroupreplace)r=   rp   rF   rF   rG   r      s   r   argsc                 C   sN   i }| D ] }|dkrq| | d ur$t | | ts| | nt| | ||< q|S )Nr   )rX   r   locals_to_params)r   copykeyrF   rF   rG   r      s   

r   c                   C   s   t t d S )Ni  )mathfloortime	monotonicrF   rF   rF   rG   monotonic_time  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   routerN   Nc                 C   s   || _ || _d S r   )r   r   )r   r   r   rF   rF   rG   r   	  s   
zRouteHandlerInvocation.__init__)r   r   r   r   rN   N)rA   rB   rC   rE   r   rF   rF   rF   rG   r     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 )RouteHandlerNrn   rl   handleris_synctimesc                 C   s@   || _ || _|| _|r|ntj| _d| _|| _d| _t	 | _
d S )Nr   F)	_base_urlrl   r   r   inf_times_handled_count_is_sync_ignore_exceptionset_active_invocations)r   rn   rl   r   r   r   rF   rF   rG   r     s   zRouteHandler.__init__request_urlrN   c                 C   s   t | j|| jS r   )rw   r   rl   )r   r   rF   rF   rG   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   rD   )r   r   handler_invocationeoptional_async_prefixrF   rF   rG   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   rN   c               
      sP   z j  d  W d S  ty' }  z |  W Y d } ~ d S d } ~ ww r   )r   rj   r   r   set_exception)r   handler_finished_futurer   r   rF   rG   _handlerB  s   z/RouteHandler._handle_internal.<locals>._handlerrN   N)_start_handlingr   r   _loopr   r   switchr   rj   r   ensure_future)r   r   handled_futurer   gcoro_or_futurerF   r   rG   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_throwappendr   r   gather)r   r   tasks
activationrF   rF   rG   stopU  s   

zRouteHandler.stopc                 C   s   | j d | jkS )Nr   )r   r   r   rF   rF   rG   will_expirec  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 )NFglob)regexSource
regexFlagsTz**/*)rX   rl   rD   r   rs   r   rY   r   )r   patternsallr   rF   rF   rG   prepare_interception_patternsg  s   
z*RouteHandler.prepare_interception_patternsr   )rA   rB   rC   r
   rD   URLMatchRouteHandlerCallbackru   rh   r   r   r   r   r	   r   propertyr   staticmethodr   r   r   rF   rF   rF   rG   r     s2    
r   z(((?<=[a-z0-9])[A-Z]|(?!^)[A-Z](?=[a-z]))r>   c                 C   s   t d|  S )Nz_\1)to_snake_case_regexrt   lower)r>   rF   rF   rG   r     r   r   rJ   c                 C   s2   t j| st |  } t jt j| dd d S )NT)exist_ok)osrJ   isabsr   cwdmakedirsdirname)rJ   rF   rF   rG   make_dirs_for_file  s   r   filedatac                    s0   d fdd}t  }|d |I d H  d S )NrN   c                     sH   t t tr	dnd} |   W d    d S 1 sw   Y  d S )Nwwb)openrX   rD   writefhr   r   rF   rG   inner  s   "zasync_writefile.<locals>.innerr   )r   r   run_in_executor)r   r   r  looprF   r  rG   async_writefile  s   r  c                    s.   dt f fdd}t }|d |I d H S )NrN   c                     s6   t  d} |  W  d    S 1 sw   Y  d S )Nrb)r  readr  r   rF   rG   r    s   $zasync_readfile.<locals>.inner)bytesr   r   r	  )r   r  r
  rF   r  rG   async_readfile  s   r  Tobjc                 C   s   t | drtt| jS | S )N	_impl_obj)hasattrr   r   r  )r  rF   rF   rG   to_impl  s   
r  c                 C   s8   | sd S g }|   D ]\}}|t|t|d q
|S )N)r>   r@   )itemsr   r   rD   )r  rf   r   r@   rF   rF   rG   object_to_array  s   r  r@   c                 C   s"   t | tod| v od| v od| v S )Nr>   mimeTypebuffer)rX   dict)r@   rF   rF   rG   is_file_payload  s   
r  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   )ru   TEXTUAL_MIME_TYPErp   )r  rF   rF   rG   is_textual_mime_type  s   r  r   )ar   r   r   rs   r   r   pathlibr   typesr   typingr   r   r   r   r   r	   r
   r   r   r   r   r   r   urllib.parser    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   rD   ru   r   URLMatchRequestURLMatchResponser   WebSocketRouteHandlerCallbackColorSchemeForcedColorsReducedMotionDocumentLoadStateKeyboardModifierMouseButtonServiceWorkersPolicyHarModerL   RouteFromHarNotFoundPolicyr<   rI   r^   r_   rc   ri   rk   r   Envrw   rx   r   r   r   r   r   r   rh   r   r   r   compiler   r   r   r  r  r  r  r  r  r  r  r  rF   rF   rF   rG   <module>   s   <	
	%
	
p&				