
    i                       S r SSKJr  SSKJr  SSKJrJr  SSKrS#S jr	\" SSS9 " S	 S
5      5       r
\" SSS9 " S S5      5       r\" SSS9 " S S5      5       r\" SSS9 " S S5      5       r\" SSS9 " S S5      5       r\" SSS9 " S S5      5       r\" SSS9 " S S5      5       r\" SSS9 " S S5      5       r\" SSS9 " S S5      5       r\" SSS9 " S S5      5       r\" SSS9 " S S5      5       r\" SSS9 " S S 5      5       r\\
\\\\\\\\\\\R,                  4   r\\\
   \\   \\\   \\   \\   \\\   \\   \\   \\\   4   rS$S! jrS%S" jrg)&z
Compatibility layer for pycares 5.x API.

This module provides result types compatible with pycares 4.x API
to maintain backward compatibility with existing code.
    )annotations)	dataclass)UnioncastNc                J     U R                  S5      $ ! [         a    U s $ f = f)zBDecode bytes as ASCII, return bytes if decode fails (pycares 4.x).ascii)decodeUnicodeDecodeError)datas    :/app/mltbenv/lib/python3.13/site-packages/aiodns/compat.py
_maybe_strr      s*    {{7## s    ""T)frozenslotsc                  .    \ rS rSr% SrS\S'   S\S'   Srg)	AresQueryAResult   zBA record result (compatible with pycares 4.x ares_query_a_result).strhostintttl N__name__
__module____qualname____firstlineno____doc____annotations____static_attributes__r       r   r   r      s    L
I	Hr    r   c                  .    \ rS rSr% SrS\S'   S\S'   Srg)	AresQueryAAAAResult    z(AAAA record result (pycares 4.x compat).r   r   r   r   r   Nr   r   r    r   r"   r"       s    2
I	Hr    r"   c                  .    \ rS rSr% SrS\S'   S\S'   Srg)	AresQueryCNAMEResult(   z)CNAME record result (pycares 4.x compat).r   cnamer   r   r   Nr   r   r    r   r%   r%   (   s    3J	Hr    r%   c                  8    \ rS rSr% SrS\S'   S\S'   S\S'   Srg	)
AresQueryMXResult0   z&MX record result (pycares 4.x compat).r   r   r   priorityr   r   Nr   r   r    r   r)   r)   0   s    0
IM	Hr    r)   c                  .    \ rS rSr% SrS\S'   S\S'   Srg)	AresQueryNSResult9   z&NS record result (pycares 4.x compat).r   r   r   r   r   Nr   r   r    r   r-   r-   9   s    0
I	Hr    r-   c                  .    \ rS rSr% SrS\S'   S\S'   Srg)	AresQueryTXTResultA   z'TXT record result (pycares 4.x compat).str | bytestextr   r   r   Nr   r   r    r   r0   r0   A   s    1
	Hr    r0   c                  j    \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   S\S'   Srg)AresQuerySOAResultI   z'SOA record result (pycares 4.x compat).r   nsname
hostmasterr   serialrefreshretryexpiresminttlr   r   Nr   r   r    r   r5   r5   I   s-    1KOKLJLK	Hr    r5   c                  L    \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S\S	'   S
rg)AresQuerySRVResultW   z'SRV record result (pycares 4.x compat).r   r   r   portr+   weightr   r   Nr   r   r    r   r?   r?   W   s    1
I
IMK	Hr    r?   c                  `    \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   Srg)AresQueryNAPTRResultb   z)NAPTR record result (pycares 4.x compat).r   order
preferencer   flagsserviceregexreplacementr   r   Nr   r   r    r   rD   rD   b   s)    3JOJLJ	Hr    rD   c                  B    \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S	rg
)AresQueryCAAResulto   z'CAA record result (pycares 4.x compat).r   criticalr   propertyvaluer   r   Nr   r   r    r   rM   rM   o   s    1MMJ	Hr    rM   c                  8    \ rS rSr% SrS\S'   S\S'   S\S'   S	rg
)AresQueryPTRResulty   z'PTR record result (pycares 4.x compat).r   namer   r   	list[str]aliasesr   Nr   r   r    r   rS   rS   y   s    1
I	Hr    rS   c                  8    \ rS rSr% SrS\S'   S\S'   S\S'   Srg	)
AresHostResult   z;Host result (compatible with pycares 4.x ares_host_result).r   rU   rV   rW   	addressesr   Nr   r   r    r   rY   rY      s    E
Ir    rY   c                H   U R                   nU R                  nU[        R                  :X  a8  [	        [        R
                  U R                  5      n[        UR                  US9$ U[        R                  :X  a8  [	        [        R                  U R                  5      n[        UR                  US9$ U[        R                  :X  a8  [	        [        R                  U R                  5      n[        UR                  US9$ U[        R                   :X  aC  [	        [        R"                  U R                  5      n[%        UR&                  UR(                  US9$ U[        R*                  :X  a8  [	        [        R,                  U R                  5      n[/        UR0                  US9$ U[        R2                  :X  aA  [	        [        R4                  U R                  5      n[7        [9        UR                  5      US9$ U[        R:                  :X  az  [	        [        R<                  U R                  5      n	[?        U	R@                  U	RB                  U	RD                  U	RF                  U	RH                  U	RJ                  U	RL                  US9$ U[        RN                  :X  aY  [	        [        RP                  U R                  5      n
[S        U
RT                  U
RV                  U
R(                  U
RX                  US9$ U[        RZ                  :X  ao  [	        [        R\                  U R                  5      n[_        UR`                  URb                  URd                  URf                  URh                  URj                  US9$ U[        Rl                  :X  aN  [	        [        Rn                  U R                  5      n[q        URr                  URt                  URv                  US9$ U[        Rx                  :X  a9  [	        [        Rz                  U R                  5      n[}        UR~                  U/ S	9$ U $ )
z=Convert a single DNS record to pycares 4.x compatible format.)r   r   )r'   r   )r   r+   r   )r3   r   )r7   r8   r9   r:   r;   r<   r=   r   )r   rA   r+   rB   r   )rF   rG   rH   rI   rJ   rK   r   )rO   rP   rQ   r   )rU   r   rW   )@r   typepycaresQUERY_TYPE_Ar   ARecordDatar   r   addrQUERY_TYPE_AAAAAAAARecordDatar"   QUERY_TYPE_CNAMECNAMERecordDatar%   r'   QUERY_TYPE_MXMXRecordDatar)   exchanger+   QUERY_TYPE_NSNSRecordDatar-   nsdnameQUERY_TYPE_TXTTXTRecordDatar0   r   QUERY_TYPE_SOASOARecordDatar5   mnamernamer9   r:   r;   expireminimumQUERY_TYPE_SRVSRVRecordDatar?   targetrA   rB   QUERY_TYPE_NAPTRNAPTRRecordDatarD   rF   rG   rH   rI   regexprK   QUERY_TYPE_CAACAARecordDatarM   rO   tagrQ   QUERY_TYPE_PTRPTRRecordDatarS   dname)recordr   record_typea_data	aaaa_data
cname_datamx_datans_datatxt_datasoa_datasrv_data
naptr_datacaa_dataptr_datas                 r   _convert_recordr      s   
**C++Kg***g))6;;7V[[c::g---//=	"	C@@g...'116;;?
#**:*:DDg+++w++V[[9 !!G,<,<#
 	
 g+++w++V[[9 goo3??g,,,--v{{;!z(--'@cJJg,,,--v{{;!>>~~??$$..OO##	
 		
 g,,,--v{{;!&&??
 	
 g...'116;;?
#""!,,""&&##"..
 	
 g,,,--v{{;!&&\\..	
 	
 g,,,--v{{;!x~~3KKMr    c                   U[         R                  :X  a&  U R                   Vs/ s H  n[        U5      PM     sn$ / nU R                   Hw  nUR                  nXA:w  a  M  [        U5      nU[         R
                  [         R                  [         R                  4;   a  [        [        U5      s  $ UR                  U5        My     U$ s  snf )z?Convert pycares 5.x DNSResult to pycares 4.x compatible format.)r^   QUERY_TYPE_ANYanswerr   r]   rd   rn   r}   r   QueryResultappend)
dns_resultqtyper   resultsr   	converteds         r   convert_resultr      s     &&&6@6G6GH6GF'6GHH%'G##kk #F+	 $$""""
 

 Y//y!% $( N1 Is   C)r   bytesreturnr2   )r   zpycares.DNSRecordr   ConvertedRecord)r   zpycares.DNSResultr   r   r   r   )r   
__future__r   dataclassesr   typingr   r   r^   r   r   r"   r%   r)   r-   r0   r5   r?   rD   rM   rS   rY   	DNSRecordr   listr   r   r   r   r    r   <module>r      sN   # !   $d#  $ $d#  $ $d#  $ $d#  $ $d#  $ $d#  $ $d#
 
 $
 $d#  $ $d#	 	 $	 $d#  $ $d#  $ $d#  $   								 EPr    