a
    Ò�éisb  ã                   @   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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mZmZmZmZ ejdkr d dlmZ n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" d d
l#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/ e�rVd dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7 G dd„ dedd�Z8G dd„ dƒZ9ee:e:f edœdd„Z;G dd„ de$ƒZ<G dd„ de$ƒZ=G d d!„ d!e$ƒZ>G d"d#„ d#e$ƒZ?G d$d%„ d%ƒZ@dS )&é    N)Údefaultdict)ÚPath)ÚSimpleNamespace)	ÚTYPE_CHECKINGÚAnyÚCallableÚ	CoroutineÚDictÚListÚOptionalÚUnionÚcast)é   é   )Ú	TypedDict)Úparse)ÚHeadersÚHeadersArrayÚ
RemoteAddrÚRequestSizesÚResourceTimingÚSecurityDetails)ÚChannelOwnerÚfilter_noneÚfrom_channelÚfrom_nullable_channel)ÚError)ÚEventContextManagerImpl)Úlocals_to_params)ÚWaiter)ÚBrowserContext©ÚAPIResponse)ÚFrame)ÚPagec                   @   sN   e Zd ZU ee ed< ee ed< eeeef  ed< eeeef  ed< dS )ÚFallbackOverrideParametersÚurlÚmethodÚheadersÚpostDataN)	Ú__name__Ú
__module__Ú__qualname__r   ÚstrÚ__annotations__r	   r   Úbytes© r0   r0   úI/home/Claro/venv/lib/python3.9/site-packages/playwright/_impl/_network.pyr%   F   s   
r%   F)Útotalc                   @   s   e Zd Zddœdd„ZdS )ÚSerializedFallbackOverridesN©Úreturnc                 C   s   d | _ d | _d | _d | _d S ©N)r&   r'   r(   Úpost_data_buffer©Úselfr0   r0   r1   Ú__init__N   s    z$SerializedFallbackOverrides.__init__)r*   r+   r,   r:   r0   r0   r0   r1   r3   M   s   r3   ©r(   r5   c                 C   s   dd„ |   ¡ D ƒS )Nc                 S   s"   g | ]\}}|d ur||dœ‘qS )N)ÚnameÚvaluer0   )Ú.0r<   r=   r0   r0   r1   Ú
<listcomp>V   s   þz%serialize_headers.<locals>.<listcomp>)Úitems©r(   r0   r0   r1   Úserialize_headersU   s    þrB   c                       sÄ  e Zd Zeeeeddœ‡ fdd„Zedœdd„Zeddœd	d
„Z	e
edœdd„ƒZe
edœdd„ƒZe
edœdd„ƒZedœdd„Ze
ee dœdd„ƒZe
ee dœdd„ƒZe
ee dœdd„ƒZed dœdd„Ze
ddœdd„ƒZedœdd „Ze
ed  dœd!d"„ƒZe
ed  dœd#d$„ƒZe
ee dœd%d&„ƒZe
edœd'd(„ƒZedd)œd*d+„Z e
e!dœd,d-„ƒZ"e!dœd.d/„Z#e$dœd0d1„Z%eee d2œd3d4„Z&d5dœd6d7„Z'e(j)dœd8d9„Z*‡  Z+S ):ÚRequestN©ÚparentÚtypeÚguidÚinitializerr5   c              
      s˜   t ƒ  ||||¡ t| d¡ƒ| _d | _| jr6| | j_d | _ddddddddddœ	| _t| j	d ƒ| _
d | _tƒ | _| d¡}|d ur”t |¡| j_d S )NZredirectedFromr   éÿÿÿÿ)	Ú	startTimeÚdomainLookupStartÚdomainLookupEndÚconnectStartÚsecureConnectionStartÚ
connectEndÚrequestStartÚresponseStartÚresponseEndr(   r)   )Úsuperr:   r   ÚgetÚ_redirected_fromÚ_redirected_toÚ_failure_textÚ_timingÚ
RawHeadersÚ_initializerÚ_provisional_headersÚ_all_headers_futurer3   Ú_fallback_overridesÚbase64Ú	b64decoder7   )r9   rE   rF   rG   rH   Zbase64_post_data©Ú	__class__r0   r1   r:   ^   s6    ÿ÷ÿ
ÿzRequest.__init__r4   c                 C   s   d| j ›d| j›d�S )Nz<Request url=z method=ú>)r&   r'   r8   r0   r0   r1   Ú__repr__   s    zRequest.__repr__)Ú	overridesr5   c                 C   s�   |  d| jj¡| j_|  d| jj¡| j_|  d| jj¡| j_|  d¡}t|tƒr^| ¡ | j_n.t|t	ƒrr|| j_n|d urŒt
 |¡ ¡ | j_d S )Nr&   r'   r(   r)   )rT   r]   r&   r'   r(   Ú
isinstancer-   Úencoder7   r/   ÚjsonÚdumps)r9   rd   Ú	post_datar0   r0   r1   Ú_apply_fallback_overrides‚   s     ÿÿÿ



z!Request._apply_fallback_overridesc                 C   s   t t| jjp| jd ƒS ©Nr&   )r   r-   r]   r&   rZ   r8   r0   r0   r1   r&   ”   s    zRequest.urlc                 C   s
   | j d S )NZresourceType©rZ   r8   r0   r0   r1   Úresource_type˜   s    zRequest.resource_typec                 C   s   t t| jjp| jd ƒS )Nr'   )r   r-   r]   r'   rZ   r8   r0   r0   r1   r'   œ   s    zRequest.methodc                 Ã   s,   |   ¡ I d H }|stdƒ‚|j d¡I d H S )Nz(Unable to fetch sizes for failed requestÚsizes)Úresponser   Ú_channelÚsend)r9   ro   r0   r0   r1   rn       s    zRequest.sizesc                 C   s&   | j j}|sd S t|tƒr"| ¡ S |S r6   )r]   r7   re   r/   Údecode)r9   Údatar0   r0   r1   ri   ¦   s    zRequest.post_datac                 C   s`   | j }|sd S | jd }|dkr.tt |¡ƒS zt |¡W S  tyZ   td|› �ƒ‚Y n0 d S )Núcontent-typez!application/x-www-form-urlencodedz&POST data is not a valid JSON object: )	ri   r(   Údictr   Ú	parse_qslrg   ÚloadsÚ	Exceptionr   )r9   ri   Úcontent_typer0   r0   r1   Úpost_data_json­   s    
zRequest.post_data_jsonc                 C   s   | j jS r6   )r]   r7   r8   r0   r0   r1   r7   º   s    zRequest.post_data_bufferÚResponsec                 Ã   s   t | j d¡I d H ƒS )Nro   )r   rp   rq   r8   r0   r0   r1   ro   ¾   s    zRequest.responser#   c                 C   sD   | j  d¡stdƒ‚tdt| j d ƒƒ}|js@td g d¢¡ƒ‚|S )NÚframez8Service Worker requests do not have an associated frame.r#   Ú
)zGFrame for this navigation request is not available, because the requestzIwas issued before the frame is created. You can check whether the requestz@is a navigation request by calling isNavigationRequest() method.)rZ   rT   r   r   r   Ú_pageÚjoin)r9   r|   r0   r0   r1   r|   Á   s    ÿÿ	zRequest.framec                 C   s
   | j d S )NZisNavigationRequestrl   r8   r0   r0   r1   Úis_navigation_requestÒ   s    zRequest.is_navigation_requestc                 C   s   | j S r6   )rU   r8   r0   r0   r1   Úredirected_fromÕ   s    zRequest.redirected_fromc                 C   s   | j S r6   )rV   r8   r0   r0   r1   Úredirected_toÙ   s    zRequest.redirected_toc                 C   s   | j S r6   )rW   r8   r0   r0   r1   ÚfailureÝ   s    zRequest.failurec                 C   s   | j S r6   ©rX   r8   r0   r0   r1   Útimingá   s    zRequest.timing)Úresponse_end_timingr5   c                 C   s&   || j d< | j d dkr"|| j d< d S )NrR   rQ   rI   r„   )r9   r†   r0   r0   r1   Ú_set_response_end_timingå   s    
z Request._set_response_end_timingc                 C   s$   | j j}|rt |¡ ¡ S | j ¡ S r6   )r]   r(   rY   Ú_from_headers_dict_lossyr[   )r9   Úoverrider0   r0   r1   r(   ê   s    zRequest.headersc                 Ã   s   |   ¡ I d H  ¡ S r6   ©Ú_actual_headersr(   r8   r0   r0   r1   Úall_headersñ   s    zRequest.all_headersc                 Ã   s   |   ¡ I d H  ¡ S r6   ©r‹   Úheaders_arrayr8   r0   r0   r1   rŽ   ô   s    zRequest.headers_array©r<   r5   c                 Ã   s   |   ¡ I d H  |¡S r6   ©r‹   rT   ©r9   r<   r0   r0   r1   Úheader_value÷   s    zRequest.header_valuerY   c                 Ã   sV   | j j}|rtt|ƒƒS | jsJt ¡ | _| j d¡I d H }| j 	t|ƒ¡ | jI d H S )NZrawRequestHeaders)
r]   r(   rY   rB   r\   ÚasyncioÚFuturerp   rq   Ú
set_result)r9   r‰   r(   r0   r0   r1   r‹   ú   s    
zRequest._actual_headersc                 C   s>   t td t| j d¡ƒƒ}|s&t ¡ S |j}|s8t ¡ S |jS )Nr#   r|   )	r   r   r   rZ   rT   r“   r”   r~   Z_closed_or_crashed_future)r9   r|   Úpager0   r0   r1   Ú_target_closed_future  s    ÿzRequest._target_closed_future),r*   r+   r,   r   r-   r	   r:   rc   r%   rj   Úpropertyr&   rm   r'   r   rn   r   ri   r   rz   r/   r7   ro   r|   Úboolr€   r�   r‚   rƒ   r   r…   Úfloatr‡   r   r(   rŒ   r   rŽ   r’   r‹   r“   r”   r—   Ú__classcell__r0   r0   r`   r1   rC   ]   sL   þ!
rC   c                
       s|  e Zd Zeeeeddœ‡ fdd„Zddœdd„Zedd	œd
d„Z	ddœdd„Z
edœdd„Zeedœdd„ƒZd+eddœdd„Zd,eeeef eeef eeeef edddœdd„Zd-eeeeef eeeef eeddœdd„Zd.eeeeef eeeef ddœdd„Zd/eeeeef eeeef ddœdd „Zd0eeeedf d"œd#d$„Zedd%œd&d'„Zedd(œd)d*„Z‡  ZS )1ÚRouteNrD   c                    s(   t ƒ  ||||¡ d | _tdd ƒ| _d S )Nr    )rS   r:   Ú_handling_futurer   Ú_context©r9   rE   rF   rG   rH   r`   r0   r1   r:     s    zRoute.__init__zasyncio.Future[bool]r4   c                 C   s   t  ¡ | _| jS r6   )r“   r”   r�   r8   r0   r0   r1   Ú_start_handling  s    
zRoute._start_handling)Údoner5   c                 C   s"   | j }|sJ ‚d | _ | |¡ d S r6   )r�   r•   )r9   r¡   Úchainr0   r0   r1   Ú_report_handled  s    zRoute._report_handledc                 C   s   | j stdƒ‚d S )NzRoute is already handled!)r�   r   r8   r0   r0   r1   Ú_check_not_handled"  s    zRoute._check_not_handledc                 C   s   d| j › d�S )Nz<Route request=rb   )Úrequestr8   r0   r0   r1   rc   &  s    zRoute.__repr__c                 C   s   t | jd ƒS )Nr¥   )r   rZ   r8   r0   r0   r1   r¥   )  s    zRoute.request)Ú	errorCoder5   c              	   Ã   sB   |   ¡  |  | j dt|| jjd dœƒ¡¡I d H  |  d¡ d S )NÚabortr&   )r¦   Ú
requestUrlT)r¤   Ú_race_with_page_closerp   rq   r   r¥   rZ   r£   )r9   r¦   r0   r0   r1   r§   -  s    
þÿþÿ
zRoute.abortr"   )Ústatusr(   Úbodyrg   ÚpathÚcontentTypero   r5   c                 Ã   s$  |   ¡  ttƒ ƒ}|d ur4|d ur*tdƒ‚t |¡}|rÄ|d= | d¡rP|d n|j|d< | d¡rl|d n|j|d< ddl	m
}	 |d u rÄ|d u rÄt||	ƒrÄ|jj| ju r¶|j|d< n| ¡ I d H }d}
t|tƒrð||d< d	|d
< t| ¡ ƒ}
njt|tƒ�r t |¡ ¡ |d< d|d
< t|ƒ}
n:|�rZ|d= t|ƒ ¡ }t |¡ ¡ |d< d|d
< t|ƒ}
dd„ | di ¡ ¡ D ƒ}| d¡�rŽ|d |d< n6|�ržd|d< n&|�rÄt tt|ƒƒ¡d �p¾d|d< |
�ràd|v�ràt|
ƒ|d< t|ƒ|d< | jjd |d< |  | j  !d|¡¡I d H  |  "d¡ d S )Nz*Can specify either body or json parametersro   rª   r(   r   r!   ZfetchResponseUidr«   FZisBase64Tr¬   c                 S   s   i | ]\}}|  ¡ t|ƒ“qS r0   )Úlowerr-   )r>   ÚkÚvr0   r0   r1   Ú
<dictcomp>n  ó    z!Route.fulfill.<locals>.<dictcomp>r­   rt   zapplication/jsonzapplication/octet-streamzcontent-lengthr&   r¨   Úfulfill)#r¤   r   Úlocalsr   Ú
json_utilsrh   rT   rª   r(   Úplaywright._impl._fetchr"   re   Ú_requestÚ_connectionZ
_fetch_uidr«   r-   Úlenrf   r/   r^   Ú	b64encoderr   r   Ú
read_bytesr@   Ú	mimetypesÚ
guess_typerB   r¥   rZ   r©   rp   rq   r£   )r9   rª   r(   r«   rg   r¬   r­   ro   Úparamsr"   ÚlengthZfile_contentr0   r0   r1   r³   <  s\    


ÿÿ


ÿzRoute.fulfill)r&   r'   r(   r)   ÚmaxRedirectsÚtimeoutr5   c              	   ƒ   s&   ˆj  ‡ ‡‡‡‡‡‡fdd„¡I d H S )Nc                	      s   ˆj jjˆjˆˆˆ ˆˆˆd�S )N)rÀ   rÁ   )rž   r¥   Z_inner_fetchr0   ©r(   rÀ   r'   r)   r9   rÁ   r&   r0   r1   Ú<lambda>‰  s   ùzRoute.fetch.<locals>.<lambda>)r¸   Úwrap_api_call)r9   r&   r'   r(   r)   rÀ   rÁ   r0   rÂ   r1   Úfetch  s    	ÿzRoute.fetch)r&   r'   r(   r)   r5   c                 Ã   s2   t tttƒ ƒƒ}|  ¡  | j |¡ |  d¡ d S )NF)r   r%   r   r´   r¤   r¥   rj   r£   ©r9   r&   r'   r(   r)   rd   r0   r0   r1   Úfallback”  s    zRoute.fallbackc                 Ã   s@   t tttƒ ƒƒ}|  ¡  | j |¡ |  ¡ I d H  |  d¡ d S ©NT)	r   r%   r   r´   r¤   r¥   rj   Ú_internal_continuer£   rÆ   r0   r0   r1   Ú	continue_   s
    zRoute.continue_F)Úis_internalr5   c                    s   d dœ‡ ‡fdd„}|ƒ S )Nr4   c               
   “   sà   z®i ‰ ˆj jjˆ d< ˆj jjˆ d< ˆj jjˆ d< ˆj jjd urVt ˆj jj¡ ¡ ˆ d< t	ˆ ƒ‰ dˆ v rvt
ˆ d ƒˆ d< ˆj jd ˆ d< ˆˆ d< ˆj ‡ ‡fdd„ˆ¡I d H  W n, tyÚ }  zˆsÆ| ‚W Y d } ~ n
d } ~ 0 0 d S )	Nr&   r'   r(   r)   r¨   Z
isFallbackc                      s   ˆ  ˆj dˆ ¡¡S )NÚcontinue)r©   rp   rq   r0   )r¾   r9   r0   r1   rÃ   Á  s
   þÿzBRoute._internal_continue.<locals>.continue_route.<locals>.<lambda>)r¥   r]   r&   r'   r(   r7   r^   rº   rr   r   rB   rZ   r¸   rÄ   rx   )Úe©rË   r9   ©r¾   r1   Úcontinue_route°  s*    ÿù	z0Route._internal_continue.<locals>.continue_router0   )r9   rË   rÐ   r0   rÎ   r1   rÉ   ­  s    zRoute._internal_continue)r&   r5   c                 Ã   s4   |   ¡  |  | j dd|i¡¡I d H  |  d¡ d S )NZredirectNavigationRequestr&   T)r¤   r©   rp   rq   r£   )r9   r&   r0   r0   r1   Ú_redirected_navigation_requestÏ  s
    ÿ
z$Route._redirected_navigation_request)Úfuturer5   c                 Ã   sŒ   t  |¡}t|dtt  | j¡dt ¡ ƒƒ | j 	¡ }t j
||gt jd�I d H  | ¡ rl| ¡ rltt| ¡ ƒ‚| ¡ rˆt j|dd�I d H  d S )NZ__pw_stack__©Zreturn_whenT)Zreturn_exceptions)r“   Úcreate_taskÚsetattrÚgetattrZcurrent_taskZ_loopÚinspectÚstackr¥   r—   ÚwaitÚFIRST_COMPLETEDr¡   Ú	exceptionr   ÚBaseExceptionZgather)r9   rÒ   ZfutZtarget_closed_futurer0   r0   r1   r©   Ö  s    
ý
þzRoute._race_with_page_close)N)NNNNNNN)NNNNNN)NNNN)NNNN)F)r*   r+   r,   r   r-   r	   r:   r    r™   r£   r¤   rc   r˜   rC   r¥   r§   Úintr   r/   r   r   r³   rš   rÅ   rÇ   rÊ   r   rÉ   rÑ   r©   r›   r0   r0   r`   r1   rœ     sŽ   þ       ø


÷E      ù
ø    û
ú    û
ú ÿþ"rœ   c                       sv  e Zd Zeeeeddœ‡ fdd„Zedœdd„Zeedœdd	„ƒZ	ee
dœd
d„ƒZeedœdd„ƒZeedœdd„ƒZeedœdd„ƒZee
dœdd„ƒZedœdd„Zedœdd„Zeee dœdd„Zeee dœdd„Zddœdd„Zee dœd d!„Zee dœd"d#„Zddœd$d%„Zedœd&d'„Z edœd(d)„Z!e"dœd*d+„Z#ee$dœd,d-„ƒZ%ed.dœd/d0„ƒZ&‡  Z'S )1r{   NrD   c                    sÖ   t ƒ  ||||¡ t| jd ƒ| _| jd }|d | jjd< |d | jjd< |d | jjd< |d | jjd< |d | jjd< |d | jjd< |d	 | jjd	< |d
 | jjd
< ttt| jd ƒƒ| _	d | _
t ¡ | _d S )Nr¥   r…   rJ   rK   rL   rM   rN   rO   rP   rQ   r(   )rS   r:   r   rZ   r·   rX   rY   r   r   r[   Ú_raw_headers_futurer“   r”   Ú_finished_future)r9   rE   rF   rG   rH   r…   r`   r0   r1   r:   ê  s     
ÿzResponse.__init__r4   c                 C   s   d| j ›d| j› d�S )Nz<Response url=z	 request=rb   )r&   r¥   r8   r0   r0   r1   rc   þ  s    zResponse.__repr__c                 C   s
   | j d S rk   rl   r8   r0   r0   r1   r&     s    zResponse.urlc                 C   s*   | j d dkp(| j d dko(| j d dkS )Nrª   r   éÈ   i+  rl   r8   r0   r0   r1   Úok  s    ÿzResponse.okc                 C   s
   | j d S )Nrª   rl   r8   r0   r0   r1   rª     s    zResponse.statusc                 C   s
   | j d S )NZ
statusTextrl   r8   r0   r0   r1   Ústatus_text  s    zResponse.status_textc                 C   s
   | j  ¡ S r6   )r[   r(   r8   r0   r0   r1   r(     s    zResponse.headersc                 C   s
   | j d S )NZfromServiceWorkerrl   r8   r0   r0   r1   Úfrom_service_worker  s    zResponse.from_service_workerc                 Ã   s   |   ¡ I d H  ¡ S r6   rŠ   r8   r0   r0   r1   rŒ     s    zResponse.all_headersc                 Ã   s   |   ¡ I d H  ¡ S r6   r�   r8   r0   r0   r1   rŽ     s    zResponse.headers_arrayr�   c                 Ã   s   |   ¡ I d H  |¡S r6   r�   r‘   r0   r0   r1   r’   "  s    zResponse.header_valuec                 Ã   s   |   ¡ I d H  |¡S r6   )r‹   Úget_allr‘   r0   r0   r1   Úheader_values%  s    zResponse.header_valuesrY   c                 Ã   sD   | j s8t ¡ | _ tt| j d¡I d H ƒ}| j  t|ƒ¡ | j I d H S )NZrawResponseHeaders)	rÞ   r“   r”   r   r   rp   rq   r•   rY   )r9   r(   r0   r0   r1   r‹   (  s
    
zResponse._actual_headersc                 Ã   s   | j  d¡I d H S )NZ
serverAddr©rp   rq   r8   r0   r0   r1   Úserver_addr/  s    zResponse.server_addrc                 Ã   s   | j  d¡I d H S )NZsecurityDetailsræ   r8   r0   r0   r1   Úsecurity_details2  s    zResponse.security_detailsc                 ƒ   sf   d dœ‡ fdd„}t  |ƒ ¡}t jtttt jt jf  ˆ j|gƒt j	d�I d H  | 
¡ rb|I d H  d S )Nr4   c                   “   s   ˆ j  ¡ I d H  tdƒ‚d S )NzTarget closed)r·   r—   r   r0   r8   r0   r1   Úon_finished6  s    z&Response.finished.<locals>.on_finishedrÓ   )r“   rÔ   rÙ   r   r
   r   ZTaskr”   rß   rÚ   r¡   )r9   ré   Zon_finished_taskr0   r8   r1   Úfinished5  s    þûzResponse.finishedc                 Ã   s   | j  d¡I d H }t |¡S )Nr«   )rp   rq   r^   r_   )r9   Úbinaryr0   r0   r1   r«   E  s    zResponse.bodyc                 Ã   s   |   ¡ I d H }| ¡ S r6   )r«   rr   )r9   Úcontentr0   r0   r1   ÚtextI  s    zResponse.textc                 Ã   s   t  |  ¡ I d H ¡S r6   )rg   rw   rí   r8   r0   r0   r1   rg   M  s    zResponse.jsonc                 C   s   | j S r6   )r·   r8   r0   r0   r1   r¥   P  s    zResponse.requestr#   c                 C   s   | j jS r6   )r·   r|   r8   r0   r0   r1   r|   T  s    zResponse.frame)(r*   r+   r,   r   r-   r	   r:   rc   r˜   r&   r™   rá   rÝ   rª   râ   r   r(   rã   rŒ   r   rŽ   r   r’   r
   rå   r‹   r   rç   r   rè   rê   r/   r«   rí   r   rg   rC   r¥   r|   r›   r0   r0   r`   r1   r{   é  s>   þr{   c                       sÆ   e Zd Zeddddd�Zeeeeddœ‡ fdd	„Zed
œdd„Z	e
ed
œdd„ƒZdeeeedœdd„Zdeeeedœdd„Zeeddœdd„Zeeddœdd„Zed
œdd„Zdd
œdd„Z‡  ZS )Ú	WebSocketÚcloseZframereceivedZ	framesentZsocketerror)ÚCloseÚFrameReceivedÚ	FrameSentr   NrD   c                    s€   t ƒ  ||||¡ dˆ _td|ƒˆ _ˆ j d‡ fdd„¡ ˆ j d‡ fdd„¡ ˆ j d‡ fd	d„¡ ˆ j d
‡ fdd„¡ d S )NFr$   Z	frameSentc                    s   ˆ   | d | d ¡S ©NÚopcoders   )Ú_on_frame_sentrÏ   r8   r0   r1   rÃ   i  r²   z$WebSocket.__init__.<locals>.<lambda>ZframeReceivedc                    s   ˆ   | d | d ¡S ró   )Ú_on_frame_receivedrÏ   r8   r0   r1   rÃ   m  r²   ZsocketErrorc                    s   ˆ   tjj| d ¡S )NÚerror)Úemitrî   ÚEventsr   rÏ   r8   r0   r1   rÃ   q  r²   rï   c                    s   ˆ   ¡ S r6   )Ú	_on_closerÏ   r8   r0   r1   rÃ   s  r²   )rS   r:   Ú
_is_closedr   r~   rp   ÚonrŸ   r`   r8   r1   r:   a  s     
þ
þ
þzWebSocket.__init__r4   c                 C   s   d| j ›d�S )Nz<WebSocket url=rb   )r&   r8   r0   r0   r1   rc   u  s    zWebSocket.__repr__c                 C   s
   | j d S rk   rl   r8   r0   r0   r1   r&   x  s    zWebSocket.url)ÚeventÚ	predicaterÁ   r5   c                    sÂ   |d u rt tˆ jƒj ¡ }tˆ d|› d�ƒ}| t t|ƒd|› d|› d�¡ |tj	j
krn| ˆ tj	j
tdƒ¡ |tj	jkr�| ˆ tj	jtdƒ¡ | ˆ jd‡ fd	d
„¡ | ˆ ||¡ t| ¡ ƒS )Nzweb_socket.expect_event(ú)zTimeout z%ms exceeded while waiting for event "ú"zSocket closedzSocket errorrï   c                      s
   ˆ j  ¡ S r6   )r~   Z_close_error_with_reasonr0   r8   r0   r1   rÃ   Ž  r²   z(WebSocket.expect_event.<locals>.<lambda>)r   r   Ú_parentZ_timeout_settingsrÁ   r   Zreject_on_timeoutrš   rî   rù   rð   Zreject_on_eventr   r~   Úwait_for_eventr   Úresult)r9   rý   rþ   rÁ   Úwaiterr0   r8   r1   Úexpect_event|  s     þÿzWebSocket.expect_eventc              	   Ã   sL   |   |||¡4 I d H š}W d   ƒI d H  qB1 I d H s80    Y  |I d H S r6   )r  )r9   rý   rþ   rÁ   Z
event_infor0   r0   r1   r  “  s    *zWebSocket.wait_for_event)rô   rs   r5   c                 C   s<   |dkr |   tjjt |¡¡ n|dkr8|   tjj|¡ d S ©Né   é   )rø   rî   rù   rò   r^   r_   ©r9   rô   rs   r0   r0   r1   rõ   š  s    zWebSocket._on_frame_sentc                 C   s<   |dkr |   tjjt |¡¡ n|dkr8|   tjj|¡ d S r  )rø   rî   rù   rñ   r^   r_   r	  r0   r0   r1   rö      s    zWebSocket._on_frame_receivedc                 C   s   | j S r6   )rû   r8   r0   r0   r1   Ú	is_closed¦  s    zWebSocket.is_closedc                 C   s   d| _ |  tjj| ¡ d S rÈ   )rû   rø   rî   rù   rð   r8   r0   r0   r1   rú   ©  s    zWebSocket._on_close)NN)NN)r*   r+   r,   r   rù   r   r-   r	   r:   rc   r˜   r&   r   rš   r   r  r   r  rÝ   rõ   rö   r™   r
  rú   r›   r0   r0   r`   r1   rî   Y  s:   üþ  üû ÿþrî   c                   @   s„   e Zd Zeddœdd„Zeeeef d dœdd„ƒZee	e dœdd	„Z
eee dœd
d„Zeeef dœdd„Zedœdd„ZdS )rY   Nr;   c                 C   s8   || _ ttƒ| _|D ]}d| j|d  ¡  |d < qd S )NTr<   r=   )Ú_headers_arrayr   ru   Ú_headers_mapr®   )r9   r(   Úheaderr0   r0   r1   r:   ¯  s    
zRawHeaders.__init__c                 C   s   t t| ƒƒS r6   )rY   rB   rA   r0   r0   r1   rˆ   µ  s    z#RawHeaders._from_headers_dict_lossyr�   c                 C   s0   |   |¡}|sd S | ¡ dkr"dnd}| |¡S )Nz
set-cookier}   z, )rä   r®   r   )r9   r<   ÚvaluesÚ	separatorr0   r0   r1   rT   ¹  s
    
zRawHeaders.getc                 C   s   t | j| ¡   ¡ ƒS r6   )Úlistr  r®   Úkeysr‘   r0   r0   r1   rä   À  s    zRawHeaders.get_allr4   c                 C   s,   i }| j  ¡ D ]}tt|  |¡ƒ||< q|S r6   )r  r  r   r-   rT   )r9   r  r<   r0   r0   r1   r(   Ã  s    zRawHeaders.headersc                 C   s   | j S r6   )r  r8   r0   r0   r1   rŽ   É  s    zRawHeaders.headers_array)r*   r+   r,   r   r:   Ústaticmethodr	   r-   rˆ   r   rT   r
   rä   r(   rŽ   r0   r0   r0   r1   rY   ®  s   rY   )Ar“   r^   r×   rg   rµ   r¼   ÚsysÚcollectionsr   Úpathlibr   Útypesr   Útypingr   r   r   r   r	   r
   r   r   r   Úversion_infor   Ztyping_extensionsÚurllibr   Z playwright._impl._api_structuresr   r   r   r   r   r   Zplaywright._impl._connectionr   r   r   r   Zplaywright._impl._errorsr   Z'playwright._impl._event_context_managerr   Zplaywright._impl._helperr   Zplaywright._impl._waiterr   Z!playwright._impl._browser_contextr    r¶   r"   Zplaywright._impl._framer#   Zplaywright._impl._pager$   r%   r3   r-   rB   rC   rœ   r{   rî   rY   r0   r0   r0   r1   Ú<module>   sF   ,
  4 ZpU