
    tni                       d Z ddlmZ ddlmZ ddlmZmZ ddlZd/d
Z	 edd           G d d                      Z
 edd           G d d                      Z edd           G d d                      Z edd           G d d                      Z edd           G d d                      Z edd           G d d                      Z edd           G d d                      Z edd           G d d                      Z edd           G d d                      Z edd           G d d                       Z edd           G d! d"                      Z edd           G d# d$                      Zee
eeeeeeeeeeej        f         Zeee
         ee         eee         ee         ee         eee         ee         ee         eee         f         Zd0d(Zd1d.ZdS )2z
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castNdatabytesreturnstr | bytesc                R    	 |                      d          S # t          $ r | cY S w xY w)zBDecode bytes as ASCII, return bytes if decode fails (pycares 4.x).ascii)decodeUnicodeDecodeError)r   s    J/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/aiodns/compat.py
_maybe_strr      s=    {{7###   s    &&T)frozenslotsc                  (    e Zd ZU dZded<   ded<   dS )AresQueryAResultzBA record result (compatible with pycares 4.x ares_query_a_result).strhostintttlN__name__
__module____qualname____doc____annotations__     r   r   r      s(         LLIIIHHHHHr    r   c                  (    e Zd ZU dZded<   ded<   dS )AresQueryAAAAResultz(AAAA record result (pycares 4.x compat).r   r   r   r   Nr   r   r    r   r"   r"       s(         22IIIHHHHHr    r"   c                  (    e Zd ZU dZded<   ded<   dS )AresQueryCNAMEResultz)CNAME record result (pycares 4.x compat).r   cnamer   r   Nr   r   r    r   r$   r$   (   s(         33JJJHHHHHr    r$   c                  2    e Zd ZU dZded<   ded<   ded<   dS )AresQueryMXResultz&MX record result (pycares 4.x compat).r   r   r   priorityr   Nr   r   r    r   r'   r'   0   s1         00IIIMMMHHHHHr    r'   c                  (    e Zd ZU dZded<   ded<   dS )AresQueryNSResultz&NS record result (pycares 4.x compat).r   r   r   r   Nr   r   r    r   r*   r*   9   s(         00IIIHHHHHr    r*   c                  (    e Zd ZU dZded<   ded<   dS )AresQueryTXTResultz'TXT record result (pycares 4.x compat).r
   textr   r   Nr   r   r    r   r,   r,   A   s+         11HHHHHr    r,   c                  d    e Zd ZU dZded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   dS )AresQuerySOAResultz'SOA record result (pycares 4.x compat).r   nsname
hostmasterr   serialrefreshretryexpiresminttlr   Nr   r   r    r   r/   r/   I   s^         11KKKOOOKKKLLLJJJLLLKKKHHHHHr    r/   c                  F    e Zd ZU dZded<   ded<   ded<   ded<   ded<   d	S )
AresQuerySRVResultz'SRV record result (pycares 4.x compat).r   r   r   portr(   weightr   Nr   r   r    r   r8   r8   W   sC         11IIIIIIMMMKKKHHHHHr    r8   c                  Z    e Zd ZU dZded<   ded<   ded<   ded<   ded<   ded	<   ded
<   dS )AresQueryNAPTRResultz)NAPTR record result (pycares 4.x compat).r   order
preferencer   flagsserviceregexreplacementr   Nr   r   r    r   r<   r<   b   sX         33JJJOOOJJJLLLJJJHHHHHr    r<   c                  <    e Zd ZU dZded<   ded<   ded<   ded<   dS )	AresQueryCAAResultz'CAA record result (pycares 4.x compat).r   criticalr   propertyvaluer   Nr   r   r    r   rD   rD   o   s:         11MMMMMMJJJHHHHHr    rD   c                  2    e Zd ZU dZded<   ded<   ded<   dS )	AresQueryPTRResultz'PTR record result (pycares 4.x compat).r   namer   r   	list[str]aliasesNr   r   r    r   rI   rI   y   s6         11IIIHHHr    rI   c                  2    e Zd ZU dZded<   ded<   ded<   dS )AresHostResultz;Host result (compatible with pycares 4.x ares_host_result).r   rJ   rK   rL   	addressesNr   r   r    r   rN   rN      s9         EEIIIr    rN   recordpycares.DNSRecordConvertedRecordc           
        | j         }| j        }|t          j        k    r5t	          t          j        | j                  }t          |j        |          S |t          j	        k    r5t	          t          j
        | j                  }t          |j        |          S |t          j        k    r5t	          t          j        | j                  }t          |j        |          S |t          j        k    r;t	          t          j        | j                  }t%          |j        |j        |          S |t          j        k    r5t	          t          j        | j                  }t/          |j        |          S |t          j        k    rBt	          t          j        | j                  }t7          t9          |j                  |          S |t          j        k    rYt	          t          j        | j                  }	t?          |	j         |	j!        |	j"        |	j#        |	j$        |	j%        |	j&        |          S |t          j'        k    rGt	          t          j(        | j                  }
tS          |
j*        |
j+        |
j        |
j,        |          S |t          j-        k    rSt	          t          j.        | j                  }t_          |j0        |j1        |j2        |j3        |j4        |j5        |          S |t          j6        k    rAt	          t          j7        | j                  }tq          |j9        |j:        |j;        |          S |t          j<        k    r6t	          t          j=        | j                  }t}          |j?        |g 	          S | S )
z=Convert a single DNS record to pycares 4.x compatible format.)r   r   )r%   r   )r   r(   r   )r-   r   )r0   r1   r2   r3   r4   r5   r6   r   )r   r9   r(   r:   r   )r=   r>   r?   r@   rA   rB   r   )rE   rF   rG   r   )rJ   r   rL   )@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TXTRecordDatar,   r   QUERY_TYPE_SOASOARecordDatar/   mnamernamer2   r3   r4   expireminimumQUERY_TYPE_SRVSRVRecordDatar8   targetr9   r:   QUERY_TYPE_NAPTRNAPTRRecordDatar<   r=   r>   r?   r@   regexprB   QUERY_TYPE_CAACAARecordDatarD   rE   tagrG   QUERY_TYPE_PTRPTRRecordDatarI   dname)rP   r   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7V[c::::g---/==	"	C@@@@g...'16;??
#**:DDDDg+++w+V[99 !G,<#
 
 
 	
 g+++w+V[99 go3????g,,,-v{;;!z(-'@'@cJJJJg,,,-v{;;!>~?$.O#	
 	
 	
 		
 g,,,-v{;;!&?
 
 
 	
 g...'16;??
#"!,"&#".
 
 
 	
 g,,,-v{;;!&\.	
 
 
 	
 g,,,-v{;;!x~3KKKKMr    
dns_resultpycares.DNSResultqtyper   QueryResultc                <   |t           j        k    rd | j        D             S g }| j        D ]p}|j        }||k    rt	          |          }|t           j        t           j        t           j        fv rt          t          |          c S |
                    |           q|S )z?Convert pycares 5.x DNSResult to pycares 4.x compatible format.c                ,    g | ]}t          |          S r   )r   ).0rP   s     r   
<listcomp>z"convert_result.<locals>.<listcomp>   s     HHHF''HHHr    )rU   QUERY_TYPE_ANYanswerrT   r   r[   re   rt   r   r   append)r   r   resultsrP   rw   	converteds         r   convert_resultr      s     &&&HHj6GHHHH%'G# " "k %#F++	 $""
 
 

 Y/////y!!!!Nr    )r   r   r	   r
   )rP   rQ   r	   rR   )r   r   r   r   r	   r   )r   
__future__r   dataclassesr   typingr   r   rU   r   r   r"   r$   r'   r*   r,   r/   r8   r<   rD   rI   rN   	DNSRecordrR   listr   r   r   r   r    r   <module>r      ss    # " " " " " ! ! ! ! ! !             $d###       $# $d###       $# $d###       $# $d###       $# $d###       $# $d###       $# $d###
 
 
 
 
 
 
 $#
 $d###       $# $d###	 	 	 	 	 	 	 $#	 $d###       $# $d###       $# $d###       $#   								 E E E EP     r    