
    
FZj                    d   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l	m
Z
  eej                  ej                  ej                  h      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 d&d#Z!d'd$Z"y)(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castN   )errorc                H    	 | j                  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)datas    OC:\Users\Rodrigo\frota-trucks-cliente\python\Lib\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<   y)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
I	Hr   r   c                  &    e Zd ZU dZded<   ded<   y)AresQueryAAAAResultz(AAAA record result (pycares 4.x compat).r   r   r   r   Nr   r   r   r   r!   r!   *   s    2
I	Hr   r!   c                  &    e Zd ZU dZded<   ded<   y)AresQueryCNAMEResultz)CNAME record result (pycares 4.x compat).r   cnamer   r   Nr   r   r   r   r#   r#   2   s    3J	Hr   r#   c                  0    e Zd ZU dZded<   ded<   ded<   y)AresQueryMXResultz&MX record result (pycares 4.x compat).r   r   r   priorityr   Nr   r   r   r   r&   r&   :   s    0
IM	Hr   r&   c                  &    e Zd ZU dZded<   ded<   y)AresQueryNSResultz&NS record result (pycares 4.x compat).r   r   r   r   Nr   r   r   r   r)   r)   C   s    0
I	Hr   r)   c                  &    e Zd ZU dZded<   ded<   y)AresQueryTXTResultz'TXT record result (pycares 4.x compat).str | bytestextr   r   Nr   r   r   r   r+   r+   K   s    1
	Hr   r+   c                  b    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<   y)AresQuerySOAResultz'SOA record result (pycares 4.x compat).r   nsname
hostmasterr   serialrefreshretryexpiresminttlr   Nr   r   r   r   r/   r/   S   s-    1KOKLJLK	Hr   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<   y	)
AresQuerySRVResultz'SRV record result (pycares 4.x compat).r   r   r   portr'   weightr   Nr   r   r   r   r8   r8   a   s    1
I
IMK	Hr   r8   c                  X    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
<   y)AresQueryNAPTRResultz)NAPTR record result (pycares 4.x compat).r   order
preferencer   flagsserviceregexreplacementr   Nr   r   r   r   r<   r<   l   s)    3JOJLJ	Hr   r<   c                  :    e Zd ZU dZded<   ded<   ded<   ded<   y)	AresQueryCAAResultz'CAA record result (pycares 4.x compat).r   criticalr   propertyvaluer   Nr   r   r   r   rD   rD   y   s    1MMJ	Hr   rD   c                  0    e Zd ZU dZded<   ded<   ded<   y)	AresQueryPTRResultz'PTR record result (pycares 4.x compat).r   namer   r   	list[str]aliasesNr   r   r   r   rI   rI      s    1
I	Hr   rI   c                  0    e Zd ZU dZded<   ded<   ded<   y)AresHostResultz;Host result (compatible with pycares 4.x ares_host_result).r   rJ   rK   rL   	addressesNr   r   r   r   rN   rN      s    E
Ir   rN   c           
     t   | j                   }| j                  }|t        j                  k(  r;t	        t        j
                  | j                        }t        |j                  |      S |t        j                  k(  r;t	        t        j                  | j                        }t        |j                  |      S |t        j                  k(  r;t	        t        j                  | j                        }t        |j                  |      S |t        j                   k(  rFt	        t        j"                  | j                        }t%        |j&                  |j(                  |      S |t        j*                  k(  r;t	        t        j,                  | j                        }t/        |j0                  |      S |t        j2                  k(  rDt	        t        j4                  | j                        }t7        t9        |j                        |      S |t        j:                  k(  r}t	        t        j<                  | j                        }	t?        |	j@                  |	jB                  |	jD                  |	jF                  |	jH                  |	jJ                  |	jL                  |      S |t        jN                  k(  r\t	        t        jP                  | j                        }
tS        |
jT                  |
jV                  |
j(                  |
jX                  |      S |t        jZ                  k(  rrt	        t        j\                  | j                        }t_        |j`                  |jb                  |jd                  |jf                  |jh                  |jj                  |      S |t        jl                  k(  rQt	        t        jn                  | j                        }tq        |jr                  |jt                  |jv                  |      S |t        jx                  k(  r<t	        t        jz                  | 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)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                   |t         j                  k(  r#| j                  D cg c]  }t        |       c}S g }| j                  D ]J  }|j                  }||k7  rt        |      }|t
        v rt        t        |      c S |j                  |       L |sct        j                  t         j                  j                  t         j                  j                  t         j                  j                              |S c c}w )z?Convert pycares 5.x DNSResult to pycares 4.x compatible format.)rR   QUERY_TYPE_ANYanswerr   rQ   _SINGLE_RESULT_QTYPESr   QueryResultappendr   DNSErrorerrnoARES_ENODATAstrerror)
dns_resultqtypert   resultsru   	converteds         r   convert_resultr      s     &&&6@6G6GH6GF'6GHH%'G##kk %#F+	 //Y//y! $( nnMM&&MM""7==#=#=>
 	

 N= Is   C9)r   bytesreturnr,   )rt   zpycares.DNSRecordr   ConvertedRecord)r   zpycares.DNSResultr   r   r   r   )#r   
__future__r   dataclassesr   typingr   r   rR    r   	frozensetrX   rb   rq   r   r   r   r!   r#   r&   r)   r+   r/   r8   r<   rD   rI   rN   	DNSRecordr   listr   r   r   r   r   r   <module>r      s|   # !   !    $d#  $ $d#  $ $d#  $ $d#  $ $d#  $ $d#  $ $d#
 
 $
 $d#  $ $d#	 	 $	 $d#  $ $d#  $ $d#  $   								 EP"r   