ó
    °"³j  ã                  óÂ   • 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        ÚU/home/mande/repo/quber/.venv/lib/python3.13/site-packages/httpcore2/_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   sk   € Ü%+§^¡^´[Ä'Ì9Ð$UˆÜ˜GÕ$Ø�J‰J×!Ñ! 'Ô*Ü—;’;œu d×&6Ñ&6´y×7HÒ7HÈÏÉ×IZÑIZÐ\eÓ7fÓ&gÓh÷ %×$×$ús   ¬A.B$Â$
B2c                óv  • [         R                  [        [        [        0n[        U5         U R                  R                  U5        [        U5      nU(       aG  U R                  [        R                  " U R                  R                  U5      5      nXES  nU(       a  MG  S S S 5        g ! , (       d  f       g = fr,   )r=   r&   r   r>   r
   r   r   r    Ú
memoryviewr!   rB   rC   r   r5   )r#   Úbufferr&   rF   ÚviewÚnsents         r'   r5   ÚTLSinTLSStream.writeU   s~   € Ü%+§^¡^´\Ä7ÌJÐ$WˆÜ˜GÕ$Ø�J‰J×!Ñ! 'Ô*Ü˜fÓ%ˆDÞØ×(Ñ(¬×):Ò):¸4¿<¹<×;MÑ;MÈtÓ)TÓU�Ø˜F�|�÷ �$÷ %×$Ö$ús   ¬A3B*Â*
B8c                ó8   • U R                   R                  5         g r,   ©r   Úclose©r#   s    r'   rP   ÚTLSinTLSStream.close^   ó   € Ø�
‰
×ÑÕr*   c                ó   • [        5       er,   )ÚNotImplementedError)r#   r%   r   r&   s       r'   Ú	start_tlsÚTLSinTLSStream.start_tlsa   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_infoi   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&   rh   ri   rA   ©rJ   rA   r&   rh   ri   ÚNone©ri   rn   ©r%   rf   r   rg   r&   rh   ri   r   ©ra   Ústrri   rj   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r4   r(   r!   r1   r5   rP   rV   rb   Ú__static_attributes__© r*   r'   r   r      s    † ñð €Oð '+Ø $ð4àð4ð $ð4ð $ð	4ð
 õ4ð(à.ðð 
ôö2iö$ôð '+Ø $ð	$à#ð$ð $ð$ð ð	$ð
 
õ$÷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éw   c                ó   • Xl         g r,   ©r   )r#   r$   s     r'   r(   ÚSyncStream.__init__x   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                óH  • U(       d  g [         R                  [        [        [        0n[        U5         [        U5      nU(       aC  U R                  R                  U5        U R                  R                  U5      nXES  nU(       a  MC  S S S 5        g ! , (       d  f       g = fr,   )
r=   r&   r   r>   r
   r   rI   r   r    Úsend)r#   rJ   r&   rF   rK   Úns         r'   r5   ÚSyncStream.write�   so   € ÞØä%+§^¡^´\Ä7ÌJÐ$WˆÜ˜GÕ$Ü˜fÓ%ˆDÞØ—
‘
×%Ñ% gÔ.Ø—J‘J—O‘O DÓ)�Ø˜B�x�÷ �$÷ %×$Ö$ús   ´ABÂ
B!c                ó8   • U R                   R                  5         g r,   rO   rQ   s    r'   rP   ÚSyncStream.close�   rS   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Ú	ExceptionrP   r{   )r#   r%   r   r&   rF   r$   Úexcs          r'   rV   ÚSyncStream.start_tls�   sÀ   € ô �N‰NœNÜ”\ð%
ˆô ˜GÕ$ðÜ˜dŸj™j¬#¯-©-×8Ñ8ô *¨$¯*©*°kÐT[Ó\÷ %Ñ$ð —J‘J×)Ñ)¨'Ô2Ø&×2Ñ2°4·:±:ÈÐ2Ð_‘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 rY   )r‰   r   r   rŠ   Ú_sslobjr^   r_   r   r`   s     r'   rb   ÚSyncStream.get_extra_info©   s�   € Ø�<Ó¤J¨t¯z©z¼3¿=¹=×$IÑ$IØ—:‘:×%Ñ%Ð%Ø�=Ó Ø—:‘:×)Ñ)Ó+Ð+Ø�=Ó Ø—:‘:×)Ñ)Ó+Ð+Ø�8ÓØ—:‘:ÐØ�=Ó Ü% d§j¡jÓ1Ð1Ør*   r~   )r$   re   ri   rn   r,   rk   rm   ro   rd   rp   rq   )rs   rt   ru   rv   r(   r1   r5   rP   rV   rb   rx   ry   r*   r'   r{   r{   w   sN   † ôö.ö
 ôð '+Ø $ð	 à#ð ð $ð ð ð	 ð
 
õ ÷2r*   r{   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_NODELAYr{   )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    Úconnectr{   )r#   Úpathr&   rž   rF   r$   r    s          r'   Úconnect_unix_socketÚSyncBackend.connect_unix_socketÖ   s«   € ô �<‰<˜7Ó"ÜÐ[Ó\Ð\ØÑ!ØˆNô �N‰NœNÜ”\ð%
ˆô ˜GÕ$Ü—=’=¤§¡´×1CÑ1CÓDˆDÛ(�Ø—’ Ó(ñ )à�O‰O˜GÔ$Ø�L‰L˜Ô÷ %ô ˜$ÓÐ÷ %Õ$ús   ÁA.CÃ
Cry   )NNN)r›   rr   rœ   rl   r&   rh   r�   rg   rž   ú%typing.Iterable[SOCKET_OPTION] | Noneri   r   rd   )r«   rr   r&   rh   rž   r®   ri   r   )rs   rt   ru   rv   r¡   r¬   rx   ry   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   r{   r“   ry   r*   r'   Ú<module>r³      sY   ðÝ "ã Û Û 
Û 
Û ÷	÷ 	ó 	õ (ß >Ñ >ô]�]ô ]ô@=�ô =ô@4 �.õ 4 r*   