Ë
    /æj  ã                  óÂ   — 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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mZmZ  G d„ d	e«      Z G d
„ de«      Z G d„ de«      Zy)é    )ÚannotationsNé   )ÚConnectErrorÚConnectTimeoutÚExceptionMappingÚ	ReadErrorÚReadTimeoutÚ
WriteErrorÚWriteTimeoutÚmap_exceptions)Úis_socket_readableé   )ÚSOCKET_OPTIONÚNetworkBackendÚNetworkStreamc                  ó€   — e Zd ZdZdZ	 	 d	 	 	 	 	 	 	 dd„Z	 	 	 	 dd„Zddd„Zddd„Zdd„Z		 	 d	 	 	 	 	 	 	 dd	„Z
dd
„Zy)ÚTLSinTLSStreamzì
    Because the standard `SSLContext.wrap_socket` method does
    not work for `SSLSocket` objects, we need this class
    to implement TLS stream using an underlying `SSLObject`
    instance in order to support TLS on top of TLS.
    i @  Nc                óP  — || _         t        j                  «       | _        t        j                  «       | _        |j                  | j                  | j                  |¬«      | _        | j                   j                  |«       | j                  | j                  j                  «       y )N)ÚincomingÚoutgoingÚserver_hostname)
Ú_sockÚsslÚ	MemoryBIOÚ	_incomingÚ	_outgoingÚwrap_bioÚssl_objÚ
settimeoutÚ_perform_ioÚdo_handshake)ÚselfÚsockÚssl_contextr   Útimeouts        ú[/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/httpcore2/_backends/sync.pyÚ__init__zTLSinTLSStream.__init__"   sy   € ð ˆŒ
ÜŸ™›ˆŒÜŸ™›ˆŒà"×+Ñ+Ø—^‘^Ø—^‘^Ø+ð ,ó 
ˆŒð 	�
‰
×Ñ˜gÔ&Ø×Ñ˜Ÿ™×2Ñ2Õ3ó    c                óä  — d }	 d }	  |«       }| j                  j                  | j                  j                  «       «       |t         j                  k(  r]| j                  j                  | j                  «      }|r| j                  j                  |«       n| j                  j                  «        |€|S Œ²# t         j                  t         j                  f$ r}|j                  }Y d }~ŒÜd }~ww xY w©N)r   ÚSSLWantReadErrorÚSSLWantWriteErrorÚerrnor   Úsendallr   ÚreadÚSSL_ERROR_WANT_READÚrecvÚTLS_RECORD_SIZEr   ÚwriteÚ	write_eof)r"   ÚfuncÚretr-   ÚeÚbufs         r&   r    zTLSinTLSStream._perform_io6   sÄ   € ð ˆàØˆEð Ù“f�ð �J‰J×Ñ˜tŸ~™~×2Ñ2Ó4Ô5àœ×/Ñ/Ò/Ø—j‘j—o‘o d×&:Ñ&:Ó;�áØ—N‘N×(Ñ(¨Õ-à—N‘N×,Ñ,Ô.Øˆ}Ø�
ð# øô ×(Ñ(¬#×*?Ñ*?Ð@ò  ØŸ™•ûð ús   ‡B6 Â6#C/ÃC*Ã*C/c           
     ó\  — t         j                  t        t        t        i}t        |«      5  | j                  j                  |«       t        j                  t        | j                  t        j                  | j                  j                  |«      «      «      cd d d «       S # 1 sw Y   y xY wr*   )Úsocketr%   r	   ÚOSErrorr   r   r   r   ÚtypingÚcastÚbytesr    Ú	functoolsÚpartialr   r/   ©r"   Ú	max_bytesr%   Úexc_maps       r&   r/   zTLSinTLSStream.readO   sx   € Ü%+§^¡^´[Ä'Ì9Ð$UˆÜ˜GÓ$ñ 	iØ�J‰J×!Ñ! 'Ô*Ü—;‘;œu d×&6Ñ&6´y×7HÑ7HÈÏÉ×IZÑIZÐ\eÓ7fÓ&gÓh÷	i÷ 	iò 	iús   ¬A,B"Â"B+c                óV  — t         j                  t        t        t        i}t        |«      5  | j                  j                  |«       t        |«      }|rA| j                  t        j                  | j                  j                  |«      «      }||d  }|rŒAd d d «       y # 1 sw Y   y xY wr*   )r:   r%   r   r;   r
   r   r   r   Ú
memoryviewr    r?   r@   r   r3   )r"   Úbufferr%   rC   ÚviewÚnsents         r&   r3   zTLSinTLSStream.writeU   s‡   € Ü%+§^¡^´\Ä7ÌJÐ$WˆÜ˜GÓ$ñ 	$Ø�J‰J×!Ñ! 'Ô*Ü˜fÓ%ˆDÙØ×(Ñ(¬×):Ñ):¸4¿<¹<×;MÑ;MÈtÓ)TÓU�Ø˜E˜F�|�ò ÷	$÷ 	$ñ 	$ús   ¬A)BÂB(c                ó8   — | j                   j                  «        y r*   ©r   Úclose©r"   s    r&   rK   zTLSinTLSStream.close^   ó   € Ø�
‰
×ÑÕr(   c                ó   — t        «       ‚r*   )ÚNotImplementedError)r"   r$   r   r%   s       r&   Ú	start_tlszTLSinTLSStream.start_tlsa   s   € ô "Ó#Ð#r(   c                óø   — |dk(  r| j                   S |dk(  r| j                  j                  «       S |dk(  r| j                  j                  «       S |dk(  r| j                  S |dk(  rt	        | j                  «      S y ©NÚ
ssl_objectÚclient_addrÚserver_addrr:   Úis_readable)r   r   ÚgetsocknameÚgetpeernamer   ©r"   Úinfos     r&   Úget_extra_infozTLSinTLSStream.get_extra_infoi   sv   € Ø�<ÒØ—<‘<ÐØ�=Ò Ø—:‘:×)Ñ)Ó+Ð+Ø�=Ò Ø—:‘:×)Ñ)Ó+Ð+Ø�8ÒØ—:‘:ÐØ�=Ò Ü% d§j¡jÓ1Ð1Ør(   ©NN)r#   úsocket.socketr$   ússl.SSLContextr   ú
str | Noner%   úfloat | None)r5   z typing.Callable[..., typing.Any]Úreturnú
typing.Anyr*   ©rB   Úintr%   r`   ra   r>   ©rF   r>   r%   r`   ra   ÚNone©ra   rf   ©r$   r^   r   r_   r%   r`   ra   r   ©rZ   Ústrra   rb   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r2   r'   r    r/   r3   rK   rP   r[   © r(   r&   r   r      s    „ ñð €Oð '+Ø $ð4àð4ð $ð4ð $ð	4ð
 ó4ð(à.ðð 
óô2iô$óð '+Ø $ð	$à#ð$ð $ð$ð ð	$ð
 
ó$ôr(   r   c                  óT   — e Zd Zdd„Zd	d
d„Zd	dd„Zdd„Z	 	 d	 	 	 	 	 	 	 dd„Zdd„Zy)Ú
SyncStreamc                ó   — || _         y r*   )r   )r"   r#   s     r&   r'   zSyncStream.__init__x   s	   € Øˆ�
r(   Nc                óð   — t         j                  t        t        t        i}t        |«      5  | j                  j                  |«       | j                  j                  |«      cd d d «       S # 1 sw Y   y xY wr*   )	r:   r%   r	   r;   r   r   r   r   r1   rA   s       r&   r/   zSyncStream.read{   sS   € Ü%+§^¡^´[Ä'Ì9Ð$UˆÜ˜GÓ$ñ 	.Ø�J‰J×!Ñ! 'Ô*Ø—:‘:—?‘? 9Ó-÷	.÷ 	.ò 	.ús   ¬6A,Á,A5c                ó   — |sy t         j                  t        t        t        i}t        |«      5  t        |«      }|r>| j                  j                  |«       | j                  j                  |«      }||d  }|rŒ>d d d «       y # 1 sw Y   y xY wr*   )
r:   r%   r   r;   r
   r   rE   r   r   Úsend)r"   rF   r%   rC   rG   Úns         r&   r3   zSyncStream.write�   sx   € ÙØä%+§^¡^´\Ä7ÌJÐ$WˆÜ˜GÓ$ñ 	 Ü˜fÓ%ˆDÙØ—
‘
×%Ñ% gÔ.Ø—J‘J—O‘O DÓ)�Ø˜A˜B�x�ò ÷	 ÷ 	 ñ 	 ús   ¯ABÂBc                ó8   — | j                   j                  «        y r*   rJ   rL   s    r&   rK   zSyncStream.close�   rM   r(   c                óð  — t         j                  t        t        t        i}t        |«      5  	 t        | j                  t        j                  «      r!t        | j                  |||«      cd d d «       S | j                  j                  |«       |j                  | j                  |¬«      }	 d d d «       t        |«      S # t        $ r}| j                  «        |‚d }~ww xY w# 1 sw Y   t        «      S xY w)N)r   )r:   r%   r   r;   r   r   Ú
isinstancer   r   Ú	SSLSocketr   r   Úwrap_socketÚ	ExceptionrK   rq   )r"   r$   r   r%   rC   r#   Úexcs          r&   rP   zSyncStream.start_tls�   sÐ   € ô �N‰NœNÜ”\ð%
ˆô ˜GÓ$ñ 	ðÜ˜dŸj™j¬#¯-©-Ô8ô *¨$¯*©*°kÀ?ÐT[Ó\÷	ñ 	ð —J‘J×)Ñ)¨'Ô2Ø&×2Ñ2°4·:±:ÈÐ2Ó_‘D÷	ô ˜$ÓÐøô ò Ø—
‘
”Ø�	ûðú÷	ô ˜$ÓÐús.   ¬C"®;B?Á38B?Â?	CÃCÃCÃC"Ã"C5c                óT  — |dk(  r:t        | j                  t        j                  «      r| j                  j                  S |dk(  r| j                  j                  «       S |dk(  r| j                  j                  «       S |dk(  r| j                  S |dk(  rt        | j                  «      S y rR   )ry   r   r   rz   Ú_sslobjrW   rX   r   rY   s     r&   r[   zSyncStream.get_extra_info©   s�   € Ø�<Ò¤J¨t¯z©z¼3¿=¹=Ô$IØ—:‘:×%Ñ%Ð%Ø�=Ò Ø—:‘:×)Ñ)Ó+Ð+Ø�=Ò Ø—:‘:×)Ñ)Ó+Ð+Ø�8ÒØ—:‘:ÐØ�=Ò Ü% d§j¡jÓ1Ð1Ør(   )r#   r]   ra   rf   r*   rc   re   rg   r\   rh   ri   )	rk   rl   rm   r'   r/   r3   rK   rP   r[   ro   r(   r&   rq   rq   w   sN   „ óô.ô
 óð '+Ø $ð	 à#ð ð $ð ð ð	 ð
 
ó ô2r(   rq   c                  óN   — e Zd Z	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 d	 	 	 	 	 	 	 dd„Zy)ÚSyncBackendNc                ó†  — |€g }||f}|€d n|df}t         j                  t        t        t        i}t        |«      5  t        j                  |||¬«      }	|D ]  }
 |	j                  |
Ž  Œ |	j                  t         j                  t         j                  d«       d d d «       t        |	«      S # 1 sw Y   t        	«      S xY w)Nr   )Úsource_addressr   )r:   r%   r   r;   r   r   Úcreate_connectionÚ
setsockoptÚIPPROTO_TCPÚTCP_NODELAYrq   )r"   ÚhostÚportr%   Úlocal_addressÚsocket_optionsÚaddressrƒ   rC   r#   Úoptions              r&   Úconnect_tcpzSyncBackend.connect_tcp¸   sÉ   € ð Ð!ØˆNØ˜�,ˆØ!.Ð!6™¸]ÈAÐ<Nˆä�N‰NœNÜ”\ð%
ˆô
 ˜GÓ$ñ 	GÜ×+Ñ+ØØØ-ôˆDð
 )ò )�Ø�—‘ Ò(ð)à�O‰OœF×.Ñ.´×0BÑ0BÀAÔF÷	Gô ˜$ÓÐ÷	Gô ˜$ÓÐús   ¼AB-Â-C c                óÄ  — t         j                  dk(  rt        d«      ‚|€g }t        j                  t
        t        t        i}t        |«      5  t        j                  t        j                  t        j                  «      }|D ]  } |j                  |Ž  Œ |j                  |«       |j                  |«       d d d «       t        |«      S # 1 sw Y   t        «      S xY w)NÚwin32z:Attempted to connect to a UNIX socket on a Windows system.)ÚsysÚplatformÚRuntimeErrorr:   r%   r   r;   r   r   ÚAF_UNIXÚSOCK_STREAMr…   r   Úconnectrq   )r"   Úpathr%   r‹   rC   r#   r�   s          r&   Úconnect_unix_socketzSyncBackend.connect_unix_socketÖ   sÁ   € ô �<‰<˜7Ò"ÜÐ[Ó\Ð\ØÐ!ØˆNô �N‰NœNÜ”\ð%
ˆô ˜GÓ$ñ 	Ü—=‘=¤§¡´×1CÑ1CÓDˆDØ(ò )�Ø�—‘ Ò(ð)à�O‰O˜GÔ$Ø�L‰L˜Ô÷	ô ˜$ÓÐ÷	ô ˜$ÓÐús   ÁA+CÃC)NNN)rˆ   rj   r‰   rd   r%   r`   rŠ   r_   r‹   ú%typing.Iterable[SOCKET_OPTION] | Nonera   r   r\   )r—   rj   r%   r`   r‹   r™   ra   r   )rk   rl   rm   rŽ   r˜   ro   r(   r&   r�   r�   ·   s€   „ ð
 !%Ø$(Ø@Dð àð ð ð ð ð	 ð
 "ð ð >ð ð 
ó ðB !%Ø@Dð	 àð ð ð ð >ð	 ð
 
ô r(   r�   )Ú
__future__r   r?   r:   r   r‘   r<   Ú_exceptionsr   r   r   r   r	   r
   r   r   Ú_utilsr   Úbaser   r   r   r   rq   r�   ro   r(   r&   ú<module>rž      sY   ðÝ "ã Û Û 
Û 
Û ÷	÷ 	ó 	õ (ß >Ñ >ô]�]ô ]ô@=�ô =ô@4 �.õ 4 r(   