+
    }i"                        ^ RI Ht ^ RIt^ RIt^ RIt^ RIt^RIHt ]P                  '       d   ^ RI	H
t
 ^RIHtHt ]P                  ]]3,          t]P$                  ! R4      tRt ! R R	4      tR# )
    )annotationsN)ProxySchemeUnsupported)Self)_TYPE_PEER_CERT_RET_TYPE_PEER_CERT_RET_DICT_ReturnValuei @  c                  R   ] tR t^tRt]R R l4       tRAR R lltR R ltR	 R
 lt	R R lt
RBR R lltRCR R lltRDR R lltRER R lltRER R lltRFRRRRRR/R R llltR R ltR R lt]P(                  RGR  R! ll4       t]P(                  R" R# l4       tRHR$ R% lltR& R' ltR( R) ltR* R+ ltR, R- ltR. R/ ltR0 R1 ltR2 R3 ltR4 R5 ltRFR6 R7 llt]P(                  R8 R9 l4       t]P(                  R: R; l4       t]P(                  R< R= l4       tRIR> R? lltR@t R# )JSSLTransporta4  
The SSLTransport wraps an existing socket and establishes an SSL connection.

Contrary to Python's implementation of SSLSocket, it allows you to chain
multiple TLS connections together. It's particularly useful if you need to
implement TLS within TLS.

The class supports most of the socket API operations.
c                    V ^8  d   QhRRRR/# )   ssl_contextssl.SSLContextreturnNone )formats   "k/Users/ahmad/.openclaw/workspace/my-crawler/.venv/lib/python3.14/site-packages/urllib3/util/ssltransport.py__annotate__SSLTransport.__annotate__"   s      . T     c                @    \        V R4      '       g   \        R4      hR# )z
Raises a ProxySchemeUnsupported if the provided ssl_context can't be used
for TLS in TLS.

The only requirement is that the ssl_context provides the 'wrap_bio'
methods.
wrap_biozXTLS in TLS requires SSLContext.wrap_bio() which isn't available on non-native SSLContextN)hasattrr   )r   s   &r   $_validate_ssl_context_for_tls_in_tls1SSLTransport._validate_ssl_context_for_tls_in_tls!   s(     {J//(5  0r   Nc          
     ,    V ^8  d   QhRRRRRRRRR	R
/# )r   socketzsocket.socketr   r   server_hostname
str | Nonesuppress_ragged_eofsboolr   r   r   )r   s   "r   r   r   1   s<     4 44 $4 $	4
 #4 
4r   c                *   \         P                  ! 4       V n        \         P                  ! 4       V n        W@n        Wn        VP                  V P                  V P                  VR7      V n        V P                  V P                  P                  4       R# )zF
Create an SSLTransport around socket using the provided ssl_context.
)r   N)
ssl	MemoryBIOincomingoutgoingr    r   r   sslobj_ssl_io_loopdo_handshake)selfr   r   r   r    s   &&&&&r   __init__SSLTransport.__init__1   si     $8!!**MM4==/ + 

 	$++223r   c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   H   s      4 r   c                	    V # Nr   r*   s   &r   	__enter__SSLTransport.__enter__H   s    r   c                    V ^8  d   QhRRRR/# )r   _z
typing.Anyr   r   r   )r   s   "r   r   r   K   s      : $ r   c                	&    V P                  4        R # r/   )close)r*   r4   s   &*r   __exit__SSLTransport.__exit__K   s    

r   c                   V ^8  d   QhRR/# )r   r   intr   )r   s   "r   r   r   N   s     $ $ $r   c                	6    V P                   P                  4       # r/   )r   filenor0   s   &r   r<   SSLTransport.filenoN       {{!!##r   c               $    V ^8  d   QhRRRRRR/# )r   lenr:   bufferztyping.Any | Noner   int | bytesr   )r   s   "r   r   r   Q   s"     0 0 0,= 0 0r   c                	$    V P                  W4      # r/   )_wrap_ssl_read)r*   r@   rA   s   &&&r   readSSLTransport.readQ   s    ""3//r   c               $    V ^8  d   QhRRRRRR/# )r   buflenr:   flagsr   rB   r   )r   s   "r   r   r   T   s!     + +3 +c ++ +r   c                	H    V^ 8w  d   \        R4      hV P                  V4      # )r   z+non-zero flags not allowed in calls to recv)
ValueErrorrD   )r*   rH   rI   s   &&&r   recvSSLTransport.recvT   s&    A:JKK""6**r   c               (    V ^8  d   QhRRRRRRRR/# )	r   rA   _WriteBuffernbytes
int | NonerI   r:   r   zNone | int | bytesr   )r   s   "r   r   r   Y   s2     
) 
)
) 
) 	
)
 

)r   c                	f    V^ 8w  d   \        R4      hVf   \        V4      pV P                  W!4      # )r   z0non-zero flags not allowed in calls to recv_into)rK   r@   rE   )r*   rA   rP   rI   s   &&&&r   	recv_intoSSLTransport.recv_intoY   s4     A:OPP>[Fyy((r   c               $    V ^8  d   QhRRRRRR/# )r   databytesrI   r:   r   r   r   )r   s   "r   r   r   e   s!      E # d r   c           	     	T   V^ 8w  d   \        R4      h^ p\        V4      ;_uu_ 4       qDP                  R4      ;_uu_ 4       p\        V4      pW68  d   V P	                  WSR 4      pW7,          pK#   RRR4       RRR4       R#   + '       g   i     L; i  + '       g   i     R# ; i)r   z.non-zero flags not allowed in calls to sendallBN)rK   
memoryviewcastr@   send)r*   rV   rI   countview	byte_viewamountvs   &&&     r   sendallSSLTransport.sendalle   sz    A:MNNyy~~^F.IIi/0
 ! (6~~s#   B/B	1BBBB'	c               $    V ^8  d   QhRRRRRR/# )r   rV   rW   rI   r:   r   r   )r   s   "r   r   r   o   s!     : : :s :3 :r   c                	r    V^ 8w  d   \        R4      hV P                  V P                  P                  V4      # )r   z+non-zero flags not allowed in calls to send)rK   r(   r'   write)r*   rV   rI   s   &&&r   r\   SSLTransport.sendo   s2    A:JKK  !2!2D99r   encodingerrorsnewlinec               0    V ^8  d   QhRRRRRRRRRRR	R
/# )r   modestr	bufferingrQ   rh   r   ri   rj   r   z1typing.BinaryIO | typing.TextIO | socket.SocketIOr   )r   s   "r   r   r   t   sF     2 22 2
 2 2 2 
;2r   c                  \        V4      0 Rm8:  g   \        RV: R24      hRV9   pRV9   ;'       g    V'       * pV'       g   V'       g   Q hRV9   pRp	V'       d
   V	R,          p	V'       d
   V	R,          p	\        P                  ! W	4      p
V P                  ;P                  ^,          un        Vf   R	pV^ 8  d   \
        P                  pV^ 8X  d   V'       g   \        R4      hV
# V'       d!   V'       d   \
        P                  ! WV4      pM?V'       d   \
        P                  ! W4      pM V'       g   Q h\
        P                  ! W4      pV'       d   V# \
        P                  ! WWE4      pWn        V# )
z
Python's httpclient uses makefile and buffered io when reading HTTP
messages and we need to support it.

This is unfortunately a copy and paste of socket.py makefile with small
changes to point to the socket directly.
rwbzinvalid mode z (only r, w, b allowed) z!unbuffered streams must be binary>   rr   rp   rq   )setrK   r   SocketIO_io_refsioDEFAULT_BUFFER_SIZEBufferedRWPairBufferedReaderBufferedWriterTextIOWrapperrl   )r*   rl   rn   rh   ri   rj   writingreadingbinaryrawmoderawrA   texts   &&&$$$       r   makefileSSLTransport.makefilet   s2     4yO+}TH4KLMM++,,W'!!sNGsNGood,!Iq=..I> !DEEJw&&s;F&&s6FN7&&s6FM&B	r   c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   r      s     . . .r   c                	P    V P                  V P                  P                  4       R # r/   )r(   r'   unwrapr0   s   &r   r   SSLTransport.unwrap   s    $++,,-r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      s      t r   c                	:    V P                   P                  4        R # r/   )r   r6   r0   s   &r   r6   SSLTransport.close   s    r   c                    V ^8  d   QhRRRR/# )r   binary_formztyping.Literal[False]r   z_TYPE_PEER_CERT_RET_DICT | Noner   )r   s   "r   r   r      s     . .0.	(.r   c                	    R # r/   r   r*   r   s   &&r   getpeercertSSLTransport.getpeercert   s     +.r   c                    V ^8  d   QhRRRR/# )r   r   ztyping.Literal[True]r   zbytes | Noner   )r   s   "r   r   r      s    QQ';QQr   c                	    R # r/   r   r   s   &&r   r   r      s    NQr   c                    V ^8  d   QhRRRR/# )r   r   r!   r   r   r   )r   s   "r   r   r      s     4 4t 48K 4r   c                	8    V P                   P                  V4      # r/   )r'   r   r   s   &&r   r   r      s    {{&&{33r   c                   V ^8  d   QhRR/# r   r   r   r   )r   s   "r   r   r      s     % % %r   c                	6    V P                   P                  4       # r/   )r'   versionr0   s   &r   r   SSLTransport.version   s    {{""$$r   c                   V ^8  d   QhRR/# )r   r   ztuple[str, str, int] | Noner   )r   s   "r   r   r      s     $ $3 $r   c                	6    V P                   P                  4       # r/   )r'   cipherr0   s   &r   r   SSLTransport.cipher   r>   r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      s     4 4
 4r   c                	6    V P                   P                  4       # r/   )r'   selected_alpn_protocolr0   s   &r   r   #SSLTransport.selected_alpn_protocol   s    {{1133r   c                   V ^8  d   QhRR/# )r   r   z!list[tuple[str, str, int]] | Noner   )r   s   "r   r   r      s     , , A ,r   c                	6    V P                   P                  4       # r/   )r'   shared_ciphersr0   s   &r   r   SSLTransport.shared_ciphers   s    {{))++r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      s     ) )Z )r   c                	6    V P                   P                  4       # r/   )r'   compressionr0   s   &r   r   SSLTransport.compression   s    {{&&((r   c                    V ^8  d   QhRRRR/# )r   valuefloat | Noner   r   r   )r   s   "r   r   r      s     & & & &r   c                	<    V P                   P                  V4       R # r/   )r   
settimeout)r*   r   s   &&r   r   SSLTransport.settimeout   s    u%r   c                   V ^8  d   QhRR/# )r   r   r   r   )r   s   "r   r   r      s     ( (L (r   c                	6    V P                   P                  4       # r/   )r   
gettimeoutr0   s   &r   r   SSLTransport.gettimeout   s    {{%%''r   c                   V ^8  d   QhRR/# r   r   )r   s   "r   r   r      s     ( (4 (r   c                	:    V P                   P                  4        R # r/   )r   _decref_socketiosr0   s   &r   r   SSLTransport._decref_socketios   s    %%'r   c               $    V ^8  d   QhRRRRRR/# )r   r@   r:   rA   bytearray | Noner   rB   r   )r   s   "r   r   r      s"      # /? ; r   c                	     V P                  V P                  P                  W4      #   \        P                   d>   pTP
                  \        P                  8X  d   T P                  '       d    R p?^ # h R p?ii ; ir/   )r(   r'   rE   r#   SSLErrorerrnoSSL_ERROR_EOFr    )r*   r@   rA   es   &&& r   rD   SSLTransport._wrap_ssl_read   s[    	$$T[[%5%5sCC|| 	ww#+++0I0I0I		s   %( A:0A54A55A:c                    V ^8  d   QhRRRR/# )r   funcztyping.Callable[[], None]r   r   r   )r   s   "r   r   r      s    HH!:HtHr   c                	    R # r/   r   )r*   r   s   &&r   r(   SSLTransport._ssl_io_loop   s    EHr   c               $    V ^8  d   QhRRRRRR/# )r   r   ztyping.Callable[[bytes], int]arg1rW   r   r:   r   )r   s   "r   r   r      s    XX!>XeXPSXr   c                	    R # r/   r   )r*   r   r   s   &&&r   r(   r      s    UXr   c               (    V ^8  d   QhRRRRRRRR/# )	r   r   z/typing.Callable[[int, bytearray | None], bytes]r   r:   arg2r   r   rW   r   )r   s   "r   r   r      s2      =  	
 
r   c                	    R # r/   r   )r*   r   r   r   s   &&&&r   r(   r      s     r   c               (    V ^8  d   QhRRRRRRRR/# )	r   r   z"typing.Callable[..., _ReturnValue]r   zNone | bytes | intr   r   r   r   r   )r   s   "r   r   r      s2     $. $.0$. !$. 	$.
 
$.r   c                   RpRpV'       d   Rp Vf   Vf	   V! 4       pMVf
   V! V4      pM	V! W#4      p V P
                  P                  4       pV P                  P                  V4       Vf   RpKn  V\         P                  8X  g   K  V P                  P                  \        4      pV'       d   V P                  P                  V4       K  V P                  P                  4        K  \        P                  ! \         V4      #   \         P                   dI   pTP                  \         P                  \         P                  39  d   ThTP                  p Rp?EL'Rp?ii ; i)z>Performs an I/O loop between incoming/outgoing and the socket.TNF)r#   r   r   SSL_ERROR_WANT_READSSL_ERROR_WANT_WRITEr&   rE   r   rb   rL   SSL_BLOCKSIZEr%   rf   	write_eoftypingr[   r   )	r*   r   r   r   should_loopretr   r   bufs	   &&&&     r   r(   r      s    E <DL&C\t*Ct*C --$$&CKK$}##111kk&&}5MM'',MM++-{{<--# <<  773#:#:C<T<T"UUG	 s!   D D D E"=EE")r%   r&   r   r'   r    )NT)   N)r   r   )Nr   )r   r/   ).)F)NN)!__name__
__module____qualname____firstlineno____doc__staticmethodr   r+   r1   r7   r<   rE   rL   rS   rb   r\   r   r   r6   r   overloadr   r   r   r   r   r   r   r   r   rD   r(   __static_attributes__r   r   r   r
   r
      s#     4.$0+

):
2
  $2 "2 #2 2h. __. . __Q Q4%$4,)&(( __H H __X X __ $. $.r   r
   )
__future__r   rx   r   r#   r   
exceptionsr   TYPE_CHECKINGtyping_extensionsr   ssl_r   r   Union	bytearrayrZ   rO   TypeVarr   r   r
   r   r   r   <module>r      s]    " 	  
  /	&C ||Iz12~~n-y. y.r   