
    f                     J   U d dl Z 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ej(                  ej*                  z  Zej.                  dk\  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<   y# e$ r dZdZY _w xY w)    N)AnyDictListOptionalTupleTypeUnion   )AbstractResolverResolveResult)ThreadedResolverAsyncResolverDefaultResolvergetaddrinfoF)   	   r   c            
           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y)r   zThreaded resolver.

    Uses an Executor for synchronous getaddrinfo() calls.
    concurrent.futures.ThreadPoolExecutor is used by default.
    Nloopreturnc                 >    |xs t        j                         | _        y N)asyncioget_running_loop_loop)selfr   s     O/opt/lhia/ganansol/python/venv/lib/python3.12/site-packages/aiohttp/resolver.py__init__zThreadedResolver.__init__   s    7W557
    r   hostportfamilyc                   K   | j                   j                  ||t        j                  |t        j                         d {   }g }|D ]  \  }}}}}|t        j
                  k(  rZt        |      dk  r+|d   r=t        r7| j                   j                  |t               d {   \  }	}
t        |
      }n#|d d \  }	}n|t        j                  k(  sJ |\  }	}|j                  t        ||	|||t                      |S 7 7 `w)N)typer!   flagsr      hostnamer   r    r!   protor$   )r   r   socketSOCK_STREAMAI_ADDRCONFIGAF_INET6len_SUPPORTS_SCOPE_IDgetnameinfo_NUMERIC_SOCKET_FLAGSintAF_INETappendr   )r   r   r    r!   infoshosts_r(   addressresolved_host_ports              r   resolvezThreadedResolver.resolve"   s     jj,,##&& - 
 
 &(,1 	(FAua(w<!# 1:"4 261G1G!62 ,(M5 u:D*1"1+'M4///&-#tLL!&!/	'	< O
&,s&   A DDA!D$D%ADDc                    K   y wr    r   s    r   closezThreadedResolver.closeN   s	     s   r   r   N)__name__
__module____qualname____doc__r   r   AbstractEventLoopr   r)   r2   strr1   AddressFamilyr   r   r:   r>   r<   r   r   r   r      sf    8Xg&?&?@ 8D 8 &'v~~**"*060D0D*	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y)r   z9Use the `aiodns` package to make asynchronous DNS lookupsNr   argskwargsr   c                     t         t        d      t        j                  |i || _        t	        | j                  d      s| j
                  | _        y y )Nz Resolver requires aiodns librarygethostbyname)aiodnsRuntimeErrorDNSResolver	_resolverhasattr_resolve_with_queryr:   )r   r   rH   rI   s       r   r   zAsyncResolver.__init__U   sL     >ABB++T<V<t~~733DL 8r   r   r   r    r!   c                   K   	 | j                   j                  ||t        j                  |t        j                         d {   }g }|j                  D ]  }|j                  }	|j                  }|t        j                  k(  rt        |	      dkD  rY|	d   rTt        rN| j                   j!                  |	d   j#                  d      g|	dd  t$               d {   }
|
j&                  }nH|	d   j#                  d      }|	d   }n.|t        j(                  k(  sJ |	d   j#                  d      }|	d   }|j+                  t-        ||||dt$                      |st        d      |S 7 '# t
        j                  j                  $ r:}t        |j                        dk\  r|j                  d   nd}t        |      |d }~ww xY w7 w)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.   r/   decoder0   noder2   r3   r   )r   r   r    r!   respexcmsgr5   r[   r7   resultr8   s               r   r:   zAsyncResolver.resolved   s    
	(33''** 4  D &(JJ 	DMQYYG[[F(w<!#
7I $(>>#=#= **73BgabkB-$ F %+KKM$+AJ$5$5g$>M"1:D/// '
 1 1' :qzLL!&!/	)	> -..[ ||$$ 	(!$SXX!!3#((1+9LC#,C'	(sH   G	?E- E*E- BG	GBG	*E- -G
5F??GG	c           
        K   |t         j                  k(  rd}nd}	 | j                  j                  ||       d {   }g }|D ]2  }	|j                  ||	j                  ||dt         j                  d       4 |st        d      |S 7 L# t        j
                  j                  $ r:}t        |j                        dk\  r|j                  d   nd}t        |      |d }~ww xY ww)NAAAAAr
   rS   r   r&   )r)   r,   rO   queryrL   rU   rV   r-   rH   rW   r3   r   AI_NUMERICHOST)
r   r   r    r!   qtyper\   r]   r^   r5   rrs
             r   rQ   z!AsyncResolver._resolve_with_query   s      V__$EE	(--dE::D
  
	BLL $GG $#22	
	 -..+ ;||$$ 	(!$SXX!!3#((1+9LC#,C'	(s9   C$B
 BB
  AC$B
 
C!'5CC!!C$c                 @   K   | j                   j                          y wr   )rO   cancelr=   s    r   r>   zAsyncResolver.close   s     s   r   r?   )r@   rA   rB   rC   r   r   rD   r   r   r)   r2   rE   r1   rF   r   r   r:   r   rQ   r>   r<   r   r   r   r   R   s    C 594w0014 4 	4
 
4  &'v~~11"1060D0D1	m	1h &'fnn"03	d38n	@ r   r   r   )r   r)   systypingr   r   r   r   r   r   r	   abcr   r   __all__rL   rP   rN   aiodns_defaultImportErrorrd   AI_NUMERICSERVr0   version_infor.   r   r   _DefaultTyper   __annotations__r<   r   r   <module>rs      s      
 @ @ @ 0
BV//?N --0E0EE %%2 7' 7tf $ f R E-)99:;1?EU U[  FNs   B 	B"!B"