
     @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dS )    )annotationsN   )ConnectErrorConnectTimeoutExceptionMapping	ReadErrorReadTimeout
WriteErrorWriteTimeoutmap_exceptions   )SOCKET_OPTIONAsyncNetworkBackendAsyncNetworkStreamc                  P    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	dS )%
TrioStreamstreamtrio.abc.StreamreturnNonec                    || _         d S N)_streamselfr   s     K/var/www/piapp/venv/lib/python3.11/site-packages/httpcore/_backends/trio.py__init__zTrioStream.__init__   s        N	max_bytesinttimeoutfloat | Nonebytesc                  K   |t          d          n|}t          j        t          t          j        t
          t          j        t
          i}t          |          5  t          j        |          5  | j	        
                    |           d {V }|cd d d            cd d d            S # 1 swxY w Y   	 d d d            d S # 1 swxY w Y   d S )Ninf)r   )floattrioTooSlowErrorr	   BrokenResourceErrorr   ClosedResourceErrorr   
fail_afterr   receive_some)r   r   r!   timeout_or_infexc_mapdatas         r   readzTrioStream.read   sk     )0ug{$i$i%

 G$$ 	 	00  $(L$=$=	$=$R$RRRRRRR      	 	 	 	 	 	 	 	        	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   C/#B+C+B/	/C2B/	3CCCbufferc                  K   |sd S |t          d          n|}t          j        t          t          j        t
          t          j        t
          i}t          |          5  t          j        |          5  | j	        
                    |           d {V  d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr%   )r/   )r&   r'   r(   r   r)   r
   r*   r   r+   r   send_all)r   r1   r!   r-   r.   s        r   writezTrioStream.write%   sI      	F)0ug|$j$j%

 G$$ 	9 	900 9 9l+++8888888889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s6   B93"B!B9!B%	%B9(B%	)B99B= B=c                H   K   | j                                          d {V  d S r   )r   aclose)r   s    r   r6   zTrioStream.aclose3   s2      l!!###########r   ssl_contextssl.SSLContextserver_hostname
str | Noner   c                  K   |t          d          n|}t          j        t          t          j        t
          i}t          j        | j        ||dd          }t          |          5  	 t          j	        |          5  |
                                 d {V  d d d            n# 1 swxY w Y   n.# t          $ r!}|                                  d {V  |d }~ww xY wd d d            n# 1 swxY w Y   t          |          S )Nr%   TF)r7   r9   https_compatibleserver_side)r&   r'   r(   r   r)   r   	SSLStreamr   r   r+   do_handshake	Exceptionr6   r   )r   r7   r9   r!   r-   r.   
ssl_streamexcs           r   	start_tlszTrioStream.start_tls6   s      *1ug~$l%
 ^L#+!
 
 

 G$$ 	 	_^44 4 4$113333333334 4 4 4 4 4 4 4 4 4 4 4 4 4 4   kkmm#######			 	 	 	 	 	 	 	 	 	 	 	 	 	 	 *%%%sZ   'C*)B0=B$B0$B(	(B0+B(	,B0/C*0
C:CCC**C.1C.infostr
typing.Anyc                `   |dk    r+t          | j        t          j                  r| j        j        S |dk    r+|                                 j                                        S |dk    r+|                                 j                                        S |dk    re| j        }t          |t          j                  r!|j	        }t          |t          j                  !t          |t          j
                  sJ |j        S |dk    r)|                     d          }|                                S d S )N
ssl_objectclient_addrserver_addrsocketis_readable)
isinstancer   r'   r>   _ssl_object_get_socket_streamrK   getsocknamegetpeernametransport_streamSocketStreamget_extra_inforL   )r   rD   r   rK   s       r   rT   zTrioStream.get_extra_infoQ   s   <Jt|T^$L$L <++=  **,,3??AAA=  **,,3??AAA8\FVT^44 10 VT^44 1fd&788888= =  ((22F%%'''tr   trio.SocketStreamc                    | j         }t          |t          j                  r!|j        }t          |t          j                  !t          |t          j                  sJ |S r   )r   rM   r'   r>   rR   rS   r   s     r   rO   zTrioStream._get_socket_streame   sY    00 	-,F 00 	-&$"344444r   )r   r   r   r   r   )r   r    r!   r"   r   r#   )r1   r#   r!   r"   r   r   )r   r   NN)r7   r8   r9   r:   r!   r"   r   r   )rD   rE   r   rF   )r   rU   )
__name__
__module____qualname__r   r0   r4   r6   rC   rT   rO    r   r   r   r      s           
 
 
 
 
9 9 9 9 9$ $ $ $ '+ $	& & & & &6   (     r   r   c                  4    e Zd Z	 	 	 dddZ	 	 dddZddZdS )TrioBackendNhostrE   portr    r!   r"   local_addressr:   socket_options%typing.Iterable[SOCKET_OPTION] | Noner   r   c                  K   |g }|t          d          n|}t          j        t          t          j        t
          t          t
          i}t          |          5  t          j        |          5  t          j	        |||           d {V }|D ]}	 |j
        |	  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          |          S )Nr%   )r^   r_   r`   )r&   r'   r(   r   r)   r   OSErrorr   r+   open_tcp_stream
setsockoptr   )
r   r^   r_   r!   r`   ra   r-   r.   r   options
             r   connect_tcpzTrioBackend.connect_tcpn   s      !N)0ug~$l\%

 G$$ 	/ 	/00 / /040DD1 1 1 + + + + + + - / /F%F%v.../	/ / / / / / / / / / / / / / /	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ &!!!s6   B?.-B(B?(B,	,B?/B,	0B??CCpathc                  K   |g }|t          d          n|}t          j        t          t          j        t
          t          t
          i}t          |          5  t          j        |          5  t          j	        |           d {V }|D ]} |j
        |  	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          |          S )Nr%   )r&   r'   r(   r   r)   r   rd   r   r+   open_unix_socketrf   r   )r   ri   r!   ra   r-   r.   r   rg   s           r   connect_unix_socketzTrioBackend.connect_unix_socket   se      !N)0ug~$l\%

 G$$ 	/ 	/00 / /040Ed0K0K*K*K*K*K*K*K, / /F%F%v...// / / / / / / / / / / / / / /	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/
 &!!!s6   B<.*B%B<%B)	)B<,B)	-B<<C C secondsr&   r   c                >   K   t          j        |           d {V  d S r   )r'   sleep)r   rm   s     r   ro   zTrioBackend.sleep   s.      j!!!!!!!!!!!r   )NNN)r^   rE   r_   r    r!   r"   r`   r:   ra   rb   r   r   rW   )ri   rE   r!   r"   ra   rb   r   r   )rm   r&   r   r   )rX   rY   rZ   rh   rl   ro   r[   r   r   r]   r]   m   sm        
 !%$(@D" " " " "< !%@D	" " " " "*" " " " " "r   r]   )
__future__r   ssltypingr'   _exceptionsr   r   r   r   r	   r
   r   r   baser   r   r   r   r]   r[   r   r   <module>ru      s    " " " " " " 



  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 I H H H H H H H H HU U U U U# U U Up2" 2" 2" 2" 2"% 2" 2" 2" 2" 2"r   