
    g                     V   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 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 iw xY w)    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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     E/var/www/openai/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(  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!&!/	' -2< O
&,s&   A DC=ADC?AD?Dc                    K   y wr    r   s    r   closezThreadedResolver.closeM   s	     s   r   r   N)__name__
__module____qualname____doc__r   r   AbstractEventLoopr   r(   r0   strr/   AddressFamilyr   r   r9   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_queryr9   )r   r   rG   rH   s       r   r   zAsyncResolver.__init__T   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(  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%   )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  D &(JJDMQYYG[[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$$#-	.sH   G?E& E#E& BGGBG#E& &F>6F99F>>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 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
   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__$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   )rN   cancelr<   s    r   r=   zAsyncResolver.close   s     s   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 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__rK   rO   rM   aiodns_defaultImportErrorrc   AI_NUMERICSERVr2   NI_NUMERICHOSTNI_NUMERICSERVr.   r   r   _DefaultTyper   __annotations__r;   r   r   <module>rr      s      @ @ @ 0
BV//?N --0E0EE **V-B-BB 7' 7tf $ f R E-)99:;1?EU U[  FNs   B 	B('B(