
    $GgE                        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ej&                  ej(                  z  Zej,                  ej.                  z  Zej2                  Z eed      reej6                  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<   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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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     m/home/kushmeetdev/apache_webroot/langgraph_flaskproject/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               d {   }g }|D ]  \  }}}}}|t        j
                  k(  rTt        |      dk  r+|d   r7| j                   j                  |t               d {   \  }	}
t        |
      }n#|d d \  }	}n|t        j                  k(  sJ |\  }	}|j                  t        ||	|||t                      |S 7 7 `w)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$   s     jj,,##  - 
 
 &(,1 	(FAua(w<!# 1: 261G1G!32 ,(M5 u:D*1"1+'M4///&-#tLL!&!/	'	< O
&,s#   6C7C3AC7C5AC75C7c                    K   y wr    r   s    r   closezThreadedResolver.closeP   s	     s   r   r   N)__name__
__module____qualname____doc__r   r   AbstractEventLoopr   r)   r1   strr0   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__W   sL     >ABB++T<V<t~~733DL 8r   r   r   r   r    c                 v  K   	 | j                   j                  ||t        j                  |t               d {   }g }|j                  D ]  }|j                  }	|j                  }|t        j                  k(  r{t        |	      dkD  rS|	d   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 d      |S 7  # t
        j                  j                  $ r;}t        |j                        dk\  r|j                  d   nd}t        d |      |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.   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  D &(JJ 	DMQYYG[[F(w<!#
 $(>>#=#= **73BgabkB*$ F %+KKM$+AJ$5$5g$>M"1:D/// '
 1 1' :qzLL!&!/	)	> $ 344[ ||$$ 	.!$SXX!!3#((1+9LC$$#-	.sE   F95E EE BF9	F7
BF9E F496F//F44F9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 d      |S 7 M# t        j
                  j                  $ r;}t        |j                        dk\  r|j                  d   nd}t        d |      |d }~ww xY ww)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__$EE	.--dE::D
  
	BLL $GG $#22	
	 $ 344+ ;||$$ 	.!$SXX!!3#((1+9LC$$#-	.s9   C&B B	B  A	C&	B C#(6C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)   r1   rE   r0   rF   r   r   r:   r   rQ   r>   r<   r   r   r   r   T   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)   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
BV//?N --0E0EE **V-B-BB %%
69fnn$N7' 7tf $ f R E-)99:;1?EU Ua  FNs   C   	CC