o
    Qh4                     @   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 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)m*Z* ee+ee+ ee+ge,f f Z-ee+ee+ edge,f f Z.ee+ee+ edge,f f Z/eedgef eddgef f Z0ed Z1ed Z2ed Z3ed Z4ed Z5ed Z6ed Z7ed Z8ed Z9e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#Z=G d$d% d%eZ>G d&d' d'eddZ?G d(d) d)eZ@G d*d+ d+eZAee+ee+eBe,f f ZCG d,d- d-ZDG d.d/ d/eddZEG d0d1 d1ZFd2eGd3ee	 d!e;fd4d5ZHd6e;d!efd7d8ZId9ee+ d!ee+ fd:d;ZJd<ed!efd=d>ZKd!eLfd?d@ZMG dAdB dBZNG dCdD dDZOePdEZQdFe+d!e+fdGdHZRdIeee+f d!dfdJdKZSdLee+ef dMee+eTf d!dfdNdOZUdLee+ef d!eTfdPdQZVedRZWdSeWd!eWfdTdUZXdSee d!eee  fdVdWZYdXee d!e,fdYdZZZePd[Z[d\e+d!e,fd]d^Z\dS )_    N)Path)TracebackType)TYPE_CHECKINGAnyCallableDictListLiteralOptionalPatternSet	TypedDictTypeVarUnioncast)urljoin)	NameValue)ErrorTargetClosedErrorTimeoutError)glob_to_regex)RouteGreenlet)escape_regex_flags)HeadersArray)RequestResponseRouter   r   r   )darklightno-preferencenull)activenoner    )r   r    reduce)commitdomcontentloadedloadnetworkidle)AltControl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    rB   rB   U/home/air/yokohama/back/venv/lib/python3.10/site-packages/playwright/_impl/_helper.pyr8   D   s
   
 r8   F)totalc                   @   s"   e Zd ZU eed< ee ed< dS )HarRecordingMetadatapathcontentN)r=   r>   r?   r@   rA   r
   HarContentPolicyrB   rB   rB   rC   rE   K   s   
 rE   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 )NrF   recordHarPathrecordHarUrlFilterurlGloburlRegexSourceurlRegexFlagsrecordHarModemoderecordHarContentrecordHarOmitContentr5   rG   )r@   
isinstancer   patternr   )rI   
out_paramsoptnew_content_apiold_content_apirG   rB   rB   rC   prepare_record_har_optionsP   s0   


rZ   c                   @   s&   e Zd ZU eed< eed< eed< dS )ParsedMessageParamstypeguidinitializerN)r=   r>   r?   r@   rA   r   rB   rB   rB   rC   r[   m   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idr]   methodrI   resulterrorN)	r=   r>   r?   intrA   r@   r[   r   r8   rB   rB   rB   rC   r_   s   s   
 r_   c                   @   s   e Zd ZU ee ed< dS )DocumentrequestN)r=   r>   r?   r
   r   rA   rB   rB   rB   rC   re   |   s   
 re   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:   newDocumentrc   N)r=   r>   r?   r@   rA   r
   re   rB   rB   rB   rC   rg      s
   
 rg   c                   @   s<   e Zd Zdeedf deddfddZdedefdd	ZdS )

URLMatcherbase_urlNmatchrJ   c                 C   sf   d | _ d | _t|tr"|r|dst||}t|}t|| _nt|t	r+|| _n|| _ || _
d S )N*)	_callback
_regex_objrT   r@   
startswithr   r   recompiler   rl   )selfrk   rl   regexrB   rB   rC   __init__   s   



zURLMatcher.__init__rh   c                 C   s,   | j r|  |S | jrtt| j|S dS NF)rn   ro   r   boolsearch)rs   rh   rB   rB   rC   matches   s
   
zURLMatcher.matches)	r=   r>   r?   r   r@   URLMatchru   rw   ry   rB   rB   rB   rC   rj      s    rj   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)rc   redirectfulfillnoentryactionr9   redirectURLstatusr   headersbodyN)r=   r>   r?   r	   rA   r
   r@   rd   rB   rB   rB   rC   r{      s   
 r{   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parentrJ   Nc                 C   s   || _ d | _d | _d S N)_parent_default_timeout_default_navigation_timeout)rs   r   rB   rB   rC   ru      s   
zTimeoutSettings.__init__timeoutc                 C   
   || _ d S r   r   rs   r   rB   rB   rC   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   rB   rB   rC   r      s   

zTimeoutSettings.timeoutnavigation_timeoutc                 C   r   r   r   )rs   r   rB   rB   rC   set_default_navigation_timeout   s   
z.TimeoutSettings.set_default_navigation_timeoutc                 C      | j S r   r   rs   rB   rB   rC   default_navigation_timeout      z*TimeoutSettings.default_navigation_timeoutc                 C   r   r   r   r   rB   rB   rC   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   rB   rB   rC   r      s
   

z"TimeoutSettings.navigation_timeoutr   )r=   r>   r?   r
   ru   floatr   r   r   r   r   r   rB   rB   rB   rC   r      s    	
r   extbc                 C   s   t t| ddt|dS )Nr    )r9   r:   r;   )r8   r@   join	traceback	format_tb)r   r   rB   rB   rC   serialize_error   s   r   rc   c                 C   sX   t }| ddkrt}| ddkrt}|ttt| d}| d |_| d |_|S )Nr:   r   r   r9   r;   )	r   getr   r   r   r@   patch_error_message_name_stack)rc   base_error_classexcrB   rB   rC   parse_error   s   

r   r9   c                 C   sP   | d u rd S t d| }|rt|d|d } | d us J | dd} | S )Nz(\w+)(: expected .*)      zPass { acceptDownloads: true }zPass { accept_downloads: True })rq   rl   to_snake_casegroupreplace)r9   rl   rB   rB   rC   r      s   r   argsc                 C   s4   i }| D ]}|dkrq| | d ur| | ||< q|S )Nrs   rB   )r   copykeyrB   rB   rC   locals_to_params   s   r   c                   C   s   t t d S )Ni  )mathfloortime	monotonicrB   rB   rB   rC   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   routerJ   Nc                 C   s   || _ || _d S r   )r   r   )rs   r   r   rB   rB   rC   ru     s   
zRouteHandlerInvocation.__init__)r   r   r   r   rJ   N)r=   r>   r?   rA   ru   rB   rB   rB   rC   r      s   
 r   c                
   @   s   e Zd Z	d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 )RouteHandlerNmatcherhandleris_synctimesc                 C   s:   || _ || _|r
|ntj| _d| _|| _d| _t | _	d S )Nr   F)
r   r   r   inf_times_handled_count_is_sync_ignore_exceptionset_active_invocations)rs   r   r   r   r   rB   rB   rC   ru     s   zRouteHandler.__init__request_urlrJ   c                 C   s   | j |S r   )r   ry   )rs   r   rB   rB   rC   ry     s   zRouteHandler.matchesr   r   c              
      s   t t  |}| j| z<z| |I d H W W |jd  | j	| S  t
yL } z| jrFW Y d }~W |jd  | j	| dS |d }~ww |jd  | j	| w rv   )r   asyncioget_running_loopcreate_futurer   add_handle_internalr   
set_resultremove	Exceptionr   )rs   r   handler_invocationerB   rB   rC   handle  s&   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   rJ   c               
      sP   z j  d  W d S  ty' }  z |  W Y d } ~ d S d } ~ ww r   )r   rf   r   r   set_exception)r   handler_finished_futurer   rs   rB   rC   _handler0  s   z/RouteHandler._handle_internal.<locals>._handlerrJ   N)_start_handlingr   r   _loopr   r   switchr   rf   r   ensure_future)rs   r   handled_futurer   gcoro_or_futurerB   r   rC   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)rs   r   tasks
activationrB   rB   rC   stopC  s   

zRouteHandler.stopc                 C   s   | j d | jkS )Nr   )r   r   r   rB   rB   rC   will_expireQ  s   zRouteHandler.will_expirehandlersc                 C   sz   g }d}| D ]-}t |jjtr|d|jji qt |jjtjr1||jjjt	|jjd qd}q|r;ddigS |S )NFglob)regexSource
regexFlagsTz**/*)
rT   r   rl   r@   r   ro   rq   r   rU   r   )r   patternsallr   rB   rB   rC   prepare_interception_patternsU  s   

z*RouteHandler.prepare_interception_patternsr   )r=   r>   r?   rj   RouteHandlerCallbackrw   r
   rd   ru   r@   ry   r   r   r	   r   propertyr   staticmethodr   r   r   rB   rB   rB   rC   r     s.    
r   z(((?<=[a-z0-9])[A-Z]|(?!^)[A-Z](?=[a-z]))r:   c                 C   s   t d|  S )Nz_\1)to_snake_case_regexsublower)r:   rB   rB   rC   r   o  s   r   rF   c                 C   s2   t j| st |  } t jt j| dd d S )NT)exist_ok)osrF   isabsr   cwdmakedirsdirname)rF   rB   rB   rC   make_dirs_for_files  s   r   filedatac                    s0   d fdd}t  }|d |I d H  d S )NrJ   c                     sH   t t tr	dnd} |   W d    d S 1 sw   Y  d S )Nwwb)openrT   r@   writefhr   r   rB   rC   innerz  s   "zasync_writefile.<locals>.innerr   )r   r   run_in_executor)r   r   r  looprB   r  rC   async_writefiley  s   r  c                    s.   dt f fdd}t }|d |I d H S )NrJ   c                     s6   t  d} |  W  d    S 1 sw   Y  d S )Nrb)r   readr  r   rB   rC   r    s   $zasync_readfile.<locals>.inner)bytesr   r   r  )r   r  r  rB   r
  rC   async_readfile  s   r  Tobjc                 C   s   t | drtt| jS | S )N	_impl_obj)hasattrr   r   r  )r  rB   rB   rC   to_impl  s   
r  c                 C   s8   | sd S g }|   D ]\}}|t|t|d q
|S )N)r:   r<   )itemsr   r   r@   )r  rb   r   r<   rB   rB   rC   object_to_array  s   r  r<   c                 C   s"   t | tod| v od| v od| v S )Nr:   mimeTypebuffer)rT   dict)r<   rB   rB   rC   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   )rw   TEXTUAL_MIME_TYPErl   )r  rB   rB   rC   is_textual_mime_type  s   r  )]r   r   r   rq   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   playwright._impl._globr   playwright._impl._greenletsr   playwright._impl._str_utilsr   r   playwright._impl._networkr   r   r   r@   rw   rz   URLMatchRequestURLMatchResponser   ColorSchemeForcedColorsReducedMotionDocumentLoadStateKeyboardModifierMouseButtonServiceWorkersPolicyHarModerH   RouteFromHarNotFoundPolicyr8   rE   rZ   r[   r_   re   rg   r   Envrj   r{   r   r   r   r   r   r   rd   r   r   r   rr   r   r   r   r  r  r  r  r  r  r  r  r  rB   rB   rB   rC   <module>   s   <		%
	
f&				