
    iD                       S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
JrJr  S SKJr  S SKJrJrJrJrJr  S SKrSSKJr  SSKJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&  S	r'S
r(\" S5      r)Sr*\RV                  " \,5      r-\R\                  \R^                  \R`                  \Rb                  \Rd                  \Rf                  \Rh                  \Rj                  \Rl                  \Rn                  \Rp                  \Rr                  S.r:\Rv                  \Rx                  \Rz                  \R|                  \R~                  S.r@ " S S5      rAg)    )annotationsN)CallableIterableSequence)TracebackType)TYPE_CHECKINGAnyLiteralTypeVaroverload   )error)AresHostResultAresQueryAAAAResultAresQueryAResultAresQueryCAAResultAresQueryCNAMEResultAresQueryMXResultAresQueryNAPTRResultAresQueryNSResultAresQueryPTRResultAresQuerySOAResultAresQuerySRVResultAresQueryTXTResultQueryResultconvert_resultz4.0.0)DNSResolverr   _Tzpaiodns needs a SelectorEventLoop on Windows. See more: https://github.com/aio-libs/aiodns#note-for-windows-users)AAAAAANYCAACNAMEMXNAPTRNSPTRSOASRVTXT)INCHAOSHSNONEr!   c                     \ rS rSr  S(       S)S jjrS*S jr\S+S j5       r\R                  S,S j5       r        S-S jr	  S.S jr
          S/S	 jr    S0S
 jr\ S1       S2S jj5       r\ S1       S3S jj5       r\ S1       S4S jj5       r\ S1       S5S jj5       r\ S1       S6S jj5       r\ S1       S7S jj5       r\ S1       S8S jj5       r\ S1       S9S jj5       r\ S1       S:S jj5       r\ S1       S;S jj5       r\ S1       S<S jj5       r S=       S>S jjr S=       S?S jjr          S@S jr      SAS jr\R&                  SSSS4             SBS jjr SC     SDS jjrSES jrSFS jrSGS jrSFS  jrSFS! jrSFS" jrSFS# jrSHS$ jr        SIS% jrSFS& jrS'r g)Jr   J   Nc                   SU l         U=(       d    [        R                  " 5       U l        [        (       a  U R                  c   eUR                  SS 5        UR                  SS 5      nX@l        U R                  " S0 UD6u  U l        U l	        U(       a  Xl
        [        5       U l        [        5       U l        S U l        SU l         g )NTsock_state_cbtimeoutF )_closedasyncioget_event_looploopr   pop_timeout_make_channel_event_thread_channelnameserversset	_read_fds
_write_fds_timer)selfr>   r8   kwargsr3   s        </app/mltbenv/lib/python3.13/site-packages/aiodns/__init__.py__init__DNSResolver.__init__K   s     4G224	=99(((

?D)**Y-,0,>,>,H,H)DM*#&5$'E26    c                  ^  S[         R                  " SSU R                  0UD64$ ! [         R                   aO  n[        R
                  S:X  a  [        R                  SU5         S nAO#[        R                  SU5         S nAOS nAff = f[        R
                  S:X  a  [        U R                  [        R                  5      (       d\   SS Kn[        U R                  UR                  5      (       d  [        [        5      eO"! [          a  n[        [        5      UeS nAff = f["        R$                  " U 5      m        SU4S jjnS	[         R                  " SUU R                  S
.UD64$ )NTr3   linuxzFailed to create DNS resolver channel with automatic monitoring of resolver configuration changes. This usually means the system ran out of inotify watches. Falling back to socket state callback. Consider increasing the system inotify watch limit: %szFailed to create DNS resolver channel with automatic monitoring of resolver configuration changes. Falling back to socket state callback: %swin32r   c                @   > T" 5       nUb  UR                  XU5        g g N)_sock_state_cb)fdreadablewritablethis	weak_selfs       rE   sock_state_cb_wrapper8DNSResolver._make_channel.<locals>.sock_state_cb_wrapper   s'     ;D##B(;  rH   F)r2   r3   r4   rO   intrP   boolrQ   rX   returnNone)pycaresChannelr:   	AresErrorsysplatform_LOGGERwarning
isinstancer8   r6   SelectorEventLoopwinloopLoopRuntimeErrorWINDOWS_SELECTOR_ERR_MSGModuleNotFoundErrorweakrefref)rC   rD   erd   exrT   rS   s         @rE   r;   DNSResolver._make_channel`   sd   	II&III   	||w&D
   @ 	 	$ <<7":IIw00,
 ,
E!$))W\\::&'?@@ ;& E"#;<"DE KK%		<	<#	</3	<	< goo 
/MM
 
 
 	
s2   #' B
*B*BB
8D 
D#DD#c                ~    U R                   R                   Vs/ s H  oR                  SS5      S   PM     sn$ s  snf )N:r   r   )r=   serversrsplit)rC   ss     rE   r>   DNSResolver.nameservers   s6     .2]]-B-BC-Ba #-BCCCs   :c                $    XR                   l        g rM   )r=   rp   )rC   values     rE   r>   rs      s     %rH   c                    UR                  5       (       a  g UbD  UR                  [        R                  " U[        R
                  R                  U5      5      5        g UR                  U5        g rM   )	cancelledset_exceptionr   DNSErrorr[   errnostrerror
set_result)rC   futresulterrornos       rE   	_callbackDNSResolver._callback   sQ     ==??w(>(>w(GH NN6"rH   c                   U R                   R                  5       nU R                  (       a9  [        R                  " U R                   R
                  U R                  U5      nX4$ [        R                  " U R                  U5      nX4$ )z?Return a future and a callback to set the result of the future.)r8   create_futurer<   	functoolspartialcall_soon_threadsafer   )rC   futurecbs      rE   _get_future_callback DNSResolver._get_future_callback   sp    
 &*YY%<%<%>""		..B z ""4>>6:BzrH   c                    UR                  5       (       a  gUbD  UR                  [        R                  " U[        R
                  R                  U5      5      5        gUR                  [        X25      5        g)z>Callback for query that converts results to compatible format.N)	rw   rx   r   ry   r[   rz   r{   r|   r   )rC   r}   qtyper~   r   s        rE   _query_callbackDNSResolver._query_callback   sV     ==??w(>(>w(GH NN>&89rH   c                   U R                   R                  5       nU R                  (       a:  [        R                  " U R                   R
                  U R                  UU5      nX#4$ [        R                  " U R                  X!5      nX#4$ )z>Return a future and callback for query with result conversion.)r8   r   r<   r   r   r   r   )rC   r   r   r   s       rE   _get_query_future_callback&DNSResolver._get_query_future_callback   sw     /3ii.E.E.G""		..$$	B z ""4#7#7GBzrH   c                    g rM   r4   rC   hostr   qclasss       rE   queryDNSResolver.query   s     25rH   c                    g rM   r4   r   s       rE   r   r      s     58rH   c                    g rM   r4   r   s       rE   r   r           47rH   c                    g rM   r4   r   s       rE   r   r      s     03rH   c                    g rM   r4   r   s       rE   r   r           36rH   c                    g rM   r4   r   s       rE   r   r      s     69rH   c                    g rM   r4   r   s       rE   r   r      r   rH   c                    g rM   r4   r   s       rE   r   r           .1rH   c                    g rM   r4   r   s       rE   r   r      r   rH   c                    g rM   r4   r   s       rE   r   r      r   rH   c                    g rM   r4   r   s       rE   r   r     r   rH   c                   [         R                  " S[        SS9   [        U   nSnUb
   [        U   nU R                  U5      u  pxUb  U R                  R                  XXhS9  U$ U R                  R                  XUS9  U$ ! [         a  n[        SU 35      UeSnAff = f! [         a  n[        SU 35      UeSnAff = f)	z6Query DNS records (deprecated, use query_dns instead).z.query() is deprecated, use query_dns() instead   
stacklevelinvalid query type: Ninvalid query class: query_classcallbackr   )
warningswarnDeprecationWarningquery_type_mapKeyError
ValueErrorquery_class_mapr   r=   r   	rC   r   r   r   	qtype_intrk   
qclass_intr}   r   s	            rE   r   r   	  s     	<	

	D&u-I "&
J,V4
 11)<!MMZ   
 
 MM"=
!  	D3E7;<!C	D  J #8!ABIJs.   	B 	B# 
B BB #
C-B<<Cc                R    [         U   nSnUb
   [        U   nU R	                  5       u  pxUb  U R
                  R                  XXhS9  U$ U R
                  R                  XUS9  U$ ! [         a  n[        SU 35      UeSnAff = f! [         a  n[        SU 35      UeSnAff = f)z:Query DNS records, returning native pycares 5.x DNSResult.r   Nr   r   r   )r   r   r   r   r   r=   r   r   s	            rE   	query_dnsDNSResolver.query_dns&  s    	D&u-I "&
J,V4

 ++-!MMZ   
 
 MM"=
#  	D3E7;<!C	D  J #8!ABIJs.   	A' 	B '
B1B  B
B&B!!B&c                   UR                  5       (       a  gUbD  UR                  [        R                  " U[        R
                  R                  U5      5      5        gUc   eUR                   Vs/ s H  oUR                  S   R                  5       PM!     nnUR                  (       a  UR                  S   R                  OUnUR                  [        U/ US95        gs  snf )z8Callback for gethostbyname that converts AddrInfoResult.Nr   )namealiases	addresses)rw   rx   r   ry   r[   rz   r{   nodesaddrdecodecnamesr   r|   r   )rC   r}   r   r~   r   noder   r   s           rE   _gethostbyname_callback#DNSResolver._gethostbyname_callback?  s     ==??w(>(>w(GH %%%;A<<H<41,,.<IH,2MM6==#((tDNND"	J Is   1&C c                x   [         R                  " S[        SS9  U R                  R	                  5       nU R
                  (       a8  [        R                  " U R                  R                  U R                  UU5      nO![        R                  " U R                  X15      nU R                  R                  USX$S9  U$ )z
Resolve hostname to addresses.

Deprecated: Use getaddrinfo() instead. This is implemented using
getaddrinfo as pycares 5.x removed the gethostbyname method.
z8gethostbyname() is deprecated, use getaddrinfo() insteadr   r   N)familyr   )r   r   r   r8   r   r<   r   r   r   r   r=   getaddrinfo)rC   r   r   r}   r   s        rE   gethostbynameDNSResolver.gethostbynameW  s     	F	

 /3ii.E.E.G""		..,,	B ""4#?#?KB!!$V!I
rH   r   c           
     h    U R                  5       u  pxU R                  R                  UUUUUUUS9  U$ )N)r   typeprotoflagsr   )r   r=   r   )	rC   r   r   portr   r   r   r}   r   s	            rE   r   DNSResolver.getaddrinfos  sG     ++-!! 	" 	
 
rH   c                ^    U R                  5       u  p4U R                  R                  XUS9  U$ Nr   )r   r=   getnameinfo)rC   sockaddrr   r}   r   s        rE   r   DNSResolver.getnameinfo  s0     ++-!!(B!?
rH   c                \    U R                  5       u  p#U R                  R                  XS9  U$ r   )r   r=   gethostbyaddr)rC   r   r}   r   s       rE   r   DNSResolver.gethostbyaddr  s,    ++-##D#6
rH   c                8    U R                   R                  5         g rM   )r=   cancelrC   s    rE   r   DNSResolver.cancel  s    rH   c                   U(       d  U(       a  U(       aZ  U R                   R                  XR                  R                  U[        R
                  5        U R                  R                  U5        U(       aZ  U R                   R                  XR                  R                  [        R
                  U5        U R                  R                  U5        U R                  c  U R                  5         g g XR                  ;   a6  U R                  R                  U5        U R                   R                  U5        XR                  ;   a6  U R                  R                  U5        U R                   R                  U5        U R                  (       dB  U R                  (       d0  U R                  b"  U R                  R                  5         S U l
        g g g g rM   )r8   
add_readerr=   
process_fdr[   ARES_SOCKET_BADr@   add
add_writerrA   rB   _start_timerdiscardremove_readerremove_writerr   )rC   rO   rP   rQ   s       rE   rN   DNSResolver._sock_state_cb  s@   x		$$00"g6M6M ""2&		$$00'2I2I2 ##B'{{"!!# # ^^#&&r*		''+__$''+		''+ NNKK+""$" , ( #rH   c                    U R                   (       d  U R                  (       aI  U R                  R                  [        R
                  [        R
                  5        U R                  5         g S U l        g rM   )r@   rA   r=   r   r[   r   r   rB   r   s    rE   	_timer_cbDNSResolver._timer_cb  sG    >>T__MM$$'')@)@ DKrH   c                    U R                   nUb  US:  d  US:  a  SnOUS:X  a  SnU R                  R                  XR                  5      U l        g )Nr   r   g?)r:   r8   
call_laterr   rB   )rC   r3   s     rE   r   DNSResolver._start_timer  sG    --?gkWq[G\Gii**7NNCrH   c                   U R                   (       a  gSU l         U R                  b!  U R                  R                  5         SU l        U R                   H  nU R                  R                  U5        M      U R                   H  nU R                  R                  U5        M      U R                  R                  5         U R                  R                  5         U R                  R                  5         g)z:Cleanup timers and file descriptors when closing resolver.NT)r5   rB   r   r@   r8   r   rA   r   clearr=   close)rC   rO   s     rE   _cleanupDNSResolver._cleanup  s    <<;;"KK DK ..BII##B' !//BII##B' " 	rH   c                   #    U R                   (       d  U R                  R                  5         U R                  5         g7f)z
Cleanly close the DNS resolver.

This should be called to ensure all resources are properly released.
After calling close(), the resolver should not be used again.
N)r5   r=   r   r   r   s    rE   r   DNSResolver.close  s'      ||MM  "s   =?c                   #    U $ 7f)z Enter the async context manager.r4   r   s    rE   
__aenter__DNSResolver.__aenter__  s
     s   c                @   #    U R                  5       I Sh  vN   g N7f)zExit the async context manager.N)r   )rC   exc_typeexc_valexc_tbs       rE   	__aexit__DNSResolver.__aexit__  s      jjls   c                H    [        U S5      (       a  U R                  5         gg)z6Handle cleanup when the resolver is garbage collected.r=   N)hasattrr   r   s    rE   __del__DNSResolver.__del__  s     4$$MMO %rH   )	r=   r5   r<   r@   r:   rB   rA   r8   r>   )NN)r>   zSequence[str] | Noner8   z asyncio.AbstractEventLoop | NonerD   r	   rY   rZ   )rD   r	   rY   ztuple[bool, pycares.Channel])rY   zSequence[str])ru   zIterable[str | bytes]rY   rZ   )r}   zasyncio.Future[_T]r~   r   r   
int | NonerY   rZ   )rY   z;tuple[asyncio.Future[_T], Callable[[_T, int | None], None]])
r}   zasyncio.Future[QueryResult]r   rW   r~   zpycares.DNSResultr   r  rY   rZ   )r   rW   rY   z7tuple[asyncio.Future[QueryResult], Callable[..., None]]).)r   strr   zLiteral['A']r   
str | NonerY   z&asyncio.Future[list[AresQueryAResult]])r   r  r   zLiteral['AAAA']r   r  rY   z)asyncio.Future[list[AresQueryAAAAResult]])r   r  r   zLiteral['CAA']r   r  rY   z(asyncio.Future[list[AresQueryCAAResult]])r   r  r   zLiteral['CNAME']r   r  rY   z$asyncio.Future[AresQueryCNAMEResult])r   r  r   zLiteral['MX']r   r  rY   z'asyncio.Future[list[AresQueryMXResult]])r   r  r   zLiteral['NAPTR']r   r  rY   z*asyncio.Future[list[AresQueryNAPTRResult]])r   r  r   zLiteral['NS']r   r  rY   z'asyncio.Future[list[AresQueryNSResult]])r   r  r   zLiteral['PTR']r   r  rY   z"asyncio.Future[AresQueryPTRResult])r   r  r   zLiteral['SOA']r   r  rY   z"asyncio.Future[AresQuerySOAResult])r   r  r   zLiteral['SRV']r   r  rY   z(asyncio.Future[list[AresQuerySRVResult]])r   r  r   zLiteral['TXT']r   r  rY   z(asyncio.Future[list[AresQueryTXTResult]]rM   )r   r  r   r  r   r  rY   z/asyncio.Future[list[Any]] | asyncio.Future[Any])r   r  r   r  r   r  rY   z!asyncio.Future[pycares.DNSResult])
r}   asyncio.Future[AresHostResult]r   r  r~   zpycares.AddrInfoResult | Noner   r  rY   rZ   )r   r  r   socket.AddressFamilyrY   r  )r   r  r   r  r   r  r   rW   r   rW   r   rW   rY   z&asyncio.Future[pycares.AddrInfoResult])r   )r   z+tuple[str, int] | tuple[str, int, int, int]r   rW   rY   z&asyncio.Future[pycares.NameInfoResult])r   r  rY   z"asyncio.Future[pycares.HostResult])rY   rZ   rV   )rY   r   )r   ztype[BaseException] | Noner   zBaseException | Noner   zTracebackType | NonerY   rZ   )!__name__
__module____qualname____firstlineno__rF   r;   propertyr>   setterr   r   r   r   r   r   r   r   r   socket	AF_UNSPECr   r   r   r   rN   r   r   r   r   r   r   r  __static_attributes__r4   rH   rE   r   r   J   s    -115) / 	
 
*2
h D D
 & &
#%
#/1
#<F
#	
#	D :(: : "	:
 : 
:"	@" CF55 ,56@5	/5 5 FI88 /89C8	28 8 EH77 .78B7	17 7 GJ33 03:D3	-3 3 DG66 -67A6	06 6 GJ99 09:D9	39 9 DG66 -67A6	06 6 EH11 .18B1	+1 1 EH11 .18B1	+1 1 EH77 .78B7	17 7 EH77 .78B7	17 7
 ;? #-7	8< ;? #-7	*2+  .	
  
0!5	'> (.'7'7 % 	
    
02 =  
0	#@D*	, & %	
 
rH   r   )B
__future__r   r6   r   loggingr  r^   r   ri   collections.abcr   r   r   typesr   typingr   r	   r
   r   r   r[    r   compatr   r   r   r   r   r   r   r   r   r   r   r   r   r   __version____all__r   rg   	getLoggerr  r`   QUERY_TYPE_AQUERY_TYPE_AAAAQUERY_TYPE_ANYQUERY_TYPE_CAAQUERY_TYPE_CNAMEQUERY_TYPE_MXQUERY_TYPE_NAPTRQUERY_TYPE_NSQUERY_TYPE_PTRQUERY_TYPE_SOAQUERY_TYPE_SRVQUERY_TYPE_TXTr   QUERY_CLASS_INQUERY_CLASS_CHAOSQUERY_CLASS_HSQUERY_CLASS_NONEQUERY_CLASS_ANYr   r   r4   rH   rE   <module>r,     s3   "     
   8 8  A A     " 
 T]@ 
 

H
% 
		##!!!!%%


%%


!!!!!!!!  
 
 &&

 
 $$""x xrH   