
    RPf#                     h   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                  dk(  Z
d Z G d d      Zd Z G d d	ej                  j                        Z G d
 dej                  j                         Zej"                  j%                  d      rgddlZddlZddlZddlZej.                  Zej2                  j&                  j4                  ZddlmZmZmZ  G d de      Z  G d dejB                        Z"nej                  jF                  Z" G d dej                  jH                        Z$y)zasyncio library query support    Nwin32c                  r    	 t        j                         S # t        $ r t        j                         cY S w xY wN)asyncioget_running_loopAttributeErrorget_event_loop     N/var/www/fastapitest/venv/lib/python3.12/site-packages/dns/_asyncio_backend.py_get_running_loopr      s4    ('')) (%%''(s    66c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)_DatagramProtocolc                      d | _         d | _        y r   )	transportrecvfromselfs    r   __init__z_DatagramProtocol.__init__   s    r   c                     || _         y r   )r   )r   r   s     r   connection_madez!_DatagramProtocol.connection_made   s	    "r   c                     | j                   r9| j                   j                         s| j                   j                  ||f       y y y r   )r   done
set_result)r   dataaddrs      r   datagram_receivedz#_DatagramProtocol.datagram_received    s5    ==!3!3!5MM$$dD\2 "6=r   c                     | j                   r7| j                   j                         s| j                   j                  |       y y y r   )r   r   set_exception)r   excs     r   error_receivedz _DatagramProtocol.error_received$   s1    ==!3!3!5MM'', "6=r   c                     | j                   r@| j                   j                         s%|	 t        | j                   j                  |       y y y # t        $ r%}| j                   j                  |       Y d }~y d }~ww xY wr   )r   r   EOFErrorr   )r   r    es      r   connection_lostz!_DatagramProtocol.connection_lost(   si    ==!3!3!5{3"N ++C0 "6=
   3MM//223s   A 	A<A77A<c                 8    | j                   j                          y r   )r   closer   s    r   r'   z_DatagramProtocol.close3   s    r   N)	__name__
__module____qualname__r   r   r   r!   r%   r'   r
   r   r   r   r      s     #3-	1r   r   c                    K   |	 t        j                  | |       d {   S |  d {   S 7 # t         j                  $ r! t        j                  j                  |      w xY w7 =w)N)timeout)r   wait_forTimeoutErrordns	exceptionTimeout)	awaitabler,   s     r   _maybe_wait_forr3   7   sh     	9 )))W=== 	 >## 	9--'''88	9 s/   A)0 .0 A)A'A)0 4A$$A)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                 @    t         |   |       || _        || _        y r   )superr   r   protocol)r   familyr   r8   	__class__s       r   r   zDatagramSocket.__init__B   s     " r   c                 X   K   | j                   j                  ||       t        |      S wr   )r   sendtolen)r   whatdestinationr,   s       r   r<   zDatagramSocket.sendtoG   s$     dK04ys   (*c                 (  K   t               j                         }	 | j                  j                  J || j                  _        t	        ||       d {    |j                         d | j                  _        S 7 %# d | j                  _        w xY wwr   )r   create_futurer8   r   r3   result)r   sizer,   r   s       r   r   zDatagramSocket.recvfromL   sw      "002	*==))111%)DMM"!$000;;=%)DMM" 1 &*DMM"s.   B8A< A:A< (B:A< <BBc                 @   K   | j                   j                          y wr   )r8   r'   r   s    r   r'   zDatagramSocket.closeW   s        c                 @   K   | j                   j                  d      S wNpeernamer   get_extra_infor   s    r   getpeernamezDatagramSocket.getpeernameZ        ~~,,Z88rE   c                 @   K   | j                   j                  d      S wNsocknamerI   r   s    r   getsocknamezDatagramSocket.getsockname]   rL   rE   c                    K   t         wr   NotImplementedErrorr   r,   s     r   getpeercertzDatagramSocket.getpeercert`   s     !!   	)r(   r)   r*   r   r<   r   r'   rK   rP   rU   __classcell__r:   s   @r   r5   r5   A   s&    !

	*99"r   r5   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	StreamSocketc                 .    || _         || _        || _        y r   )r9   readerwriter)r   afr\   r]   s       r   r   zStreamSocket.__init__e   s    r   c                    K   | j                   j                  |       t        | j                   j                         |       d {   S 7 wr   )r]   writer3   drain)r   r>   r,   s      r   sendallzStreamSocket.sendallj   s8     $$T[[%6%6%8'BBBBs   AAA
Ac                 h   K   t        | j                  j                  |      |       d {   S 7 wr   )r3   r\   read)r   rC   r,   s      r   recvzStreamSocket.recvn   s(     $T[[%5%5d%;WEEEEs   )202c                 @   K   | j                   j                          y wr   )r]   r'   r   s    r   r'   zStreamSocket.closeq   s     rE   c                 @   K   | j                   j                  d      S wrG   r]   rJ   r   s    r   rK   zStreamSocket.getpeernamet        {{))*55rE   c                 @   K   | j                   j                  d      S wrN   rh   r   s    r   rP   zStreamSocket.getsocknamew   ri   rE   c                 @   K   | j                   j                  d      S w)Npeercertrh   rT   s     r   rU   zStreamSocket.getpeercertz   ri   rE   N)
r(   r)   r*   r   rb   re   r'   rK   rP   rU   r
   r   r   rZ   rZ   d   s'    
CF666r   rZ   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         |           || _        || _        || _        || _        |dk7  rt        d      y )Nr   z9the asyncio transport for HTTPX cannot set the local port)r7   r   _local_port	_resolver_bootstrap_address_familyrS   )r   resolver
local_portbootstrap_addressr9   r:   s        r   r   z_NetworkBackend.__init__   sH    G)D%DN&7D#!DLQ)O  r   c                   K   g }t        |      \  }}t        j                  j                  |      r|j	                  |       n| j
                  |j	                  | j
                         nnt        |      }| j                  }	|rt        j                  j                  |      }	| j                  j                  ||	|       d {   }
|
j                         }|D ]d  }	 t        d|      }t        |      }t        j                  |      5  t        j                  |||       d {   }d d d        t!              c S  t$        j&                  7 7 ,# 1 sw Y   +xY w# t"        $ r Y w xY ww)N)r9   lifetimeg       @)remote_hostremote_port
local_host)rn   r/   inet
is_addressappendrv   rp   rw   af_for_addressru   resolve_name	addressesro   anyio
fail_afterconnect_tcp_CoreAnyIOStream	ExceptionhttpcoreConnectError)r   hostportr,   local_addresssocket_optionsr   _
expirationr9   answersaddressattempt_expirationstreams                 r   r   z_NetworkBackend.connect_tcp   s`     I*73MAzxx""4(  &((4  !8!89$Z0  XX44]CF $ ; ;' !< !  $--/	$ )Ec:)V&();<G))'2 ','8'8(/(,'4( " ,F33 '''#"  ! s`   CE2EE2 ,E#E(E)E-E#?E2EE 	E##	E/,E2.E//E2c                    K   t         wr   rR   )r   pathr,   r   s       r   connect_unix_socketz#_NetworkBackend.connect_unix_socket   s      &%rV   c                 J   K   t        j                  |       d {    y 7 wr   )r   sleep)r   secondss     r   r   z_NetworkBackend.sleep   s     ++g&&&   #!#r   )r(   r)   r*   r   r   r   r   rW   rX   s   @r   rr   rr      s$    		 FJ	(D 15	&
	'r   rr   c                   >     e Zd Zdddej                  d fd
Z xZS )_HTTPTransportr   N)ry   rz   rx   r9   c                    |dd l }|j                  j                         }t        |   |i | t        ||||      | j                  _        y )Nr   )dns.asyncresolverasyncresolverResolverr7   r   rr   _pool_network_backend)	r   ry   rz   rx   r9   argskwargsr/   r:   s	           r   r   z_HTTPTransport.__init__   sO     (,,557Gd-f-*9*&7+DJJ'r   )r(   r)   r*   socket	AF_UNSPECr   rW   rX   s   @r   r   r      s!     "##	 	r   r   c                   >    e Zd Zd Z	 	 	 	 	 	 ddZd Zd Zd Zd Zy)	Backendc                      y)Nr   r
   r   s    r   namezBackend.name   s    r   Nc	                   K   t               }	|t        j                  k(  r[t        r#|!t        j
                  j                  |      df}|	j                  t        ||||       d {   \  }
}t        ||
|      S |t        j                  k(  rQ|t        d      t        t        j                  |d   |d   |||||      |       d {   \  }}t        |||      S t!        dd| z         7 7 'w)Nr   )r9   protoremote_addrz'destination required for stream sockets   )sslr9   r   
local_addrserver_hostnamezunsupported socket ztype )r   r   
SOCK_DGRAM	_is_win32r/   r   
any_for_afcreate_datagram_endpointr   r5   SOCK_STREAM
ValueErrorr3   r   open_connectionrZ   rS   )r   r^   socktyper   sourcer?   r,   ssl_contextr   loopr   r8   rws                 r   make_socketzBackend.make_socket   s     !"v(((V^ ((--b115(,(E(E!' )F ) #Ix ""i::+++" !!JKK*''NN#%$3  FQ  Aq))!!eH:$66
 	
5#s%   A$C4&C0'A#C4
C2&C42C4c                 J   K   t        j                  |       d {    y 7 wr   )r   r   )r   intervals     r   r   zBackend.sleep	  s     mmH%%%r   c                      y)NFr
   r   s    r   datagram_connection_requiredz$Backend.datagram_connection_required  s    r   c                     t         S r   )r   r   s    r   get_transport_classzBackend.get_transport_class  s    r   c                 6   K   t        ||       d {   S 7 wr   )r3   )r   r2   r,   s      r   r-   zBackend.wait_for  s     $Y8888s   )r   NNNNN)	r(   r)   r*   r   r   r   r   r   r-   r
   r   r   r   r      s5     -
^&9r   r   )%__doc__r   r   sysdns._asyncbackendr/   dns._featuresdns.exceptiondns.inetplatformr   r   r   r3   _asyncbackendr5   rZ   	_featureshaver   r   httpcore._backends.anyiohttpxAsyncNetworkBackend_CoreAsyncNetworkBackend	_backendsAnyIOStreamr   	dns.queryrn   ro   rp   rr   AsyncHTTPTransportr   NullTransportr   r
   r   r   <module>r      s   $   
    LLG#	( > "S&&55  "F63$$11 64 ==e#';;))//;;RR3'2 3'j11 * &&44N=9c'' =9r   