
    Ggl                        d dl m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mZmZ  G d de      Z G d	 d
e      Zy)    )annotationsN   )ConnectErrorConnectTimeoutExceptionMapping	ReadErrorReadTimeout
WriteErrorWriteTimeoutmap_exceptions   )SOCKET_OPTIONAsyncNetworkBackendAsyncNetworkStreamc                  \    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ddZ	y)
TrioStreamc                    || _         y N)_streamselfstreams     L/var/www/openai/venv/lib/python3.12/site-packages/httpcore/_backends/trio.py__init__zTrioStream.__init__   s	        Nc                  K   |t        d      n|}t        j                  t        t        j                  t
        t        j                  t
        i}t        |      5  t        j                  |      5  | j                  j                  |       d {   }|cd d d        cd d d        S 7 # 1 sw Y   nxY w	 d d d        y # 1 sw Y   y xY ww)Ninf)	max_bytes)floattrioTooSlowErrorr	   BrokenResourceErrorr   ClosedResourceErrorr   
fail_afterr   receive_some)r   r   timeouttimeout_or_infexc_mapdatas         r   readzTrioStream.read   s     )0ug{$$i$$i%

 G$0$(LL$=$=	$=$RR 10 %$R 100 %$$sN   ACC1 B,B*B,	C 
C*B,,B5	1C9	CCCc                  K   |sy |t        d      n|}t        j                  t        t        j                  t
        t        j                  t
        i}t        |      5  t        j                  |      5  | j                  j                  |       d {    d d d        d d d        y 7 # 1 sw Y   xY w# 1 sw Y   y xY ww)Nr   )r)   )r   r    r!   r   r"   r
   r#   r   r$   r   send_all)r   bufferr&   r'   r(   s        r   writezTrioStream.write%   s     )0ug|$$j$$j%

 G$0ll+++888 1 %$8 10 %$sH   ACB84 B,B*B,B8!	C*B,,B5	1B88C=Cc                T   K   | j                   j                          d {    y 7 wr   )r   aclose)r   s    r   r0   zTrioStream.aclose3   s     ll!!###s   (&(c                  K   |t        d      n|}t        j                  t        t        j                  t
        i}t        j                  | j                  ||dd      }t        |      5  	 t        j                  |      5  |j                          d {    d d d        d d d        t        |      S 7 # 1 sw Y   xY w# t        $ r }| j                          d {  7   |d }~ww xY w# 1 sw Y   t        |      S xY ww)Nr   TF)ssl_contextserver_hostnamehttps_compatibleserver_side)r   r    r!   r   r"   r   	SSLStreamr   r   r$   do_handshake	Exceptionr0   r   )r   r2   r3   r&   r'   r(   
ssl_streamexcs           r   	start_tlszTrioStream.start_tls6   s      *1ug~$$l%
 ^^LL#+!

 G$__^4$11333 5 % *%%	 4 54 kkm##		 % *%%sr   A)D+C0-CB8B6B8C#D6B88C	=C	C-C( C#!C((C--C00D5Dc                v   |dk(  r:t        | j                  t        j                        r| j                  j                  S |dk(  r(| j                         j                  j                         S |dk(  r(| j                         j                  j                         S |dk(  ru| j                  }t        |t        j                        r'|j                  }t        |t        j                        r't        |t        j                        sJ |j                  S |dk(  r!| j                  d      }|j                         S y )N
ssl_objectclient_addrserver_addrsocketis_readable)
isinstancer   r    r6   _ssl_object_get_socket_streamr@   getsocknamegetpeernametransport_streamSocketStreamget_extra_inforA   )r   infor   r@   s       r   rI   zTrioStream.get_extra_infoQ   s    <Jt||T^^$L <<+++= **,33??AA= **,33??AA8\\FVT^^400 VT^^4fd&7&7888== = ((2F%%''r   c                    | j                   }t        |t        j                        r'|j                  }t        |t        j                        r't        |t        j
                        sJ |S r   )r   rB   r    r6   rG   rH   r   s     r   rD   zTrioStream._get_socket_streame   sO    0,,F 0&$"3"3444r   )r   ztrio.abc.StreamreturnNoner   )r   intr&   float | NonerL   bytes)r-   rP   r&   rO   rL   rM   )rL   rM   NN)r2   zssl.SSLContextr3   
str | Noner&   rO   rL   r   )rJ   strrL   z
typing.Any)rL   ztrio.SocketStream)
__name__
__module____qualname__r   r*   r.   r0   r;   rI   rD    r   r   r   r      sS    
9$ '+ $	&#& $& 	&
 
&6(r   r   c                  V    e Zd Z	 	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZ	 	 d	 	 	 	 	 	 	 ddZd	dZy)
TrioBackendNc                  K   |g }|t        d      n|}t        j                  t        t        j                  t
        t        t
        i}t        |      5  t        j                  |      5  t        j                  |||       d {   }|D ]  }	 |j                  |	   	 d d d        d d d        t              S 7 6# 1 sw Y   xY w# 1 sw Y   t              S xY ww)Nr   )hostportlocal_address)r   r    r!   r   r"   r   OSErrorr   r$   open_tcp_stream
setsockoptr   )
r   r[   r\   r&   r]   socket_optionsr'   r(   r   options
             r   connect_tcpzTrioBackend.connect_tcpn   s      !N)0ug~$$l\%

 G$0040D0DD1 + -F%F%%v. -	 1 % &!!+ 10 % &!!sH   AC"C+C B>C #C+C">C  C		CCC"c                  K   |g }|t        d      n|}t        j                  t        t        j                  t
        t        t
        i}t        |      5  t        j                  |      5  t        j                  |       d {   }|D ]  } |j                  |   	 d d d        d d d        t              S 7 6# 1 sw Y   xY w# 1 sw Y   t              S xY ww)Nr   )r   r    r!   r   r"   r   r^   r   r$   open_unix_socketr`   r   )r   pathr&   ra   r'   r(   r   rb   s           r   connect_unix_socketzTrioBackend.connect_unix_socket   s      !N)0ug~$$l\%

 G$0040E0Ed0K*K,F%F%%v. - 1 %
 &!! +L 10 %
 &!!sH   ACC	+B=B;B= C	(C;B==C	C		CCc                J   K   t        j                  |       d {    y 7 wr   )r    sleep)r   secondss     r   ri   zTrioBackend.sleep   s     jj!!!s   #!#)NNN)r[   rS   r\   rN   r&   rO   r]   rR   ra   %typing.Iterable[SOCKET_OPTION] | NonerL   r   rQ   )rf   rS   r&   rO   ra   rk   rL   r   )rj   r   rL   rM   )rT   rU   rV   rc   rg   ri   rW   r   r   rY   rY   m   s    
 !%$(@D"" " 	"
 "" >" 
"< !%@D	"" " >	"
 
"*"r   rY   )
__future__r   ssltypingr    _exceptionsr   r   r   r   r	   r
   r   r   baser   r   r   r   rY   rW   r   r   <module>rq      sF    " 
  	 	 	 I HU# Up2"% 2"r   