o
    7'h86  ã                   @  s  d dl m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Zddl	m
Z
 ddlmZmZmZmZmZ ddlmZmZmZ ddlmZmZ ddlmZ d	d
lmZ e d¡Zejejejej f Z!G dd„ dej"ƒZ#G dd„ deƒZ$G dd„ dƒZ%G dd„ de
ƒZ&dS )é    )ÚannotationsNé   )ÚAsyncNetworkStream)ÚConnectionNotAvailableÚLocalProtocolErrorÚRemoteProtocolErrorÚ
WriteErrorÚmap_exceptions)ÚOriginÚRequestÚResponse)Ú	AsyncLockÚAsyncShieldCancellation)ÚTraceé   )ÚAsyncConnectionInterfacezhttpcore.http11c                   @  s   e Zd ZdZdZdZdZdS )ÚHTTPConnectionStater   r   r   é   N)Ú__name__Ú
__module__Ú__qualname__ÚNEWÚACTIVEÚIDLEÚCLOSED© r   r   úLC:\Users\shubh\Videos\agent\nova\Lib\site-packages\httpcore/_async/http11.pyr   $   s
    r   c                   @  sä   e Zd ZdZdZ	dCdDdd„ZdEdd„ZdFdd„ZdFdd„ZdCdGdd„Z	dHdd„Z
dId d!„Z	dCdJd#d$„ZdKd%d&„ZdKd'd(„ZdLd*d+„ZdMd,d-„ZdMd.d/„ZdMd0d1„ZdMd2d3„ZdNd5d6„ZdNd7d8„ZdOd9d:„Z			dPdQdAdB„ZdS )RÚAsyncHTTP11Connectioni   i � NÚoriginr
   Ústreamr   Úkeepalive_expiryúfloat | NoneÚreturnÚNonec                 C  sF   || _ || _|| _d | _tj| _tƒ | _d| _	t
jt
j| jd�| _d S )Nr   )Zour_roleZmax_incomplete_event_size)Ú_originÚ_network_streamÚ_keepalive_expiryÚ
_expire_atr   r   Ú_stater   Ú_state_lockÚ_request_countÚh11Ú
ConnectionZCLIENTÚMAX_INCOMPLETE_EVENT_SIZEÚ
_h11_state)Úselfr   r   r    r   r   r   Ú__init__/   s   þzAsyncHTTP11Connection.__init__Úrequestr   r   c                 Ã  sæ  �|   |jj¡std|jj› d| j› �ƒ‚| j4 I d H š& | jtjtj	fv r5|  j
d7  _
tj| _d | _ntƒ ‚W d   ƒI d H  n1 I d H sHw   Y  zÑd|i}zZtdt||ƒ4 I d H š}| jdi |¤ŽI d H  W d   ƒI d H  n1 I d H szw   Y  tdt||ƒ4 I d H š}| jdi |¤ŽI d H  W d   ƒI d H  n1 I d H s¦w   Y  W n	 tyµ   Y nw tdt||ƒ4 I d H š"}| jdi |¤ŽI d H \}}}}}||||f|_W d   ƒI d H  n1 I d H séw   Y  | j}	|dk�s
|jd	k�rd
|  k�rdk �rn nt|	|ƒ}	t||t| |ƒ|||	dœd�W S  t�yr }
 zGtƒ �9 tdt|ƒ4 I d H š}|  ¡ I d H  W d   ƒI d H  n1 I d H �sNw   Y  W d   ƒ |
‚W d   ƒ |
‚1 �sgw   Y  |
‚d }
~
ww )NzAttempted to send request to z on connection to r   r1   Zsend_request_headersZsend_request_bodyZreceive_response_headersée   s   CONNECTéÈ   i,  )Úhttp_versionÚreason_phraseÚnetwork_stream)ÚstatusÚheadersÚcontentÚ
extensionsÚresponse_closedr   )Úcan_handle_requestÚurlr   ÚRuntimeErrorr$   r)   r(   r   r   r   r*   r   r'   r   r   ÚloggerÚ_send_request_headersÚ_send_request_bodyr   Ú_receive_response_headersÚreturn_valuer%   ÚmethodÚAsyncHTTP11UpgradeStreamr   ÚHTTP11ConnectionByteStreamÚBaseExceptionr   Ú_response_closed)r/   r1   ÚkwargsÚtracer4   r7   r5   r8   Útrailing_datar6   Úexcr   r   r   Úhandle_async_requestA   s”   €ÿÿ(úÿ(ý(ÿ€úÿúü(ö
(
ýü
,ÿ
ÿþ
ÿý€üz*AsyncHTTP11Connection.handle_async_requestc                 Ã  sz   �|j  di ¡}| dd ¡}ttjtiƒ� tj|j|jj|j	d�}W d   ƒ n1 s,w   Y  | j
||d�I d H  d S )NÚtimeoutÚwrite)rD   Útargetr8   ©rN   )r:   Úgetr	   r+   r   r   rD   r=   rP   r8   Ú_send_event©r/   r1   ÚtimeoutsrN   Úeventr   r   r   r@   Œ   s   €ýÿz+AsyncHTTP11Connection._send_request_headersc                 Ã  s€   �|j  di ¡}| dd ¡}t|jtjƒsJ ‚|j2 z3 d H W }tj|d�}| j||d�I d H  q6 | jt 	¡ |d�I d H  d S )NrN   rO   )ÚdatarQ   )
r:   rR   Ú
isinstancer   ÚtypingÚAsyncIterabler+   ÚDatarS   ÚEndOfMessage)r/   r1   rU   rN   ÚchunkrV   r   r   r   rA   ˜   s   €þz(AsyncHTTP11Connection._send_request_bodyrV   ú	h11.EventrN   c                 Ã  s4   �| j  |¡}|d ur| jj||d�I d H  d S d S )NrQ   )r.   Úsendr%   rO   )r/   rV   rN   Zbytes_to_sendr   r   r   rS   £   s
   €ÿz!AsyncHTTP11Connection._send_eventú:tuple[bytes, int, bytes, list[tuple[bytes, bytes]], bytes]c           	      Ã  sŠ   �|j  di ¡}| dd ¡}	 | j|d�I d H }t|tjƒrnt|tjƒr+|jdkr+nqd|j }|j	 
¡ }| jj\}}||j|j||fS )NrN   ÚreadTrQ   r2   s   HTTP/)r:   rR   Ú_receive_eventrX   r+   r   ZInformationalResponseÚstatus_coder4   r8   Ú	raw_itemsr.   rK   Úreason)	r/   r1   rU   rN   rV   r4   r8   rK   Ú_r   r   r   rB   ª   s    €
ÿ
ø


z/AsyncHTTP11Connection._receive_response_headersútyping.AsyncIterator[bytes]c                 C sb   �|j  di ¡}| dd ¡}	 | j|d�I d H }t|tjƒr%t|jƒV  nt|tjtj	fƒr0d S q)NrN   ra   TrQ   )
r:   rR   rb   rX   r+   r[   ÚbytesrW   r\   ZPAUSEDrT   r   r   r   Ú_receive_response_bodyÄ   s   €ûz,AsyncHTTP11Connection._receive_response_bodyúh11.Event | type[h11.PAUSED]c                 Ã  s”   �	 t tjtiƒ� | j ¡ }W d   ƒ n1 sw   Y  |tju rG| jj| j|d�I d H }|dkr@| jj	tj
kr@d}t|ƒ‚| j |¡ n|S q)NTrQ   ó    z/Server disconnected without sending a response.)r	   r+   r   r.   Z
next_eventZ	NEED_DATAr%   ra   ÚREAD_NUM_BYTESÚtheir_stateZSEND_RESPONSEZreceive_data)r/   rN   rV   rW   Úmsgr   r   r   rb   Ñ   s   €ÿ
ÿèz$AsyncHTTP11Connection._receive_eventc              	   Ã  s´   �| j 4 I d H šE | jjtju r0| jjtju r0tj| _| j 	¡  | j
d ur/t ¡ }|| j
 | _n|  ¡ I d H  W d   ƒI d H  d S W d   ƒI d H  d S 1 I d H sSw   Y  d S ©N)r)   r.   Z	our_stater+   ZDONErm   r   r   r(   Zstart_next_cycler&   ÚtimeÚ	monotonicr'   Úaclose)r/   Únowr   r   r   rH   î   s   €

€õ€. z&AsyncHTTP11Connection._response_closedc                 Ã  s   �t j| _| j ¡ I d H  d S ro   )r   r   r(   r%   rr   ©r/   r   r   r   rr   þ   s   €zAsyncHTTP11Connection.acloseÚboolc                 C  s
   || j kS ro   )r$   ©r/   r   r   r   r   r<     s   
z(AsyncHTTP11Connection.can_handle_requestc                 C  ó   | j tjkS ro   ©r(   r   r   rt   r   r   r   Úis_available  s   z"AsyncHTTP11Connection.is_availablec                 C  s<   t  ¡ }| jd uo|| jk}| jtjko| j d¡}|p|S )NZis_readable)rp   rq   r'   r(   r   r   r%   Úget_extra_info)r/   rs   Zkeepalive_expiredZserver_disconnectedr   r   r   Úhas_expired  s   
þz!AsyncHTTP11Connection.has_expiredc                 C  rw   ro   rx   rt   r   r   r   Úis_idle   ó   zAsyncHTTP11Connection.is_idlec                 C  rw   ro   )r(   r   r   rt   r   r   r   Ú	is_closed#  r}   zAsyncHTTP11Connection.is_closedÚstrc                 C  s$   t | jƒ}|›d| jj› d| j› �S )Nz, HTTP/1.1, ú, Request Count: )r   r$   r(   Únamer*   rv   r   r   r   Úinfo&  s
   
ÿÿzAsyncHTTP11Connection.infoc              	   C  s6   | j j}t| jƒ}d|› d|›d| jj› d| j› d�	S )Nú<z [z, r€   z]>)Ú	__class__r   r   r$   r(   r�   r*   )r/   Ú
class_namer   r   r   r   Ú__repr__-  s   
ÿÿzAsyncHTTP11Connection.__repr__c                 Ã  s   �| S ro   r   rt   r   r   r   Ú
__aenter__8  s   €z AsyncHTTP11Connection.__aenter__Úexc_typeútype[BaseException] | NoneÚ	exc_valueúBaseException | NoneÚ	tracebackútypes.TracebackType | Nonec                 Ã  s   �|   ¡ I d H  d S ro   )rr   )r/   rˆ   rŠ   rŒ   r   r   r   Ú	__aexit__;  s   €zAsyncHTTP11Connection.__aexit__ro   )r   r
   r   r   r    r!   r"   r#   )r1   r   r"   r   )r1   r   r"   r#   )rV   r^   rN   r!   r"   r#   )r1   r   r"   r`   )r1   r   r"   rg   )rN   r!   r"   rj   ©r"   r#   )r   r
   r"   ru   )r"   ru   )r"   r   )r"   r   )NNN)rˆ   r‰   rŠ   r‹   rŒ   r�   r"   r#   )r   r   r   rl   r-   r0   rM   r@   rA   rS   rB   ri   rb   rH   rr   r<   ry   r{   r|   r~   r‚   r†   r‡   rŽ   r   r   r   r   r   +   s6    ü

K


ÿ










ür   c                   @  s*   e Zd Zddd„Zdd
d„Zddd„ZdS )rF   Ú
connectionr   r1   r   r"   r#   c                 C  s   || _ || _d| _d S )NF)Ú_connectionÚ_requestÚ_closed)r/   r�   r1   r   r   r   r0   E  s   
z#HTTP11ConnectionByteStream.__init__rg   c                 C sÖ   �d| j i}z;tdt| j |ƒ4 I d H š! | jjdi |¤Ž2 z	3 d H W }|V  q6 W d   ƒI d H  W d S 1 I d H s:w   Y  W d S  tyj } ztƒ � |  ¡ I d H  W d   ƒ |‚1 s_w   Y  |‚d }~ww )Nr1   Zreceive_response_bodyr   )r’   r   r?   r‘   ri   rG   r   rr   )r/   rI   r]   rL   r   r   r   Ú	__aiter__J  s"   €
ÿ2ÿ
ÿþ€úz$HTTP11ConnectionByteStream.__aiter__c              	   Ã  sj   �| j s3d| _ tdt| jƒ4 I d H š | j ¡ I d H  W d   ƒI d H  d S 1 I d H s,w   Y  d S d S )NTr;   )r“   r   r?   r’   r‘   rH   rt   r   r   r   rr   X  s   €.ÿþz!HTTP11ConnectionByteStream.acloseN)r�   r   r1   r   r"   r#   )r"   rg   r�   )r   r   r   r0   r”   rr   r   r   r   r   rF   D  s    

rF   c                   @  sR   e Zd Zd dd„Zd!d"dd„Zd!d#dd„Zd$dd„Z				d%d&dd„Zd'dd„Zd	S )(rE   r   r   Úleading_datarh   r"   r#   c                 C  s   || _ || _d S ro   )Ú_streamÚ_leading_data)r/   r   r•   r   r   r   r0   `  s   
z!AsyncHTTP11UpgradeStream.__init__NÚ	max_bytesÚintrN   r!   c                 Ã  s>   �| j r| j d |… }| j |d … | _ |S | j ||¡I d H S ro   )r—   r–   ra   )r/   r˜   rN   Úbufferr   r   r   ra   d  s   €zAsyncHTTP11UpgradeStream.readrš   c                 Ã  s   �| j  ||¡I d H  d S ro   )r–   rO   )r/   rš   rN   r   r   r   rO   l  s   €zAsyncHTTP11UpgradeStream.writec                 Ã  s   �| j  ¡ I d H  d S ro   )r–   rr   rt   r   r   r   rr   o  s   €zAsyncHTTP11UpgradeStream.acloseÚssl_contextússl.SSLContextÚserver_hostnameú
str | Nonec                 Ã  s   �| j  |||¡I d H S ro   )r–   Ú	start_tls)r/   r›   r�   rN   r   r   r   rŸ   r  s   €z"AsyncHTTP11UpgradeStream.start_tlsr‚   r   ú
typing.Anyc                 C  s   | j  |¡S ro   )r–   rz   )r/   r‚   r   r   r   rz   z  r}   z'AsyncHTTP11UpgradeStream.get_extra_info)r   r   r•   rh   r"   r#   ro   )r˜   r™   rN   r!   r"   rh   )rš   rh   rN   r!   r"   r#   r�   )NN)r›   rœ   r�   rž   rN   r!   r"   r   )r‚   r   r"   r    )	r   r   r   r0   ra   rO   rr   rŸ   rz   r   r   r   r   rE   _  s    

ürE   )'Ú
__future__r   ÚenumÚloggingÚsslrp   ÚtypesrY   r+   Z_backends.baser   Ú_exceptionsr   r   r   r   r	   Z_modelsr
   r   r   Z_synchronizationr   r   Ú_tracer   Z
interfacesr   Ú	getLoggerr?   ÚUnionr[   r\   ZH11SendEventÚIntEnumr   r   rF   rE   r   r   r   r   Ú<module>   s6    
þÿ  