
    RPfM                         d Z ddlZddlZddlZddlZddlZddlZddlZej                  j                  d      s ed      d Zej                  j                  Z G d dej                   j"                        Z G d d	ej                   j$                        Zej                  j                  d
      rcddlZddlZddlZej,                  Zej0                  j                  j2                  ZddlmZmZmZ  G d de      Z G d dej@                        Z!nej                   jD                  Z! G d dej                   jF                        Z#y)z$trio async I/O library query support    Ntrioztrio not found or too oldc                 l    | t        j                  |       S t        j                  j	                         S N)r   move_on_afterdns_asyncbackendNullContexttimeouts    K/var/www/fastapitest/venv/lib/python3.12/site-packages/dns/_trio_backend.py_maybe_timeoutr      s.    !!'**  ,,..    c                   B     e Zd Z fdZd Zd Zd Zd Zd Zd Z	 xZ
S )DatagramSocketc                 F    t         |   |j                         || _        y r   )super__init__familysocket)selfr   	__class__s     r   r   zDatagramSocket.__init__!   s    'r   c                    K   t        |      5  | j                  j                  ||       d {   cd d d        S 7 # 1 sw Y   nxY wt        j                  j                  |      wNr
   )r   r   sendtor   	exceptionTimeout)r   whatdestinationr   s       r   r   zDatagramSocket.sendto%   sb     G$ 	?++D+>>	? 	?>	? 	?mm## $ 
 	
s%   A* ><>
A*>A'A*c                    K   t        |      5  | j                  j                  |       d {   cd d d        S 7 # 1 sw Y   nxY wt        j                  j                  |      wr   )r   r   recvfromr   r   r   r   sizer   s      r   r    zDatagramSocket.recvfrom,   Y     G$ 	4--d33	4 	43	4 	4mm##G#44%   A)=;=
A)=A'A)c                 @   K   | j                   j                          y wr   )r   closer   s    r   r&   zDatagramSocket.close1   s     s   c                 >   K   | j                   j                         S wr   )r   getpeernamer'   s    r   r)   zDatagramSocket.getpeername4        {{&&((   c                 >   K   | j                   j                         S wr   )r   getsocknamer'   s    r   r-   zDatagramSocket.getsockname7   r*   r+   c                    K   t         wr   NotImplementedErrorr   r   s     r   getpeercertzDatagramSocket.getpeercert:   s     !!   	)__name__
__module____qualname__r   r   r    r&   r)   r-   r2   __classcell__r   s   @r   r   r       s&    
5
))"r   r   c                   8    e Zd Zd	dZd Zd Zd Zd Zd Zd Z	y)
StreamSocketc                 .    || _         || _        || _        y r   )r   streamtls)r   r   r<   r=   s       r   r   zStreamSocket.__init__?   s    r   c                    K   t        |      5  | j                  j                  |       d {   cd d d        S 7 # 1 sw Y   nxY wt        j                  j                  |      wr   )r   r<   send_allr   r   r   )r   r   r   s      r   sendallzStreamSocket.sendallD   r#   r$   c                    K   t        |      5  | j                  j                  |       d {   cd d d        S 7 # 1 sw Y   nxY wt        j                  j                  |      wr   )r   r<   receive_somer   r   r   r!   s      r   recvzStreamSocket.recvI   sY     G$ 	811$77	8 	87	8 	8mm##G#44r$   c                 T   K   | j                   j                          d {    y 7 wr   )r<   acloser'   s    r   r&   zStreamSocket.closeN   s     kk  """s   (&(c                    K   | j                   r.| j                  j                  j                  j	                         S | j                  j                  j	                         S wr   )r=   r<   transport_streamr   r)   r'   s    r   r)   zStreamSocket.getpeernameQ   E     88;;//66BBDD;;%%1133   AA!c                    K   | j                   r.| j                  j                  j                  j	                         S | j                  j                  j	                         S wr   )r=   r<   rG   r   r-   r'   s    r   r-   zStreamSocket.getsocknameW   rH   rI   c                    K   | j                   rPt        |      5  | j                  j                          d {    d d d        | j                  j	                         S t
        7 ,# 1 sw Y   +xY wwr   )r=   r   r<   do_handshaker2   r0   r1   s     r   r2   zStreamSocket.getpeercert]   s^     88( 1kk..0001;;**,,%% 11 1s+   A3A'A%A'(A3%A''A0,A3N)F)
r4   r5   r6   r   r@   rC   r&   r)   r-   r2    r   r   r:   r:   >   s%    
5
5
#44&r   r:   doh)_compute_times_expiration_for_this_attempt
_remainingc                   8     e Zd Z fdZ	 ddZ	 ddZd Z xZS )_NetworkBackendc                 Z    t         |           || _        || _        || _        || _        y r   )r   r   _local_port	_resolver_bootstrap_address_family)r   resolver
local_portbootstrap_addressr   r   s        r   r   z_NetworkBackend.__init__q   s,    G)D%DN&7D#!DLr   c           	      Z  K   g }t        |      \  }}t        j                  j                  |      r|j	                  |       n| j
                  |j	                  | j
                         nnt        |      }| j                  }	|rt        j                  j                  |      }	| j                  j                  ||	|       d {   }
|
j                         }|D ]  }	 t        j                  j                  |      }|| j                  dk7  r|| j                  f}nd }||f}t        d|      }t        |      }t               j                  |t         j"                  d|||       d {   }t%        |j&                        c S  t*        j,                  7 7 .# t(        $ r Y w xY ww)N)r   lifetimer   g       @)rO   r   inet
is_addressappendrW   rQ   rX   af_for_addressrV   resolve_name	addressesrU   rP   Backendmake_socketr   SOCK_STREAM_CoreTrioStreamr<   	ExceptionhttpcoreConnectError)r   hostportr   local_addresssocket_optionsrc   _
expirationr   answersaddressafsourcer   attempt_expirationsocks                    r   connect_tcpz_NetworkBackend.connect_tcpx   s     I*73MAzxx""4(  &((4  !8!89$Z0  XX44]CF $ ; ;' !< !  $--/	$ 009B$0D4D4D4I"/1A1A!B!%#*D/K)Ec:)V&();<G!(!6!6F..6;" D +4;;77  ''') ! sI   CF+FF+ BF+F,FF+F	F(%F+'F((F+c                    K   t         wr   r/   )r   pathr   rn   s       r   connect_unix_socketz#_NetworkBackend.connect_unix_socket   s      &%r3   c                 J   K   t        j                  |       d {    y 7 wr   r   sleep)r   secondss     r   r}   z_NetworkBackend.sleep   s     **W%%%   #!#r   )r4   r5   r6   r   rw   rz   r}   r7   r8   s   @r   rS   rS   p   s$    	" FJ"	(J 15	&
	&r   rS   c                   >     e Zd Zdddej                  d fd
Z xZS )_HTTPTransportr   N)rZ   r[   rY   r   c                    |dd l }|j                  j                         }t        |   |i | t        ||||      | j                  _        y )Nr   )dns.asyncresolverasyncresolverResolverr   r   rS   _pool_network_backend)	r   rZ   r[   rY   r   argskwargsr   r   s	           r   r   z_HTTPTransport.__init__   sO     (,,557Gd-f-*9*&7+DJJ'r   )r4   r5   r6   r   	AF_UNSPECr   r7   r8   s   @r   r   r      s!     "##	 	r   r   c                   8    e Zd Zd Z	 	 	 	 	 	 ddZd Zd Zd Zy)rd   c                      y)Nr   rM   r'   s    r   namezBackend.name   s    r   Nc	                 ,  K   t         j                  j                  |||      }	d }
	 |r#|	j                  t        ||             d {    |t        j                  k(  r]d}t        |      5  |	j                  t        ||             d {    d}d d d        |s t        j                  j                  |      |t        j                  k(  rt        |	      S |t        j                  k(  rAt        j                  |	      }
d}|rd}	 t        j                  |
||      }
t#        ||
|      S t%        dd| z         7 7 # 1 sw Y   xY w# t        $ r |	j                           w xY w# t        $ r |
j!                          d {  7    w xY ww)NFTr
   )server_hostnamezunsupported socket ztype )r   r   bind_lltuplerf   r   connectr   r   r   rh   r&   
SOCK_DGRAMr   SocketStream	SSLStreamrE   r:   r0   )r   rs   socktypeprotort   r   r   ssl_contextr   sr<   	connectedr=   s                r   re   zBackend.make_socket   s     KKr8U3	ffXfb12226---!	#G, %))H["$=>>> $I% !--// ' 0   v(((!!$$+++&&q)FC!^^_F  FC00!!eH:$66
 	
9 3 ?% %  	GGI	 !  --/))s}   $F E D?$E ,EEE*E <AF	E- !F?E EEE E**F-F	F
FFc                 J   K   t        j                  |       d {    y 7 wr   r|   )r   intervals     r   r}   zBackend.sleep   s     jj"""r   c                     t         S r   )r   r'   s    r   get_transport_classzBackend.get_transport_class   s    r   c                    K   t        |      5  | d {   cd d d        S 7 # 1 sw Y   nxY wt        j                  j                  |      wr   )r   r   r   r   )r   	awaitabler   s      r   wait_forzBackend.wait_for   sP     G$ 	#"?	# 	#"	# 	#mm## $ 
 	
s#   A$"$
A$-'A)r   NNNNN)r4   r5   r6   r   re   r}   r   r   rM   r   r   rd   rd      s0     -
^#
r   rd   )$__doc__r   r   trio.socketdns._asyncbackendr   dns._featuresdns.exceptiondns.inet	_featureshaveImportErrorr   r^   low_level_address_tupler   r   r   r:   ri   httpcore._backends.triohttpxAsyncNetworkBackend_CoreAsyncNetworkBackend	_backends
TrioStreamrg   	dns.queryrO   rP   rQ   rS   AsyncHTTPTransportr   NullTransportrd   rM   r   r   <module>r      s   +       
}}&!
1
22/ 88++
"S&&55 "<%&3$$11 %&P ==e"';;((--88ORR2&2 2&h11 * &&44N>
c'' >
r   