o
    AhJ                     @   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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e0ee0 ee0ge1f f Z2ee0ee0 edge1f f Z3ee0ee0 edge1f f Z4eedgef eddgef f Z5edgef 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@ed ZAG dd deddZBG d d! d!eddZCd"ed#ee0ef fd$d%ZDG d&d' d'eZEG d(d) d)eddZFG d*d+ d+eZGG d,d- d-eZHee0ee0eIe1f f ZJ	dvd.ee0 d/e0d0ee2 d1e1d#e1f
d2d3ZK	dvd.ee0 d4e0d1e1d#e0fd5d6ZLd.ee0 d#ee0 fd7d8ZMd.ee0 d0e0d#e0fd9d:ZNd.ee0 d;e0d#ee0ee0 f fd<d=ZOd>e0d#e0fd?d@ZPG dAdB dBeddZQdCZRdDZSdEZTG dFdG dGZUdHeVdIee	 d#eBfdJdKZWdvdLeBdMee0 d#efdNdOZXdPe0d#e0fdQdRZYdSed#efdTdUZZd#e[fdVdWZ\G dXdY dYZ]G dZd[ d[Z^e_d\Z`d]e0d#e0fd^d_Zad`eee0f d#dfdadbZbdcee0ef ddee0ecf d#dfdedfZddcee0ef d#ecfdgdhZeediZfdjefd#effdkdlZgdjee d#eee  fdmdnZhdoee d#e1fdpdqZie_drZjdse0d#e1fdtduZkdS )w    N)Path)TracebackType)TYPE_CHECKINGAnyCallableDictListLiteralOptionalPatternSetTuple	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    rI   rI   Y/var/www/html/openai_agents/venv/lib/python3.10/site-packages/playwright/_impl/_helper.pyr?   M   s
   
 r?   F)totalc                   @   s"   e Zd ZU eed< ee ed< dS )HarRecordingMetadatapathcontentN)rD   rE   rF   rG   rH   r
   HarContentPolicyrI   rI   rI   rJ   rL   T   s   
 rL   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 )NrM   recordHarPathrecordHarUrlFilterurlGloburlRegexSourceurlRegexFlagsrecordHarModemoderecordHarContentrecordHarOmitContentr<   rN   )rG   
isinstancer   patternr   )rP   
out_paramsoptnew_content_apiold_content_apirN   rI   rI   rJ   prepare_record_har_optionsY   s0   


ra   c                   @   s&   e Zd ZU eed< eed< eed< dS )ParsedMessageParamstypeguidinitializerN)rD   rE   rF   rG   rH   r   rI   rI   rI   rJ   rb   v   s   
 rb   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idrd   methodrP   resulterrorN)	rD   rE   rF   intrH   rG   rb   r   r?   rI   rI   rI   rJ   rf   |   s   
 rf   c                   @   s   e Zd ZU ee ed< dS )DocumentrequestN)rD   rE   rF   r
   r   rH   rI   rI   rI   rJ   rl      s   
 rl   c                   @   s6   e Zd ZU eed< eed< ee ed< ee ed< dS )FrameNavigatedEventurlrA   newDocumentrj   N)rD   rE   rF   rG   rH   r
   rl   rI   rI   rI   rJ   rn      s
   
 rn   base_url
url_stringmatchwebsocket_urlc                 C   sD   |sdS t |trtt| ||}t |trt||S ||S )NT)r[   rG   recompileresolve_glob_to_regex_patternr   boolsearch)rq   rr   rs   rt   rI   rI   rJ   url_matches   s   


rz   globc                 C   s   |rt | } t| |}t|S N)to_websocket_base_urlresolve_glob_baser   )rq   r{   rt   rI   rI   rJ   rw      s   
rw   c                 C   s&   | d urt d| rt dd| } | S )Nz
^https?://z^httpws)ru   rs   sub)rq   rI   rI   rJ   r}      s   r}   c                    s  |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 ]\}}|o||v }|
||r| n|d}
qt|
S )Nr   *originalreplacementrQ   c                    s   t | dkrdS |  |< |S )Nr    )len)r   r   	token_maprI   rJ   	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?$_   )rG   replace
startswith	enumeratesplitappendendswithfindjoinresolve_base_urlitemslowerensure_trailing_slash)rq   rs   r   processed_partsindextokenquestion_index
new_prefix
new_suffixrelative_pathresolved_urlcase_insensitive_partr   r   	normalizerI   r   rJ   r~      sL   


r~   	given_urlc                 C   st   z,t | d ur| nd|}t|}|jpd}|jr |d|j 7 }|j d| }||fW S  ty9   |d f Y S w )Nr   r   ://)r   r   hostnameportscheme	Exception)rq   r   resolvedparsedhostname_portcase_insensitive_prefixrI   rI   rJ   r      s   
r   ro   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 )Nr   r   )maxsplit   zhttp://T)allow_fragmentsr   )r   r   r   rM   )r   r   r   _replacerM   geturl)ro   r   parsable_urlr   rI   rI   rJ   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)rj   redirectfulfillnoentryactionr@   redirectURLstatusr   headersbodyN)rD   rE   rF   r	   rH   r
   rG   rk   rI   rI   rI   rJ   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timeoutrQ   c                 C   s   | d ur| S t S r|   )1DEFAULT_PLAYWRIGHT_LAUNCH_TIMEOUT_IN_MILLISECONDS)r   rI   rI   rJ   launch_timeout$  s
   zTimeoutSettings.launch_timeoutparentc                 C   s   || _ d | _d | _d S r|   )_parent_default_timeout_default_navigation_timeout)selfr   rI   rI   rJ   __init__,  s   
zTimeoutSettings.__init__c                 C   
   || _ d S r|   r   r   r   rI   rI   rJ   set_default_timeout1  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   rI   rI   rJ   r   4  s   

zTimeoutSettings.timeoutnavigation_timeoutc                 C   r   r|   r   )r   r   rI   rI   rJ   set_default_navigation_timeout=  s   
z.TimeoutSettings.set_default_navigation_timeoutc                 C      | j S r|   r   r   rI   rI   rJ   default_navigation_timeoutB     z*TimeoutSettings.default_navigation_timeoutc                 C   r   r|   r   r   rI   rI   rJ   default_timeoutE  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   rI   rI   rJ   r   H  s   


z"TimeoutSettings.navigation_timeoutr|   )rD   rE   rF   staticmethodr
   floatr   r   r   r   r   r   r   r   rI   rI   rI   rJ   r   "  s    	
r   extbc                 C   s   t t| ddt|dS )Nr   r   )r@   rA   rB   )r?   rG   r   	traceback	format_tb)r   r   rI   rI   rJ   serialize_errorT  s   r   rj   logc                 C   s\   t }| ddkrt}| ddkrt}|sd}|t| d | }| d |_| d |_|S )NrA   r   r   r   r@   rB   )r   getr   r   patch_error_message_name_stack)rj   r   base_error_classexcrI   rI   rJ   parse_errorZ  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')ru   rs   to_snake_casegroupr   )r@   rs   rI   rI   rJ   r   h  s   r   argsc                 C   sN   i }| D ] }|dkrq| | d ur$t | | ts| | nt| | ||< q|S )Nr   )r[   r   locals_to_params)r   copykeyrI   rI   rJ   r   r  s   

r   c                   C   s   t t d S )Ni  )mathfloortime	monotonicrI   rI   rI   rJ   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    routerQ   Nc                 C   s   || _ || _d S r|   )r   r   )r   r   r   rI   rI   rJ   r     s   
zRouteHandlerInvocation.__init__)r   r   r   r    rQ   N)rD   rE   rF   rH   r   rI   rI   rI   rJ   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 )RouteHandlerNrq   ro   handleris_synctimesc                 C   s@   || _ || _|| _|r|ntj| _d| _|| _d| _t	 | _
d S )Nr   F)	_base_urlro   r   r   inf_times_handled_count_is_sync_ignore_exceptionset_active_invocations)r   rq   ro   r   r   r   rI   rI   rJ   r     s   zRouteHandler.__init__request_urlrQ   c                 C   s   t | j|| jS r|   )rz   r   ro   )r   r   rI   rI   rJ   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remover   r   r   r   r   rG   )r   r   handler_invocationeoptional_async_prefixrI   rI   rJ   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   rQ   c               
      sP   z j  d  W d S  ty' }  z |  W Y d } ~ d S d } ~ ww r|   )r   rm   r	  r   set_exception)r  handler_finished_futurer   r   rI   rJ   _handler  s   z/RouteHandler._handle_internal.<locals>._handlerrQ   N)_start_handlingr   r   _loopr  r   switchr   rm   r  ensure_future)r   r   handled_futurer  gcoro_or_futurerI   r  rJ   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
activationrI   rI   rJ   stop  s   

zRouteHandler.stopc                 C   s   | j d | jkS )Nr   )r   r   r   rI   rI   rJ   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 )NFr{   )regexSource
regexFlagsTz**/*)r[   ro   rG   r   ru   r   r\   r   )r$  patternsallr   rI   rI   rJ   prepare_interception_patterns  s   
z*RouteHandler.prepare_interception_patternsr|   )rD   rE   rF   r
   rG   URLMatchRouteHandlerCallbackrx   rk   r   r  r  r  r	   r"  propertyr#  r   r   r   r)  rI   rI   rI   rJ   r     s2    
r   z(((?<=[a-z0-9])[A-Z]|(?!^)[A-Z](?=[a-z]))rA   c                 C   s   t d|  S )Nz_\1)to_snake_case_regexr   r   )rA   rI   rI   rJ   r      r  r   rM   c                 C   s2   t j| st |  } t jt j| dd d S )NT)exist_ok)osrM   isabsr   cwdmakedirsdirnamer   rI   rI   rJ   make_dirs_for_file  s   r4  filedatac                    s0   d fdd}t  }|d |I d H  d S )NrQ   c                     sH   t t tr	dnd} |   W d    d S 1 sw   Y  d S )Nwwb)openr[   rG   writefhr6  r5  rI   rJ   inner  s   "zasync_writefile.<locals>.innerr  )r  r  run_in_executor)r5  r6  r>  looprI   r=  rJ   async_writefile
  s   rA  c                    s.   dt f fdd}t }|d |I d H S )NrQ   c                     s6   t  d} |  W  d    S 1 sw   Y  d S )Nrb)r9  readr;  r5  rI   rJ   r>    s   $zasync_readfile.<locals>.inner)bytesr  r  r?  )r5  r>  r@  rI   rD  rJ   async_readfile  s   rF  Tobjc                 C   s   t | drtt| jS | S )N	_impl_obj)hasattrr   r   rI  )rH  rI   rI   rJ   to_impl  s   
rK  c                 C   s8   | sd S g }|   D ]\}}|t|t|d q
|S )N)rA   rC   )r   r   r   rG   )rH  ri   r   rC   rI   rI   rJ   object_to_array%  s   rL  rC   c                 C   s"   t | tod| v od| v od| v S )NrA   mimeTypebuffer)r[   dict)rC   rI   rI   rJ   is_file_payload.  s   
rP  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|   )rx   TEXTUAL_MIME_TYPErs   )rQ  rI   rI   rJ   is_textual_mime_type<  s   rS  r|   )lr  r   r/  ru   r   r   pathlibr   typesr   typingr   r   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!   rG   rx   r*  URLMatchRequestURLMatchResponser+  WebSocketRouteHandlerCallbackColorSchemeForcedColorsContrastReducedMotionDocumentLoadStateKeyboardModifierMouseButtonServiceWorkersPolicyHarModerO   RouteFromHarNotFoundPolicyr?   rL   ra   rb   rf   rl   rn   r   Envrz   rw   r}   r~   r   r   r   r   r   PLAYWRIGHT_MAX_DEADLINEr   r   r   r   r   r   rk   r   r   r   rv   r-  r   r4  rE  rA  rF  rG  rK  rL  rP  rR  rS  rI   rI   rI   rJ   <module>   s   @	

	9
	2
	
p&				