
    Ng                     F   U d dl Z d dlZd dlmZmZmZmZmZmZm	Z	 ddl
mZmZ dZ	 d dlZ eej        d          Zn# e$ r dZdZY nw xY wej        ej        z  Zej        ej        z  Z G d d	e          Z G d
 de          Zee	eef                  ZereneZeed<   dS )    N)AnyDictListOptionalTupleTypeUnion   )AbstractResolverResolveResult)ThreadedResolverAsyncResolverDefaultResolvergetaddrinfoFc            
           e Zd ZdZddeej                 ddfdZdej	        fde
ded	ej        dee         fd
ZddZdS )r   zThreaded resolver.

    Uses an Executor for synchronous getaddrinfo() calls.
    concurrent.futures.ThreadPoolExecutor is used by default.
    Nloopreturnc                 :    |pt          j                    | _        d S N)asyncioget_running_loop_loop)selfr   s     L/var/www/html/ai-engine/env/lib/python3.11/site-packages/aiohttp/resolver.py__init__zThreadedResolver.__init__   s    7W577


    r   hostportfamilyc                   K   | j                             ||t          j        |t          j                   d {V }g }|D ]\  }}}}}|t          j        k    rct          |          dk     r,|d         r9| j                             |t                     d {V \  }	}
t          |
          }n%|d d         \  }	}n|t          j
        k    sJ |\  }	}|                    t          ||	|||t                               |S )N)typer   flags      hostnamer   r   r   protor"   )r   r   socketSOCK_STREAMAI_ADDRCONFIGAF_INET6lengetnameinfo_NAME_SOCKET_FLAGSintAF_INETappendr   _NUMERIC_SOCKET_FLAGS)r   r   r   r   infoshosts_r'   addressresolved_host_ports              r   resolvezThreadedResolver.resolve!   so      j,,#& - 
 
 
 
 
 
 
 
 &(,1 	 	(FAua((w<<!## 1: 	6 261G1G!32 2 , , , , , ,(M5 u::DD*1"1"+'M44////&-#tLL!&!/  	 	 	 	 r   c                 
   K   d S r    r   s    r   closezThreadedResolver.closeM   s      r   r   r   N)__name__
__module____qualname____doc__r   r   AbstractEventLoopr   r(   r0   strr/   AddressFamilyr   r   r9   r=   r;   r   r   r   r      s         8 8Xg&?@ 8D 8 8 8 8 &'v~* **"*060D*	m	* * * *X     r   r   c                       e Zd ZdZ	 ddeej                 dededdfdZde	j
        fd	ed
ede	j        dee         fdZde	j
        fd	ed
ededeeeef                  fdZddZdS )r   z9Use the `aiodns` package to make asynchronous DNS lookupsNr   argskwargsr   c                     t           t          d          t          j        |i || _        t	          | j        d          s| j        | _        d S d S )Nz Resolver requires aiodns librarygethostbyname)aiodnsRuntimeErrorDNSResolver	_resolverhasattr_resolve_with_queryr9   )r   r   rG   rH   s       r   r   zAsyncResolver.__init__T   s[     >ABBB+T<V<<t~77 	43DLLL	4 	4r   r   r   r   r   c                   K   	 | j                             ||t          j        |t          j                   d {V }nT# t
          j        j        $ r=}t          |j	                  dk    r|j	        d         nd}t          d |          |d }~ww xY wg }|j        D ]}|j        }	|j        }|t          j        k    rt          |	          dk    r[|	d         rS| j                             |	d                             d          g|	dd          R t"                     d {V }
|
j        }nY|	d                             d          }|	d         }n5|t          j        k    sJ |	d                             d          }|	d         }|                    t+          ||||dt,                               |st          d d          |S )N)r   r!   r   r"   r
   DNS lookup failedr#   r   asciir%   )rN   r   r(   r)   r*   rK   errorDNSErrorr,   rG   OSErrornodesaddrr   r+   r-   decoder.   noder0   r1   r   r2   )r   r   r   r   respexcmsgr4   rZ   r6   resultr7   s               r   r9   zAsyncResolver.resolvec   s$     
	.33'* 4        DD |$ 	. 	. 	.!$SX!!3!3#(1++9LC$$$#-	. &(J 	 	DMQYG[F((w<<!##
# $(>#=#= **733BgabbkBB*$ $      F %+KMM$+AJ$5$5g$>$>M"1:DD//// '
 1 1' : :qzLL!&!/  	 	 	 	  	5$ 3444s   9> B8B

Bc           
        K   |t           j        k    rd}nd}	 | j                            ||           d {V }nT# t          j        j        $ r=}t          |j                  dk    r|j        d         nd}t          d |          |d }~ww xY wg }|D ]-}	|
                    ||	j        ||dt           j        d           .|st          d d          |S )NAAAAAr
   rR   r   r%   )r(   r+   rN   queryrK   rT   rU   r,   rG   rV   r1   r   AI_NUMERICHOST)
r   r   r   r   qtyper[   r\   r]   r4   rrs
             r   rP   z!AsyncResolver._resolve_with_query   s      V_$$EEE	.--dE::::::::DD|$ 	. 	. 	.!$SX!!3!3#(1++9LC$$$#-	.  
	 
	BLL $G $#2 	 	 	 	  	5$ 3444s   !; B8BBc                 <   K   | j                                          d S r   )rN   cancelr<   s    r   r=   zAsyncResolver.close   s       r   r   r>   )r?   r@   rA   rB   r   r   rC   r   r   r(   r0   rD   r/   rE   r   r   r9   r   rP   r=   r;   r   r   r   r   Q   s       CC 594 4w014 4 	4
 
4 4 4 4  &'v~1 11"1060D1	m	1 1 1 1h &'fn "03	d38n	   @           r   r   r   )r   r(   typingr   r   r   r   r   r   r	   abcr   r   __all__rK   rO   rM   aiodns_defaultImportErrorrc   AI_NUMERICSERVr2   NI_NUMERICHOSTNI_NUMERICSERVr.   r   r   _DefaultTyper   __annotations__r;   r   r   <module>rr      st     @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 0 0 0 0 0 0 0 0
BMMMWV/??NN   FNNN
 -0EE *V-BB 7 7 7 7 7' 7 7 7tf  f  f  f  f $ f  f  f R E-)99:;1? UEU U U U U Us   = 	A	A	