o
    7'h¤4  ã                   @  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é   )ÚNetworkStream)ÚConnectionNotAvailableÚLocalProtocolErrorÚRemoteProtocolErrorÚ
WriteErrorÚmap_exceptions)ÚOriginÚRequestÚResponse)ÚLockÚShieldCancellation)ÚTraceé   )ÚConnectionInterfacez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   úKC:\Users\shubh\Videos\agent\nova\Lib\site-packages\httpcore/_sync/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ÚHTTP11Connectioni   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HTTP11Connection.__init__Úrequestr   r   c                 C  s`  |   |jj¡std|jj› d| j› �ƒ‚| j�# | jtjtj	fv r0|  j
d7  _
tj| _d | _ntƒ ‚W d   ƒ n1 s=w   Y  z¦d|i}z@tdt||ƒ�}| jdi |¤Ž W d   ƒ n1 sbw   Y  tdt||ƒ�}| jdi |¤Ž W d   ƒ n1 s�w   Y  W n	 ty�   Y nw tdt||ƒ�}| jdi |¤Ž\}}}}}||||f|_W d   ƒ n1 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�y/ }
 z:tƒ �, tdt|ƒ�}|  ¡  W d   ƒ n1 �sw   Y  W d   ƒ |
‚W d   ƒ |
‚1 �s$w   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ÚHTTP11UpgradeStreamr   ÚHTTP11ConnectionByteStreamÚBaseExceptionr   Ú_response_closed)r/   r1   ÚkwargsÚtracer4   r7   r5   r8   Útrailing_datar6   Úexcr   r   r   Úhandle_requestA   s”   ÿÿþüÿýÿ€úÿúüö"
ýü

 ÿ
ÿþ
ÿý€üzHTTP11Connection.handle_requestc                 C  sr   |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� 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&HTTP11Connection._send_request_headersc                 C  sh   |j  di ¡}| dd ¡}t|jtjƒsJ ‚|jD ]}tj|d�}| j||d� q| jt 	¡ |d� d S )NrN   rO   )ÚdatarQ   )
r:   rR   Ú
isinstancer   ÚtypingÚIterabler+   ÚDatarS   ÚEndOfMessage)r/   r1   rU   rN   ÚchunkrV   r   r   r   rA   ˜   s   
z#HTTP11Connection._send_request_bodyrV   ú	h11.EventrN   c                 C  s,   | j  |¡}|d ur| jj||d� d S d S )NrQ   )r.   Úsendr%   rO   )r/   rV   rN   Zbytes_to_sendr   r   r   rS   £   s   ÿzHTTP11Connection._send_eventú:tuple[bytes, int, bytes, list[tuple[bytes, bytes]], bytes]c           	      C  s‚   |j  di ¡}| dd ¡}	 | j|d�}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*HTTP11Connection._receive_response_headersútyping.Iterator[bytes]c                 c  s\   � |j  di ¡}| dd ¡}	 | j|d�}t|tjƒr"t|jƒV  nt|tjtj	fƒr-d S q)NrN   ra   TrQ   )
r:   rR   rb   rX   r+   r[   ÚbytesrW   r\   ZPAUSEDrT   r   r   r   Ú_receive_response_bodyÄ   s   €ûz'HTTP11Connection._receive_response_bodyúh11.Event | type[h11.PAUSED]c                 C  sŒ   	 t tjtiƒ� | j ¡ }W d   ƒ n1 sw   Y  |tju rC| jj| j|d�}|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HTTP11Connection._receive_eventc                 C  s’   | j �< | jjtju r+| jjtju r+tj| _| j 	¡  | j
d ur*t ¡ }|| j
 | _n|  ¡  W d   ƒ d S W d   ƒ d S 1 sBw   Y  d S ©N)r)   r.   Z	our_stater+   ZDONErm   r   r   r(   Zstart_next_cycler&   ÚtimeÚ	monotonicr'   Úclose)r/   Únowr   r   r   rH   î   s   

€
õ€" z!HTTP11Connection._response_closedc                 C  s   t j| _| j ¡  d S ro   )r   r   r(   r%   rr   ©r/   r   r   r   rr   þ   s   zHTTP11Connection.closeÚboolc                 C  s
   || j kS ro   )r$   ©r/   r   r   r   r   r<     s   
z#HTTP11Connection.can_handle_requestc                 C  ó   | j tjkS ro   ©r(   r   r   rt   r   r   r   Úis_available  s   zHTTP11Connection.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HTTP11Connection.has_expiredc                 C  rw   ro   rx   rt   r   r   r   Úis_idle   ó   zHTTP11Connection.is_idlec                 C  rw   ro   )r(   r   r   rt   r   r   r   Ú	is_closed#  r}   zHTTP11Connection.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HTTP11Connection.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HTTP11Connection.__repr__c                 C  s   | S ro   r   rt   r   r   r   Ú	__enter__8  s   zHTTP11Connection.__enter__Úexc_typeútype[BaseException] | NoneÚ	exc_valueúBaseException | NoneÚ	tracebackútypes.TracebackType | Nonec                 C  s   |   ¡  d S ro   )rr   )r/   rˆ   rŠ   rŒ   r   r   r   Ú__exit__;  s   zHTTP11Connection.__exit__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 |ƒ� | jjdi |¤ŽD ]}|V  qW d   ƒ W d S 1 s+w   Y  W d S  tyX } ztƒ � |  ¡  W d   ƒ |‚1 sMw   Y  |‚d }~ww )Nr1   Zreceive_response_bodyr   )r’   r   r?   r‘   ri   rG   r   rr   )r/   rI   r]   rL   r   r   r   Ú__iter__J  s"   €
ÿ&ÿ

ÿþ€úz#HTTP11ConnectionByteStream.__iter__c                 C  sN   | j s%d| _ tdt| jƒ� | j ¡  W d   ƒ d S 1 sw   Y  d S d S )NTr;   )r“   r   r?   r’   r‘   rH   rt   r   r   r   rr   X  s   "ÿþz HTTP11ConnectionByteStream.closeN)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HTTP11UpgradeStream.__init__NÚ	max_bytesÚintrN   r!   c                 C  s6   | j r| j d |… }| j |d … | _ |S | j ||¡S ro   )r—   r–   ra   )r/   r˜   rN   Úbufferr   r   r   ra   d  s
   zHTTP11UpgradeStream.readrš   c                 C  s   | j  ||¡ d S ro   )r–   rO   )r/   rš   rN   r   r   r   rO   l  s   zHTTP11UpgradeStream.writec                 C  s   | j  ¡  d S ro   )r–   rr   rt   r   r   r   rr   o  s   zHTTP11UpgradeStream.closeÚssl_contextússl.SSLContextÚserver_hostnameú
str | Nonec                 C  s   | j  |||¡S ro   )r–   Ú	start_tls)r/   r›   r�   rN   r   r   r   rŸ   r  s   zHTTP11UpgradeStream.start_tlsr‚   r   ú
typing.Anyc                 C  s   | j  |¡S ro   )r–   rz   )r/   r‚   r   r   r   rz   z  r}   z"HTTP11UpgradeStream.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    
þÿ  