ó
    §ZÇh)  ã                  óÂ   • S SK Jr  S SKrS SKrS SKrS SKrS SKrSSKJrJ	r	J
r
JrJrJrJrJr  SSKJr  SSKJrJrJr   " S S	\5      r " S
 S\5      r " S S\5      rg)é    )ÚannotationsNé   )ÚConnectErrorÚConnectTimeoutÚExceptionMappingÚ	ReadErrorÚReadTimeoutÚ
WriteErrorÚWriteTimeoutÚmap_exceptions)Úis_socket_readableé   )ÚSOCKET_OPTIONÚNetworkBackendÚNetworkStreamc                  óž   • \ rS rSrSrSr  S       SS jjr    SS jrSSS jjrSSS jjr	SS	 jr
  S       SS
 jjrSS jrSrg)ÚTLSinTLSStreamé   zØ
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                óL  • Xl         [        R                  " 5       U l        [        R                  " 5       U l        UR                  U R                  U R                  US9U l        U R                   R                  U5        U R                  U R                  R                  5        g )N)ÚincomingÚoutgoingÚserver_hostname)
Ú_sockÚsslÚ	MemoryBIOÚ	_incomingÚ	_outgoingÚwrap_bioÚssl_objÚ
settimeoutÚ_perform_ioÚdo_handshake)ÚselfÚsockÚssl_contextr   Útimeouts        ÚT/home/mande/repo/quber/.venv/lib/python3.13/site-packages/httpcore/_backends/sync.pyÚ__init__ÚTLSinTLSStream.__init__"   sw   € ð Œ
ÜŸš›ˆŒÜŸš›ˆŒà"×+Ñ+Ø—^‘^Ø—^‘^Ø+ð ,ð 
ˆŒð 	�
‰
×Ñ˜gÔ&Ø×Ñ˜Ÿ™×2Ñ2Õ3ó    c                óö  • S n S n U" 5       nU R                  R                  U R                  R                  5       5        U[         R                  :X  ab  U R                  R                  U R                  5      nU(       a  U R                  R                  U5        OU R                  R                  5         Uc  U$ Mº  ! [         R                  [         R                  4 a  nUR                  n S nANåS nAff = f©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!   ÚTLSinTLSStream._perform_io6   sÄ   € ð ˆàØˆEð Ù“f�ð �J‰J×Ñ˜tŸ~™~×2Ñ2Ó4Ô5àœ×/Ñ/Ó/Ø—j‘j—o‘o d×&:Ñ&:Ó;�æØ—N‘N×(Ñ(¨Õ-à—N‘N×,Ñ,Ô.Ø‰}Ø�
ñ# øô ×(Ñ(¬#×*?Ñ*?Ð@ó  ØŸ™•ûð ús   ‡B> Â>$C8Ã"C3Ã3C8c           
     ój  • [         R                  [        [        [        0n[        U5         U R                  R                  U5        [        R                  " [        U R                  [        R                  " U R                  R                  U5      5      5      sS S S 5        $ ! , (       d  f       g = fr,   )Úsocketr&   r	   ÚOSErrorr   r   r   r    ÚtypingÚcastÚbytesr!   Ú	functoolsÚpartialr   r1   ©r#   Ú	max_bytesr&   Úexc_maps       r'   r1   ÚTLSinTLSStream.readO   sm   € Ü%+§^¡^´[Ä'Ì9Ð$UˆÜ˜GÕ$Ø�J‰J×!Ñ! 'Ô*Ü—;’;Ü�t×'Ñ'¬	×(9Ò(9¸$¿,¹,×:KÑ:KÈYÓ(WÓXó÷ %×$×$ús   ¬A.B$Â$
B2c                ó`  • [         R                  [        [        [        0n[        U5         U R                  R                  U5        U(       aG  U R                  [        R                  " U R                  R                  U5      5      nXS  nU(       a  MG  S S S 5        g ! , (       d  f       g = fr,   )r=   r&   r   r>   r
   r   r   r    r!   rB   rC   r   r5   )r#   Úbufferr&   rF   Únsents        r'   r5   ÚTLSinTLSStream.writeW   st   € Ü%+§^¡^´\Ä7ÌJÐ$WˆÜ˜GÕ$Ø�J‰J×!Ñ! 'Ô*ÞØ×(Ñ(¬×):Ò):¸4¿<¹<×;MÑ;MÈvÓ)VÓW�Ø ˜�÷ �&÷ %×$Ö$ús   ¬A(BÂ
B-c                ó8   • U R                   R                  5         g r,   ©r   Úclose©r#   s    r'   rN   ÚTLSinTLSStream.close_   ó   € Ø�
‰
×ÑÕr*   c                ó   • [        5       er,   )ÚNotImplementedError)r#   r%   r   r&   s       r'   Ú	start_tlsÚTLSinTLSStream.start_tlsb   s   € ô "Ó#Ð#r*   c                ó  • US:X  a  U R                   $ US:X  a  U R                  R                  5       $ US:X  a  U R                  R                  5       $ US:X  a  U R                  $ US:X  a  [	        U R                  5      $ g ©NÚ
ssl_objectÚclient_addrÚserver_addrr=   Úis_readable)r   r   ÚgetsocknameÚgetpeernamer   ©r#   Úinfos     r'   Úget_extra_infoÚTLSinTLSStream.get_extra_infoj   sv   € Ø�<ÓØ—<‘<ÐØ�=Ó Ø—:‘:×)Ñ)Ó+Ð+Ø�=Ó Ø—:‘:×)Ñ)Ó+Ð+Ø�8ÓØ—:‘:ÐØ�=Ó Ü% d§j¡jÓ1Ð1Ør*   )r   r   r   r   ©NN)r$   úsocket.socketr%   ússl.SSLContextr   ú
str | Noner&   úfloat | None)r7   z typing.Callable[..., typing.Any]Úreturnú
typing.Anyr,   ©rE   Úintr&   rf   rg   rA   ©rI   rA   r&   rf   rg   ÚNone©rg   rl   ©r%   rd   r   re   r&   rf   rg   r   ©r_   Ústrrg   rh   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r4   r(   r!   r1   r5   rN   rT   r`   Ú__static_attributes__© r*   r'   r   r      sŸ   † ñð €Oð '+Ø $ð4àð4ð $ð4ð $ð	4ð
 õ4ð(à.ðð 
ôö2ö(ôð '+Ø $ð	$à#ð$ð $ð$ð ð	$ð
 
õ$÷r*   r   c                  ón   • \ rS rSrS
S jrSSS jjrSSS jjrSS jr  S       SS jjrSS jr	S	r
g)Ú
SyncStreaméx   c                ó   • Xl         g r,   ©r   )r#   r$   s     r'   r(   ÚSyncStream.__init__y   s   € Ø�
r*   Nc                óú   • [         R                  [        [        [        0n[        U5         U R                  R                  U5        U R                  R                  U5      sS S S 5        $ ! , (       d  f       g = fr,   )	r=   r&   r	   r>   r   r   r   r    r3   rD   s       r'   r1   ÚSyncStream.read|   sJ   € Ü%+§^¡^´[Ä'Ì9Ð$UˆÜ˜GÕ$Ø�J‰J×!Ñ! 'Ô*Ø—:‘:—?‘? 9Ó-÷ %×$×$ús   ¬6A,Á,
A:c                ó2  • U(       d  g [         R                  [        [        [        0n[        U5         U(       aC  U R                  R                  U5        U R                  R                  U5      nXS  nU(       a  MC  S S S 5        g ! , (       d  f       g = fr,   )	r=   r&   r   r>   r
   r   r   r    Úsend)r#   rI   r&   rF   Úns        r'   r5   ÚSyncStream.write‚   se   € ÞØä%+§^¡^´\Ä7ÌJÐ$WˆÜ˜GÕ$ÞØ—
‘
×%Ñ% gÔ.Ø—J‘J—O‘O FÓ+�Ø ˜�÷ �&÷ %×$Ö$ús   ´A	BÂ
Bc                ó8   • U R                   R                  5         g r,   rM   rO   s    r'   rN   ÚSyncStream.close�   rQ   r*   c                óê  • [         R                  [        [        [        0n[        U5          [        U R                  [        R                  5      (       a   [        U R                  XU5      sS S S 5        $ U R                  R                  U5        UR                  U R                  US9n S S S 5        [        W5      $ ! [         a  nU R                  5         UeS nAff = f! , (       d  f       N== f)N)r   )r=   r&   r   r>   r   r   Ú
isinstancer   r   Ú	SSLSocketr   r    Úwrap_socketÚ	ExceptionrN   ry   )r#   r%   r   r&   rF   r$   Úexcs          r'   rT   ÚSyncStream.start_tls�   sÇ   € ô �N‰NœNÜ”\ð%
ˆô ˜GÕ$ðÜ˜dŸj™j¬#¯-©-×8Ñ8ô *ØŸ
™
 KÀ'ó÷ %Ñ$ð —J‘J×)Ñ)¨'Ô2Ø&×2Ñ2ØŸ
™
°Oð 3ð ‘D÷ %ô" ˜$ÓÐøô ó Ø—
‘
”Ø�	ûðú÷ %Õ$ús.   ¬C$®?C Á75C Ã 
C!Ã
CÃC!Ã!C$Ã$
C2c                óh  • US:X  a?  [        U R                  [        R                  5      (       a  U R                  R                  $ US:X  a  U R                  R                  5       $ US:X  a  U R                  R                  5       $ US:X  a  U R                  $ US:X  a  [        U R                  5      $ g rW   )r‡   r   r   rˆ   Ú_sslobjr\   r]   r   r^   s     r'   r`   ÚSyncStream.get_extra_info­   s�   € Ø�<Ó¤J¨t¯z©z¼3¿=¹=×$IÑ$IØ—:‘:×%Ñ%Ð%Ø�=Ó Ø—:‘:×)Ñ)Ó+Ð+Ø�=Ó Ø—:‘:×)Ñ)Ó+Ð+Ø�8ÓØ—:‘:ÐØ�=Ó Ü% d§j¡jÓ1Ð1Ør*   r|   )r$   rc   rg   rl   r,   ri   rk   rm   rb   rn   ro   )rq   rr   rs   rt   r(   r1   r5   rN   rT   r`   rv   rw   r*   r'   ry   ry   x   sN   † ôö.ö	$ôð '+Ø $ð	 à#ð ð $ð ð ð	 ð
 
õ ÷:r*   ry   c                  ó^   • \ rS rSr   S           SS jjr  S       S	S jjrSrg)
ÚSyncBackendé»   Nc                ó~  • Uc  / nX4nUc  S OUS4n[         R                  [        [        [        0n[        U5         [         R                  " UUUS9n	U H  n
U	R                  " U
6   M     U	R                  [         R                  [         R                  S5        S S S 5        [        W	5      $ ! , (       d  f       N= f)Nr   )Úsource_addressr   )r=   r&   r   r>   r   r   Úcreate_connectionÚ
setsockoptÚIPPROTO_TCPÚTCP_NODELAYry   )r#   ÚhostÚportr&   Úlocal_addressÚsocket_optionsÚaddressr”   rF   r$   Úoptions              r'   Úconnect_tcpÚSyncBackend.connect_tcp¼   s®   € ð Ñ!ØˆNØ�,ˆØ!.Ñ!6™¸]ÈAÐ<Nˆä�N‰NœNÜ”\ð%
ˆô
 ˜GÕ$Ü×+Ò+ØØØ-ñˆDó
 )�Ø—’ Ó(ñ )à�O‰OœF×.Ñ.´×0BÑ0BÀAÔF÷ %ô ˜$ÓÐ÷ %Õ$ús   ½AB.Â.
B<c                óÄ  • [         R                  S:X  a  [        S5      eUc  / n[        R                  [
        [        [        0n[        U5         [        R                  " [        R                  [        R                  5      nU H  nUR                  " U6   M     UR                  U5        UR                  U5        S S S 5        [        W5      $ ! , (       d  f       N= f)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    Úconnectry   )r#   Úpathr&   rœ   rF   r$   rž   s          r'   Úconnect_unix_socketÚSyncBackend.connect_unix_socketÚ   s±   € ô �<‰<˜7Ó"ÜØLóð ð Ñ!ØˆNô �N‰NœNÜ”\ð%
ˆô ˜GÕ$Ü—=’=¤§¡´×1CÑ1CÓDˆDÛ(�Ø—’ Ó(ñ )à�O‰O˜GÔ$Ø�L‰L˜Ô÷ %ô ˜$ÓÐ÷ %Õ$ús   ÁA.CÃ
Crw   )NNN)r™   rp   rš   rj   r&   rf   r›   re   rœ   ú%typing.Iterable[SOCKET_OPTION] | Nonerg   r   rb   )r©   rp   r&   rf   rœ   r¬   rg   r   )rq   rr   rs   rt   rŸ   rª   rv   rw   r*   r'   r‘   r‘   »   s…   † ð
 !%Ø$(Ø@Dð àð ð ð ð ð	 ð
 "ð ð >ð ð 
õ ðB !%Ø@Dð	 àð ð ð ð >ð	 ð
 
÷ ð  r*   r‘   )Ú
__future__r   rB   r=   r   r£   r?   Ú_exceptionsr   r   r   r   r	   r
   r   r   Ú_utilsr   Úbaser   r   r   r   ry   r‘   rw   r*   r'   Ú<module>r±      s[   ðÝ "ã Û Û 
Û 
Û ÷	÷ 	ó 	õ (ß >Ñ >ô^�]ô ^ôB@�ô @ôF6 �.õ 6 r*   