
    iI                        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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rd dlm,Z, d dl-m.Z.m/Z/m0Z0m1Z1 ee2ee2         ee2ge3f         f         Z4ee2ee2         edge3f         f         Z5ee2ee2         edge3f         f         Z6eedgef         eddgef         f         Z7edgef         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         ZAed         ZBed         ZC G d ded          ZD G d  d!ed          ZEd"ed#ee2ef         fd$ZF G d% d&e          ZG G d' d(ed          ZH G d) d*e          ZI G d+ d,e          ZJee2ee2eKe3f         f         ZL	 dbd-ee2         d.e2d/ee4         d0e3d#e3f
d1ZM	 dbd-ee2         d2e2d0e3d#e2fd3ZNd-ee2         d#ee2         fd4ZOd-ee2         d/e2d#e2fd5ZPd-ee2         d6e2d#ee2ee2         f         fd7ZQd8e2d#efd9ZR G d: d;ed          ZSd<ZTd=ZUd>ZV G d? d@          ZWdAeXdBee	         d#eDfdCZYdbdDeDdEee2         d#e!fdFZZdGe2d#e2fdHZ[dIed#efdJZ\d#e]fdKZ^ G dL dM          Z_ G dN dO          Z` eja        dP          ZbdQe2d#e2fdRZcdSeee2f         d#dfdTZddUee2ef         dVee2eef         d#dfdWZfdUee2ef         d#eefdXZg edY          ZhdZehd#ehfd[ZidZee         d#eee                  fd\Zjd]ee         d#e3fd^Zk eja        d_          Zld`e2d#e3fdaZmdS )c    N)Path)TracebackType)TYPE_CHECKINGAnyCallableDictListLiteralOptionalPatternSetTuple	TypedDictTypeVarUnioncast)ParseResulturljoinurlparse
urlunparse)	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                   D    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        X/Users/shanyulin/my-agent/.venv/lib/python3.11/site-packages/playwright/_impl/_helper.pyrC   rC   M   s=         LLL
IIIJJJC=rN   rC   F)totalc                   0    e Zd ZU eed<   ee         ed<   dS )HarRecordingMetadatapathcontentN)rH   rI   rJ   rK   rL   r   HarContentPolicyrM   rN   rO   rR   rR   T   s-         
III&''''''rN   rR   paramsreturnc                 n   dt          | d                   i}d| v rV| d         }t          |t                     r||d<   t          |t                    r|j        |d<   t	          |          |d<   | d= d| v r| d         |d<   | d= d }d }d	| v r| d	         }| d	= d
| v r| d
         }| d
= |p|rdnd }|r||d<   |S )NrS   recordHarPathrecordHarUrlFilterurlGloburlRegexSourceurlRegexFlagsrecordHarModemoderecordHarContentrecordHarOmitContentr?   rT   )rK   
isinstancer   patternr   )rV   
out_paramsoptnew_content_apiold_content_apirT   s         rO   prepare_record_har_optionsrh   Y   s   "(#f_.E*F*F!GJv%%)*c3 	($'Jy!c7## 	B+.;J'(*<S*A*AJ''(&  #O4
6?#OOV## !34%&'' !78)*FO"E&&G ( '
9rN   c                   .    e Zd ZU eed<   eed<   eed<   dS )ParsedMessageParamstypeguidinitializerN)rH   rI   rJ   rK   rL   r   rM   rN   rO   rj   rj   v   s0         
III
IIIrN   rj   c                   L    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idrl   methodrV   resulterrorN)	rH   rI   rJ   intrL   rK   rj   r   rC   rM   rN   rO   ro   ro   |   sN         GGG
IIIKKKKKKrN   ro   c                   &    e Zd ZU ee         ed<   dS )DocumentrequestN)rH   rI   rJ   r   r   rL   rM   rN   rO   rv   rv      s"         c]rN   rv   c                   P    e Zd ZU eed<   eed<   ee         ed<   ee         ed<   dS )FrameNavigatedEventurlrE   newDocumentrs   N)rH   rI   rJ   rK   rL   r   rv   rM   rN   rO   ry   ry      sE         	HHH
III(####C=rN   ry   base_url
url_stringmatchwebsocket_urlc                     |sdS t          |t                    r#t          j        t	          | ||                    }t          |t
                    r"t          |                    |                    S  ||          S )NT)rb   rK   recompileresolve_glob_to_regex_patternr   boolsearch)r|   r}   r~   r   s       rO   url_matchesr      s      t% 

)(E=II
 
 %!! .ELL,,---5rN   globc                 b    |rt          |           } t          | |          }t          |          S N)to_websocket_base_urlresolve_glob_baser   )r|   r   r   s      rO   r   r      s6      3(22Xt,,D &&&rN   c                 `    | +t          j        d|           rt          j        dd|           } | S )Nz
^https?://z^httpws)r   r~   sub)r|   s    rO   r   r      s1     A A6(D(33OrN   c           	         |d         dk    r|S i dt           dt           dt           ffd}|                    dd          }|                    d	          sT|                    d
          s?|                    d          s*|                    d          s|                    d          r|S g }t          |                    d                    D ] \  }}|dv r|                    |            |dk    rS|                    d          r>d|v sd|v r |                     ||d                     n|                    |           y|                    d          }|dk    r$|                     ||d| d                      ||d |         d| d          } |||d          d| d          }|                    ||z              d                    |          }	t          | |	          \  }
}
                                D ]8\  }}|o||v }|
                    ||r|                                n|d          }
9|
S )Nr   *originalreplacementrW   c                 <    t          |           dk    rdS | |<   |S )Nr    )len)r   r   	token_maps     rO   	map_tokenz$resolve_glob_base.<locals>.map_token   s)    x==A2!)	+rN   z\\??zabout:zdata:zchrome:zedge:zfile:/).z..r   :{zhttp:z$_z_$z?$_   )rK   replace
startswith	enumeratesplitappendendswithfindjoinresolve_base_urlitemslower)r|   r~   r   processed_partsindextokenquestion_index
new_prefix
new_suffixrelative_pathresolvedcase_insensitive_partr   	normalizer   s                 @rO   r   r      s   Qx3 "IC c c       MM&#&&E 	""G$$ I&& G$$	
 G$$  O!%++c"2"233 < <uO##""5))) A::%..--:e||se||&&yy'@'@AAAA  &&u---CR""99UNNNN#C#CDDDD"5.#9>>>>JJJ"5#9????KKJ"":
#:;;;;HH_--M&6x&O&O#H#$??,, 
 
x)Le7L.L	##y>8>>###h
 
 OrN   	given_urlc                     	 t          t          | | nd|                    }t          |          }|j        pd}|j        r|d|j         z  }|j         d| }||fS # t          $ r |d fcY S w xY w)Nr   r   z://)nodelike_urlparser   r   hostnameportscheme	Exception)r|   r   rz   r   hostname_portcase_insensitive_prefixs         rO   r   r      s     4HH"iHH
 
 c?? LB 	 8 	,^^^+M%(Z"C"CM"C"C000   $s   AA A0/A0rz   c                     t          | d          }|j        dv }|r!|j        dk    r|                    d          }|S )NT)allow_fragments)httphttpsr   wssftpfiler   r   rS   )r   r   rS   _replace)rz   parsedis_special_urls      rO   r   r     sR    c4000F ]&SSN / ;"__#_..FMrN   c                       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)rs   redirectfulfillnoentryactionrD   redirectURLstatusr    headersbodyN)rH   rI   rJ   r
   rL   r   rK   rt   rM   rN   rO   r   r     su         =>>>>c]#SMn%%%%
3-rN   r   i0u  i  ic                       e Zd Zeddee         defd            Zded          ddfdZdee         ddfdZddedefdZ	d	ee         ddfd
Z
dee         fdZdee         fdZddedefdZdS )TimeoutSettingsNtimeoutrW   c                     | | nt           S r   )1DEFAULT_PLAYWRIGHT_LAUNCH_TIMEOUT_IN_MILLISECONDS)r   s    rO   launch_timeoutzTimeoutSettings.launch_timeout"  s     " GB	
rN   parentc                 0    || _         d | _        d | _        d S r   )_parent_default_timeout_default_navigation_timeout)selfr   s     rO   __init__zTimeoutSettings.__init__*  s    15<@(((rN   c                     || _         d S r   r   r   r   s     rO   set_default_timeoutz#TimeoutSettings.set_default_timeout/  s     'rN   c                 t    ||S | j         | j         S | j        r| j                                        S t          S r   )r   r   r   *DEFAULT_PLAYWRIGHT_TIMEOUT_IN_MILLISECONDSr   s     rO   r   zTimeoutSettings.timeout2  sC    N ,((< 	*<'')))99rN   navigation_timeoutc                     || _         d S r   r   )r   r   s     rO   set_default_navigation_timeoutz.TimeoutSettings.set_default_navigation_timeout;  s     ,>(((rN   c                     | j         S r   r   r   s    rO   default_navigation_timeoutz*TimeoutSettings.default_navigation_timeout@  s    //rN   c                     | j         S r   r   r   s    rO   default_timeoutzTimeoutSettings.default_timeoutC  s    $$rN   c                     ||S | j         | j         S | j        | j        S | j        r| j                                        S t          S r   )r   r   r   r   r   r   s     rO   r   z"TimeoutSettings.navigation_timeoutF  sU    N+733 ,((< 	5<2244499rN   r   )rH   rI   rJ   staticmethodr   floatr   r   r   r   r   r   r   r   rM   rN   rO   r   r      sQ       
 
 
5 
 
 
 \
Ax(9: At A A A A
(8E? (t ( ( ( (: :u : : : : :>"*5/>	> > > >
0HUO 0 0 0 0%% % % % %	: 	:% 	:5 	: 	: 	: 	: 	: 	:rN   r   extbc           	          t          t          |           dd                    t          j        |                              S )Nr   r   )rD   rE   rF   )rC   rK   r   	traceback	format_tb)r   r   s     rO   serialize_errorr   R  s=    BgRWWY5H5L5L-M-M   rN   rs   logc                    t           }|                     d          dk    rt          }|                     d          dk    rt          }|sd} |t	          | d                   |z             }| d         |_        | d         |_        |S )NrE   r   r   r   rD   rF   )r   getr   r   patch_error_message_name_stack)rs   r   base_error_classexcs       rO   parse_errorr   X  s    yyN**'yy///, 

.uY/?@@3F
G
GCfCIwCJJrN   rD   c                     t          j        d|           }|r8t          |                    d                    |                    d          z   } |                     dd          } | S )Nz(\w+)(: expected .*)r      zPass { acceptDownloads: true }zPass 'accept_downloads=True')r   r~   to_snake_casegroupr   )rD   r~   s     rO   r   r   f  sc    H,g66E AA//%++a..@oo(*H G NrN   argsc                     i }| D ]L}|dk    r	| |         ;t          | |         t                    s| |         nt          | |                   ||<   M|S )Nr   )rb   r   locals_to_params)r  copykeys      rO   r  r  p  sl    D  &==9  "$s)T221S		%d3i00 I
 KrN   c                  R    t          j        t          j                    dz            S )Ni  )mathfloortime	monotonicrM   rN   rO   monotonic_timer  ~  s    :dn&&-...rN   c                   ,    e Zd ZU ded<   ded<   ddZdS )	RouteHandlerInvocationasyncio.Futurecompleter#   routerW   Nc                 "    || _         || _        d S r   )r  r  )r   r  r  s      rO   r   zRouteHandlerInvocation.__init__  s     


rN   )r  r  r  r#   rW   N)rH   rI   rJ   rL   r   rM   rN   rO   r  r    s?         NNN     rN   r  c                       e Zd Z	 ddee         dedededee         f
dZ	ded	efd
Z
ddd	efdZddd	efdZded         d	dfdZed	efd            Zeded          d	eeeef                  fd            ZdS )RouteHandlerNr|   rz   handleris_synctimesc                     || _         || _        || _        |r|nt          j        | _        d| _        || _        d| _        t                      | _
        d S )Nr   F)	_base_urlrz   r  r
  inf_times_handled_count_is_sync_ignore_exceptionset_active_invocations)r   r|   rz   r  r  r  s         rO   r   zRouteHandler.__init__  sT     "$2ee$(!&@C   rN   request_urlrW   c                 8    t          | j        || j                  S r   )r   r  rz   )r   r#  s     rO   matcheszRouteHandler.matches  s    4>;AAArN   r  r#   c           	        K   t          t          j                                                    |          }| j                            |           	 |                     |           d {V 	 |j                            d            | j        	                    |           S # t          $ r}| j        r:Y d }~|j                            d            | j        	                    |           dS t          |          r/| j        sdnd}t          |dt          |           d| d          |d }~ww xY w# |j                            d            | j        	                    |           w xY 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   rK   )r   r  handler_invocationeoptional_async_prefixs        rO   handlezRouteHandler.handle  s     3$&&4466
 
 	 $$%7888	@..u555555555 '224888$++,>????  	 	 	% uuu '224888$++,>????? &a((  9=(M2%# ZQ  Z  ZVk  Z  Z  Z   G	 '224888$++,>????s1   B! !
D1+D,2D4 ,A D,,D11D4 46E*c                 z   K                                    } xj        dz  c_         j        rMj                                        d fd}t          |          }|                                  d {V  n7                     j                  }|rt          j
        |           d {V  | d {V S )Nr   rW   c                      	                      j                                       d            d S # t          $ r }                     |            Y d } ~ d S d } ~ ww xY wr   )r  rw   r-  r   set_exception)r0  handler_finished_futurer  r   s    rO   _handlerz/RouteHandler._handle_internal.<locals>._handler  s}    =LL666+66t<<<<<  = = =+99!<<<<<<<<<=s   05 
AAArW   N)_start_handlingr  r  _loopr*  r   switchr  rw   r(  ensure_future)r   r  handled_futurer7  gcoro_or_futurer6  s   ``    @rO   r,  zRouteHandler._handle_internal  s     ..00q = 	<&+k&?&?&A&A#= = = = = = = = h''AHHJJJ)))))))))!\\%??N <+N;;;;;;;;;########rN   behavior)ignoreErrorswaitc                    K   |dk    r	d| _         d S g }| j        D ](}|j        j        s|                    |j                   )t          j        |  d {V  d S )NrA  T)r   r"  r  
_did_throwr   r  r(  gather)r   r@  tasks
activations       rO   stopzRouteHandler.stop  s      
 ~%%%)D"""E"6 6 6
!'2 6LL!4555.%((((((((((rN   c                 (    | j         dz   | j        k    S )Nr   )r  r  r   s    rO   will_expirezRouteHandler.will_expire  s    "Q&$+55rN   handlersc                 @   g }d}| D ]}t          |j        t                    r|                    d|j        i           9t          |j        t          j                  r5|                    |j        j        t          |j                  d           d}|rddigS |S )NFr   )regexSource
regexFlagsTz**/*)rb   rz   rK   r   r   r   rc   r   )rK  patternsallr  s       rO   prepare_interception_patternsz*RouteHandler.prepare_interception_patterns  s      	 	G'+s++ 
 56666GK44 '.{':&8&E&E      	&V$%%rN   r   )rH   rI   rJ   r   rK   URLMatchRouteHandlerCallbackr   rt   r   r%  r2  r,  r
   rH  propertyrJ  r   r	   r   rQ  rM   rN   rO   r  r    sw         $F F3-F F &	F
 F }F F F F"B3 B4 B B B B@' @d @ @ @ @0$G $ $ $ $ $4)7+A#B )t ) ) ) ) 6T 6 6 6 X6 ~&	d38n	   \  rN   r  z(((?<=[a-z0-9])[A-Z]|(?!^)[A-Z](?=[a-z]))rE   c                 \    t                               d|                                           S )Nz_\1)to_snake_case_regexr   r   )rE   s    rO   r  r    s$    ""640066888rN   rS   c                     t           j                            |           st          j                    | z  } t          j        t           j                            |           d           d S )NT)exist_ok)osrS   isabsr   cwdmakedirsdirnamer   s    rO   make_dirs_for_filer^    sQ    7== !xzzD K%%555555rN   r   datac                 z    K   d fd}t          j                    }|                    d |           d {V  d S )NrW   c                      t          t          t                    rdnd          5 } |                                d d d            d S # 1 swxY w Y   d S )Nwwb)openrb   rK   write)fhr_  r   s    rO   innerzasync_writefile.<locals>.inner	  s    $z$44>$?? 	2HHTNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAr8  )r(  r)  run_in_executor)r   r_  rg  loops   ``  rO   async_writefilerj    si             #%%D


tU
+
++++++++++rN   c                     K   dt           f fd}t          j                    }|                    d |           d {V S )NrW   c                      t          d          5 } |                                 cd d d            S # 1 swxY w Y   d S )Nrb)rd  read)rf  r   s    rO   rg  zasync_readfile.<locals>.inner  s    $ 	7799	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   377)bytesr(  r)  rh  )r   rg  ri  s   `  rO   async_readfilerp    sd      5       #%%D%%dE222222222rN   Tobjc                 Z    t          | d          rt          t          |           j        S | S )N	_impl_obj)hasattrr   r   rt  )rr  s    rO   to_implrv    s*    sK   (C~~''JrN   c           	          | sd S g }|                                  D ]6\  }}|                    t          |t          |                               7|S )N)rE   rG   )r   r   r   rK   )rr  rr   r  rG   s       rO   object_to_arrayrx  #  s\     tFiikk = =
UiSE

;;;<<<<MrN   rG   c                 D    t          | t                    od| v od| v od| v S )NrE   mimeTypebuffer)rb   dict)rG   s    rO   is_file_payloadr}  ,  s<    5$ 	eO	%	 	rN   z^(text\/.*?|application\/(json|(x-)?javascript|xml.*?|ecmascript|graphql|x-www-form-urlencoded)|image\/svg(\+xml)?|application\/.*?(\+json|\+xml))(;\s*charset=.*)?$	mime_typec                 P    t          t                              |                     S r   )r   TEXTUAL_MIME_TYPEr~   )r~  s    rO   is_textual_mime_typer  :  s    !''	22333rN   r   )nr(  r
  rY  r   r  r   pathlibr   typesr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   urllib.parser   r   r   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$   rK   r   rR  URLMatchRequestURLMatchResponserS  WebSocketRouteHandlerCallbackColorSchemeForcedColorsContrastReducedMotionDocumentLoadStateKeyboardModifierMouseButtonServiceWorkersPolicyHarModerU   RouteFromHarNotFoundPolicyrC   rR   rh   rj   ro   rv   ry   r   Envr   r   r   r   r   r   r   r   r   PLAYWRIGHT_MAX_DEADLINEr   r   r   r   r   r  rt   r  r  r  r   rV  r  r^  ro  rj  rp  rq  rv  rx  r}  r  r  rM   rN   rO   <module>r     s     				 				                                                  D C C C C C C C C C C C 6 6 6 6 6 6              9 8 8 8 8 8 5 5 5 5 5 5 : : : : : : S======RRRRRRRRRRRRgclHcUD[$99:WS\8YK4E+FFGgclHj\45G,HHI gY^h';S'@AA  !)*:);S)@ A >?/0239:OP MN /0/0 
#
$45 $%89     9E    ( ( ( ( (9E ( ( ( (
t S#X    :    )       9E        y       )    3c5$&''( 	 sm H 	
 
   $ ?C' 'sm'#&'7;'' ' ' 'HSM hsm    : :c :c : : : :zsm(+
3   (3 ;        iu     .3 *4: 1$ /: /: /: /: /: /: /: /:d	 x'> <     | (3- 5         4 D    / / / / /       m m m m m m m m` !bj!KLL 9 9 9 9 9 96U49- 6$ 6 6 6 6,c4i 0 ,c5j8I ,d , , , ,3uS$Y/ 3E 3 3 3 3 GCLL q    $ HT)_,E    8C= T     BJ l  
4C 4D 4 4 4 4 4 4rN   