
    df
#                     8   d 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	 ddlZddlZddlZddlZej&                  Zej*                  j                  j,                  ZddlmZmZmZ  G d de      Z G d dej:                        Z G d dej                  jB                        Z!y# e$ r ej                  j@                  ZY =w xY w)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     M/home/api-vastappli/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.close1   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   5   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__@   s     " r   c                 X   K   | j                   j                  ||       t        |      S wr   )r   sendtolen)r   whatdestinationr,   s       r   r<   zDatagramSocket.sendtoE   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.recvfromJ   st      "002	*==))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.closeU   s        c                 @   K   | j                   j                  d      S wNpeernamer   get_extra_infor   s    r   getpeernamezDatagramSocket.getpeernameX        ~~,,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   ?   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__c   s    r   c                    K   | j                   j                  |       t        | j                   j                         |       d {   S 7 wr   )r]   writer3   drain)r   r>   r,   s      r   sendallzStreamSocket.sendallh   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.recvl   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.closeo   s     rE   c                 @   K   | j                   j                  d      S wrG   r]   rJ   r   s    r   rK   zStreamSocket.getpeernamer        {{))*55rE   c                 @   K   | j                   j                  d      S wrN   rh   r   s    r   rP   zStreamSocket.getsocknameu   ri   rE   c                 @   K   | j                   j                  d      S w)Npeercertrh   rT   s     r   rU   zStreamSocket.getpeercertx   ri   rE   N)
r(   r)   r*   r   rb   re   r'   rK   rP   rU   r
   r   r   rZ   rZ   b   s'    
CF666r   rZ   )_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)rm   r/   inet
is_addressappendru   ro   rv   af_for_addressrt   resolve_name	addressesrn   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   rq   rq      s$    		 FJ	(D 15	&
	'r   rq   c                   >     e Zd Zdddej                  d fd
Z xZS )_HTTPTransportr   N)rx   ry   rw   r9   c                    |dd l }|j                  j                         }t        |   |i | t        ||||      | j                  _        y )Nr   )dns.asyncresolverasyncresolverResolverr7   r   rq   _pool_network_backend)	r   rx   ry   rw   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         j                  k(  rt        rt        d      t	               }	|t         j                  k(  r2|	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)	NzHdestinationless datagram sockets are not supported by asyncio on Windows)r9   protoremote_addrz'destination required for stream socketsr      )sslr9   r   
local_addrserver_hostnamezunsupported socket ztype )r   
SOCK_DGRAM	_is_win32rS   r   create_datagram_endpointr   r5   SOCK_STREAM
ValueErrorr3   r   open_connectionrZ   )r   r^   socktyper   sourcer?   r,   ssl_contextr   loopr   r8   rws                 r   make_socketzBackend.make_socket   s$     8v/@/@#@Y% 
 !"v((((,(E(E!' )F ) #Ix ""i::+++" !!JKK*''NN#%$3  FQ  Aq))!!eH:$66
 	
5#s%   A!C1#C-$A#C1C/&C1/C1c                 J   K   t        j                  |       d {    y 7 wr   )r   r   )r   intervals     r   r   zBackend.sleep	  s     mmH%%%r   c                     t         S r   )r   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     /
b&9r   r   )"__doc__r   r   sysdns._asyncbackendr/   dns.exceptionplatformr   r   r   r3   _asyncbackendr5   rZ   r   r   httpcore._backends.anyiohttpxAsyncNetworkBackend_CoreAsyncNetworkBackend	_backendsAnyIOStreamr   	dns.queryrm   rn   ro   rq   AsyncHTTPTransportr   ImportErrorNullTransportr   r
   r   r   <module>r      s   $   
  LLG#	( > "S&&55  "F63$$11 64U5#';;))//;;RR3'2 3'j11 0?9c'' ?9	  5&&44N5s   5A&C; ;DD