
    
FZjK                       d dl m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d dl	Z	d dl
mZmZmZmZ d dlmZ d dlmZmZmZmZmZ d dlZddlmZ ddlmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d	Z)d
Z* ed      Z+dZ, ejZ                  e.      Z/ej`                  ejb                  ejd                  ejf                  ejh                  ejj                  ejl                  ejn                  ejp                  ejr                  ejt                  ejv                  dZ<ejz                  ej|                  ej~                  ej                  ej                  dZB G d d      ZCy)    )annotationsN)CallableIterableIterator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.4)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                     e Zd Z	 	 d'	 	 	 	 	 	 	 d(dZd)dZed*d       Zej                  d+d       Z	 	 	 	 	 	 	 	 d,dZ	 	 d-dZ		 	 	 	 	 	 	 	 	 	 d.dZ
	 	 	 	 d/d	Zej                  d0d
       Ze	 d1	 	 	 	 	 	 	 d2d       Ze	 d1	 	 	 	 	 	 	 d3d       Ze	 d1	 	 	 	 	 	 	 d4d       Ze	 d1	 	 	 	 	 	 	 d5d       Ze	 d1	 	 	 	 	 	 	 d6d       Ze	 d1	 	 	 	 	 	 	 d7d       Ze	 d1	 	 	 	 	 	 	 d8d       Ze	 d1	 	 	 	 	 	 	 d9d       Ze	 d1	 	 	 	 	 	 	 d:d       Ze	 d1	 	 	 	 	 	 	 d;d       Ze	 d1	 	 	 	 	 	 	 d<d       Z	 d=	 	 	 	 	 	 	 d>dZ	 d=	 	 	 	 	 	 	 d?dZ	 	 	 	 	 	 	 	 	 	 d@dZ	 	 	 	 	 	 dAdZej*                  ddddf	 	 	 	 	 	 	 	 	 	 	 	 	 dBdZ	 dC	 	 	 	 	 dDdZdEdZdFdZdGdZdFd ZdFd!ZdFd"ZdFd#ZdHd$Z	 	 	 	 	 	 	 	 dId%Z dFd&Z!y)Jr   Nc                r   d| _         |xs t        j                         | _        t        r| j                  J |j                  dd        |j                  dd       }|| _         | j                  di |\  | _        | _	        |r|| _
        t               | _        t               | _        d | _        d| _         y )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        QC:\Users\Rodrigo\frota-trucks-cliente\python\Lib\site-packages\aiodns/__init__.py__init__zDNSResolver.__init__L   s     4G224	99(((

?D)**Y-,>D,>,>,H,H)DM*D#&5$'E26    c                   	 dt        j                  dd| j                  i|fS # t         j                  $ rJ}t        j
                  dk(  rt        j                  d|       nt        j                  d|       Y d }~nd }~ww xY wt        j
                  dk(  rzt        | j                  t        j                        sV	 dd l}t        | j                  |j                        st        t              n!# t         $ r}t        t              |d }~ww xY wt#        j$                  |       	 	 	 	 	 	 	 	 dfd}d	t        j                  d|| j                  d
|fS )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                @            }||j                  | ||       y y N)_sock_state_cb)fdreadablewritablethis	weak_selfs       rE   sock_state_cb_wrapperz8DNSResolver._make_channel.<locals>.sock_state_cb_wrapper   s)     ;D##B(;  rG   F)r2   r3   r4   rN   intrO   boolrP   rV   returnNone)pycaresChannelr:   	AresErrorsysplatform_LOGGERwarning
isinstancer8   r6   SelectorEventLoopwinloopLoopRuntimeErrorWINDOWS_SELECTOR_ERR_MSGModuleNotFoundErrorweakrefref)rC   rD   erb   exrS   rR   s         @rE   r;   zDNSResolver._make_channela   sS   	II&III   	||w&D
  @ 		$ <<7":IIw00,
E!$))W\\:&'?@@ ;& E"#;<"DE KK%		<	<#	</3	<	< goo 
/MM
 
 
 	
s-   "& BA A>>B>3C2 2	D;DDc                z    | j                   j                  D cg c]  }|j                  dd      d    c}S c c}w )N:r   r   )r=   serversrsplit)rC   ss     rE   r>   zDNSResolver.nameservers   s8     .2]]-B-BC-Ba #-BCCCs   8c                &    || j                   _        y rL   )r=   rm   )rC   values     rE   r>   zDNSResolver.nameservers   s     %rG   c                    |j                         ry |C|j                  t        j                  |t        j
                  j                  |                   y |j                  |       y rL   )doneset_exceptionr   DNSErrorrY   errnostrerror
set_result)rC   futresulterrornos       rE   	_callbackzDNSResolver._callback   sO     88:w(>(>w(GH NN6"rG   c                   | j                   j                         }| j                  r9t        j                  | j                   j
                  | j                  |      }||fS t        j                  | j                  |      }||fS )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_callbackz DNSResolver._get_future_callback   st    
 &*YY%<%<%>""		..B rz ""4>>6:BrzrG   c                N   |j                         ry|C|j                  t        j                  |t        j
                  j                  |                   y	 t        ||      }|j                  |       y# t        j                  $ r}|j                  |       Y d}~yd}~ww xY w)z>Callback for query that converts results to compatible format.N)	rs   rt   r   ru   rY   rv   rw   r   rx   )rC   ry   qtyperz   r{   	convertedexcs          rE   _query_callbackzDNSResolver._query_callback   s     88:w(>(>w(GH 	&&vu5I NN9% ~~ 	#c""	#s   A6 6B$	BB$c                   | j                   j                         }| j                  r:t        j                  | j                   j
                  | j                  ||      }||fS t        j                  | j                  ||      }||fS )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_callbackz&DNSResolver._get_query_future_callback   s}     /3ii.E.E.G""		..$$	B rz ""4#7#7GBrzrG   c           	   #  Z  K   	 d  y # t         j                  $ r}|j                         rY d }~y |j                  r|j                  d   nt        j
                  }|j                  t	        j                  |t         j                  j                  |                   Y d }~y d }~ww xY ww)Nr   )
rY   r[   rs   argsr   ARES_EFORMERRrt   ru   rv   rw   )rC   ry   r   rv   s       rE   _capture_ares_errorzDNSResolver._capture_ares_error   s|     	   		xxz $'88CHHQK1D1DEugmm&<&<U&CD 		s5   B+	 B+B(B#B+A-B#B+#B((B+c                     y rL   r4   rC   hostr   qclasss       rE   queryzDNSResolver.query   s     25rG   c                     y rL   r4   r   s       rE   r   zDNSResolver.query   s     58rG   c                     y rL   r4   r   s       rE   r   zDNSResolver.query       47rG   c                     y rL   r4   r   s       rE   r   zDNSResolver.query  s     03rG   c                     y rL   r4   r   s       rE   r   zDNSResolver.query	       36rG   c                     y rL   r4   r   s       rE   r   zDNSResolver.query  s     69rG   c                     y rL   r4   r   s       rE   r   zDNSResolver.query  r   rG   c                     y rL   r4   r   s       rE   r   zDNSResolver.query       .1rG   c                     y rL   r4   r   s       rE   r   zDNSResolver.query  r   rG   c                     y rL   r4   r   s       rE   r   zDNSResolver.query  r   rG   c                     y rL   r4   r   s       rE   r   zDNSResolver.query!  r   rG   c                   t        j                  dt        d       	 t        |   }d}|
	 t        |   }| j                  |      \  }}| j                  |      5  | | j                  j                  ||||       n| j                  j                  |||       ddd       |S # t        $ r}t        d|       |d}~ww xY w# t        $ r}t        d|       |d}~ww xY w# 1 sw Y   |S xY w)	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=   r   	rC   r   r   r   	qtype_intri   
qclass_intry   r   s	            rE   r   zDNSResolver.query&  s    	<	

	D&u-I "&
J,V4
 11)<R%%c*%##)b $  ##D)b#A + 
#  	D3E7;<!C	D  J #8!ABIJ + 
s;   	B% 	C AC%%	C.B==C	C"CC"%C/c                   	 t         |   }d}|
	 t        |   }| j	                         \  }}| j                  |      5  | | j                  j                  ||||       n| j                  j                  |||       ddd       |S # t        $ r}t        d|       |d}~ww xY w# t        $ r}t        d|       |d}~ww xY w# 1 sw Y   |S xY w)z:Query DNS records, returning native pycares 5.x DNSResult.r   Nr   r   r   )r   r   r   r   r   r   r=   r   r   s	            rE   	query_dnszDNSResolver.query_dnsD  s    	D&u-I "&
J,V4

 ++-R%%c*%##)b $  ##D)b#A + 
%  	D3E7;<!C	D  J #8!ABIJ
 + 
s:   	B 	B( AC	B%B  B%(	C1C  CCc                   |j                         ry|C|j                  t        j                  |t        j
                  j                  |                   y|J |j                  D cg c]  }|j                  d   j                         ! }}|j                  r|j                  d   j                  n|}|j                  t        |g |             yc c}w )z8Callback for gethostbyname that converts AddrInfoResult.Nr   )namealiases	addresses)rs   rt   r   ru   rY   rv   rw   nodesaddrdecodecnamesr   rx   r   )rC   ry   r   rz   r{   noder   r   s           rE   _gethostbyname_callbackz#DNSResolver._gethostbyname_callback^  s     88:w(>(>w(GH %%%;A<<H<41,,.<IH,2MM6==#((tDNND"	J Is   )$Cc                   t        j                  dt        d       | j                  j	                         }| j
                  r7t        j                  | j                  j                  | j                  ||      }n!t        j                  | j                  ||      }| j                  |      5  | j                  j                  |d||       ddd       |S # 1 sw Y   |S xY w)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   r=   getaddrinfo)rC   r   r   ry   r   s        rE   gethostbynamezDNSResolver.gethostbynamew  s     	F	

 /3ii.E.E.G""		..,,	B ""4#?#?dKB%%c*MM%%dD"%M +
 +
s   , CC r   c           
         | j                         \  }}| j                  |      5  | j                  j                  |||||||       d d d        |S # 1 sw Y   |S xY w)N)r   typeprotoflagsr   )r   r   r=   r   )	rC   r   r   portr   r   r   ry   r   s	            rE   r   zDNSResolver.getaddrinfo  si     ++-R%%c*MM%% &  + 
 + 
s   #AAc                    | j                         \  }}| j                  |      5  | j                  j                  |||       d d d        |S # 1 sw Y   |S xY wNr   )r   r   r=   getnameinfo)rC   sockaddrr   ry   r   s        rE   r   zDNSResolver.getnameinfo  sR     ++-R%%c*MM%%h%C +
 +
s   AAc                    | j                         \  }}| j                  |      5  | j                  j                  ||       d d d        |S # 1 sw Y   |S xY wr   )r   r   r=   gethostbyaddr)rC   r   ry   r   s       rE   r   zDNSResolver.gethostbyaddr  sN    ++-R%%c*MM''r': +
 +
s   AAc                8    | j                   j                          y rL   )r=   cancelrC   s    rE   r   zDNSResolver.cancel  s    rG   c                \   |s|r|r[| j                   j                  || j                  j                  |t        j
                         | j                  j                  |       |r[| j                   j                  || j                  j                  t        j
                  |       | j                  j                  |       | j                  | j                          y y || j                  v r6| j                  j                  |       | j                   j                  |       || j                  v r6| j                  j                  |       | j                   j                  |       | j                  s<| j                  s/| j                  "| j                  j                          d | _
        y y y y rL   )r8   
add_readerr=   
process_fdrY   ARES_SOCKET_BADr@   add
add_writerrA   rB   _start_timerdiscardremove_readerremove_writerr   )rC   rN   rO   rP   s       rE   rM   zDNSResolver._sock_state_cb  sH   x		$$00"g6M6M ""2&		$$00'2I2I2 ##B'{{"!!# # T^^#&&r*		''+T__$''+		''+ NNKK+""$" , ( #rG   c                    | j                   s| j                  rI| j                  j                  t        j
                  t        j
                         | j                          y d | _        y rL   )r@   rA   r=   r   rY   r   r   rB   r   s    rE   	_timer_cbzDNSResolver._timer_cb  sG    >>T__MM$$'')@)@ DKrG   c                    | j                   }|
|dk  s|dkD  rd}n|dk(  rd}| j                  j                  || j                        | _        y )Nr   r   g?)r:   r8   
call_laterr   rB   )rC   r3   s     rE   r   zDNSResolver._start_timer  sI    --?gkWq[G\Gii**7DNNCrG   c                   | j                   ryd| _         | j                  !| j                  j                          d| _        | j                  D ]  }| j                  j                  |        | j                  D ]  }| j                  j                  |        | j                  j                          | j                  j                          | j                  j                          y)z:Cleanup timers and file descriptors when closing resolver.NT)r5   rB   r   r@   r8   r   rA   r   clearr=   close)rC   rN   s     rE   _cleanupzDNSResolver._cleanup  s    <<;;"KK DK ..BII##B' !//BII##B' " 	rG   c                x   K   | j                   s| j                  j                          | j                          yw)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   zDNSResolver.close  s(      ||MM  "s   8:c                   K   | S w)z Enter the async context manager.r4   r   s    rE   
__aenter__zDNSResolver.__aenter__  s     s   c                @   K   | j                          d{    y7 w)zExit the async context manager.N)r   )rC   exc_typeexc_valexc_tbs       rE   	__aexit__zDNSResolver.__aexit__  s      jjls   c                >    t        | d      r| j                          yy)z6Handle cleanup when the resolver is garbage collected.r=   N)hasattrr   r   s    rE   __del__zDNSResolver.__del__  s     4$MMO %rG   )NN)r>   zSequence[str] | Noner8   z asyncio.AbstractEventLoop | NonerD   r
   rW   rX   )rD   r
   rW   ztuple[bool, pycares.Channel])rW   zSequence[str])rq   zIterable[str | bytes]rW   rX   )ry   asyncio.Future[_T]rz   r   r{   
int | NonerW   rX   )rW   z;tuple[asyncio.Future[_T], Callable[[_T, int | None], None]])
ry   zasyncio.Future[QueryResult]r   rU   rz   zpycares.DNSResultr{   r   rW   rX   )r   rU   rW   z7tuple[asyncio.Future[QueryResult], Callable[..., None]])ry   r   rW   zIterator[None]).)r   strr   zLiteral['A']r   
str | NonerW   z&asyncio.Future[list[AresQueryAResult]])r   r   r   zLiteral['AAAA']r   r   rW   z)asyncio.Future[list[AresQueryAAAAResult]])r   r   r   zLiteral['CAA']r   r   rW   z(asyncio.Future[list[AresQueryCAAResult]])r   r   r   zLiteral['CNAME']r   r   rW   z$asyncio.Future[AresQueryCNAMEResult])r   r   r   zLiteral['MX']r   r   rW   z'asyncio.Future[list[AresQueryMXResult]])r   r   r   zLiteral['NAPTR']r   r   rW   z*asyncio.Future[list[AresQueryNAPTRResult]])r   r   r   zLiteral['NS']r   r   rW   z'asyncio.Future[list[AresQueryNSResult]])r   r   r   zLiteral['PTR']r   r   rW   z"asyncio.Future[AresQueryPTRResult])r   r   r   zLiteral['SOA']r   r   rW   z"asyncio.Future[AresQuerySOAResult])r   r   r   zLiteral['SRV']r   r   rW   z(asyncio.Future[list[AresQuerySRVResult]])r   r   r   zLiteral['TXT']r   r   rW   z(asyncio.Future[list[AresQueryTXTResult]]rL   )r   r   r   r   r   r   rW   z/asyncio.Future[list[Any]] | asyncio.Future[Any])r   r   r   r   r   r   rW   z!asyncio.Future[pycares.DNSResult])
ry   asyncio.Future[AresHostResult]r   r   rz   zpycares.AddrInfoResult | Noner{   r   rW   rX   )r   r   r   socket.AddressFamilyrW   r   )r   r   r   r   r   r   r   rU   r   rU   r   rU   rW   z&asyncio.Future[pycares.AddrInfoResult])r   )r   z+tuple[str, int] | tuple[str, int, int, int]r   rU   rW   z&asyncio.Future[pycares.NameInfoResult])r   r   rW   z"asyncio.Future[pycares.HostResult])rW   rX   rT   )rW   r   )r   ztype[BaseException] | Noner   zBaseException | Noner   zTracebackType | NonerW   rX   )"__name__
__module____qualname__rF   r;   propertyr>   setterr|   r   r   r   
contextlibcontextmanagerr   r   r   r   r   r   socket	AF_UNSPECr   r   r   r   rM   r   r   r   r   r   r   r   r4   rG   rE   r   r   K   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	*4+  .	
  
2!5	'@ (.'7'7 % 	
    
04 	=	 	 
0		#@D*	, & %	
 
rG   r   )D
__future__r   r6   r   r   loggingr   r\   r   rg   collections.abcr   r   r   r   typesr   typingr	   r
   r   r   r   rY    r   compatr   r   r   r   r   r   r   r   r   r   r   r   r   r   __version____all__r   re   	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   rG   rE   <module>r     s8   "      
   B B  A A     " 
 T]@ 
 '

H
% 
		##!!!!%%


%%


!!!!!!!!  
 
 &&

 
 $$""[ [rG   