
    hE                        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ej        Z eed          r
e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getaddrinfoFAI_MASKc            
           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     R/var/www/html/prod/cognitive/venv/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                     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$   sl      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.closeP   s      r   r   r   N)__name__
__module____qualname____doc__r   r   AbstractEventLoopr   r)   r1   strr0   AddressFamilyr   r   r:   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_queryr:   )r   r   rH   rI   s       r   r   zAsyncResolver.__init__W   s[     >ABBB+T<V<<t~77 	43DLLL	4 	4r   r   r   r   r    c                   K   	 | j                             ||t          j        |t                     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&   )rO   r   r)   r*   r+   rL   errorDNSErrorr-   rH   OSErrornodesaddrr    r,   r.   decoder/   noder1   r2   r   r3   )r   r   r   r    respexcmsgr5   r[   r7   resultr8   s               r   r:   zAsyncResolver.resolvef   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   49 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
   rS   r   r&   )r)   r,   rO   queryrL   rU   rV   r-   rH   rW   r2   r   AI_NUMERICHOST)
r   r   r   r    qtyper\   r]   r^   r5   rrs
             r   rQ   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   )rO   cancelr=   s    r   r>   zAsyncResolver.close   s       r   r   r?   )r@   rA   rB   rC   r   r   rD   r   r   r)   r1   rE   r0   rF   r   r   r:   r   rQ   r>   r<   r   r   r   r   T   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__rL   rP   rN   aiodns_defaultImportErrorrd   AI_NUMERICSERVr3   NI_NUMERICHOSTNI_NUMERICSERVr/   AI_ADDRCONFIGr+   r   r   r   _DefaultTyper   __annotations__r<   r   r   <module>rt      s     @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 0 0 0 0 0 0 0 0
BMMMWV/??NN   FNNN
 -0EE *V-BB %
769 %fn$N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	