
    rp0j&                        % S SK r S SKrS SKrS SKJrJrJr  SSKJrJ	r	  Sr
 S SKr\" \R                  S5      r\R                   \R"                  -  r\R&                  \R(                  -  r\R,                  r\" \S5      (       a  \\R0                  -  r " S	 S
\5      r " S S\5      r " S S5      r\\\-     r\(       a  \O\r\\S'   g! \ a    SrSr Nf = f)    N)AnyFinalOptional   )AbstractResolverResolveResult)ThreadedResolverAsyncResolverDefaultResolvergetaddrinfoFAI_MASKc            
           \ rS rSrSrSS\R                  S-  SS4S jjrS\R                  4S\
S	\S
\R                  S\\   4S jjrSS jrSrg)r	      zThreaded resolver.

Uses an Executor for synchronous getaddrinfo() calls.
concurrent.futures.ThreadPoolExecutor is used by default.
Nloopreturnc                 J    U=(       d    [         R                  " 5       U l        g N)asyncioget_running_loop_loop)selfr   s     J/home/wildlama/miniconda3/lib/python3.13/site-packages/aiohttp/resolver.py__init__ThreadedResolver.__init__"   s    7W557
    r   hostportfamilyc                   #    U R                   R                  UU[        R                  U[        S9I S h  vN n/ nU H  u  p6pvnU[        R
                  :X  aY  [        U5      S:  a  M,  US   (       a6  U R                   R                  U[        5      I S h  vN u  p[        U
5      nO"US S u  pOU[        R                  :X  d   eUu  pUR                  [        UU	UUU[        S95        M     U$  N N]7f)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   resolveThreadedResolver.resolve%   s     jj,,##  - 
 
 &(,1(Fu(w<!# 1: 261G1G!32 ,(M u:D*1"1+'M4///&-#LL!&!/	' -2< O
&,s#   3C7C3A!C7C5AC75C7c                    #    g 7fr    r   s    r   closeThreadedResolver.closeQ   s     s   )r   r   r   N)__name__
__module____qualname____firstlineno____doc__r   AbstractEventLoopr   r'   r/   strr.   AddressFamilylistr   r8   r=   __static_attributes__r;   r   r   r	   r	      sf    8W66= 8 8 &'v~~**"*060D0D*	m	*Xr   r	   c                       \ rS rSrSr SS\R                  S-  S\S\SS4S jjrS	\	R                  4S
\S\S\	R                  S\\   4S jjrS	\	R                  4S
\S\S\S\\\\4      4S jjrSS jrSrg)r
   U   z9Use the `aiodns` package to make asynchronous DNS lookupsNr   argskwargsr   c                    [         c  [        S5      eU=(       d    [        R                  " 5       U l        S U l        U(       d  U(       a  [         R                  " U0 UD6U l        g [        5       U l        U R
                  R                  X R                  5      U l        [        U R                  S5      (       d  U R                  U l        g g )Nz Resolver requires aiodns librarygethostbyname)aiodnsRuntimeErrorr   r   r   _managerDNSResolver	_resolver_DNSResolverManagerget_resolverhasattr_resolve_with_queryr8   )r   r   rL   rM   s       r   r   AsyncResolver.__init__X   s     >ABB7W557
48 6#//@@DN+-33D**Et~~7733DL 8r   r   r   r   r   c                   #     U R                   R                  UU[        R                  U[        S9I S h  vN n/ nUR                   GH  nUR                  n	UR                  [        R                  :X  a  [        U	5      S:  aX  U	S   (       aN  U R                   R                  U	S   R!                  S5      /U	SS  Q7["        5      I S h  vN n
U
R$                  nOSU	S   R!                  S5      nU	S   nO9UR                  [        R&                  :X  d   eU	S   R!                  S5      nU	S   nUR)                  [+        UUUUR                  S[,        S95        GM     U(       d  [        S S5      eU$  GN@! [
        R                  R                   a<  n[        UR                  5      S:  a  UR                  S   OSn[        S U5      UeS nAff = f GN
7f)N)r   r    r   r!   r   DNS lookup failedr"   r   asciir$   )rT   r   r'   r(   r)   rP   errorDNSErrorr+   rL   OSErrornodesaddrr   r*   r,   decoder-   noder/   r0   r   r1   )r   r   r   r   respexcmsgr3   rc   r5   resultr6   s               r   r8   AsyncResolver.resolveq   s    
	.33''$ 4  D &(JJDGKyyG{{foo-w<!#
 $(>>#=#= **73BgabkB*$ F %+KKM$+AJ$5$5g$>M"1:D{{fnn444 '
 1 1' :qzLL!&;;/	' < $ 344Y ||$$ 	.!$SXX!!3#((1+9LC$$#-	.sE   G2E9 E6E9 BGGB)G6E9 9G7GGGc           
        #    U[         R                  :X  a  SOSn U R                  R                  X5      I S h  vN n/ nU H3  n	UR                  UU	R                  UUS[         R                  S.5        M5     U(       d  [        S S5      eU$  NT! [        R
                  R                   a<  n[        UR                  5      S:  a  UR                  S   OSn[        S U5      UeS nAff = f7f)NAAAAAr   r[   r   r$   )r'   r*   rT   queryrP   r]   r^   r+   rL   r_   r0   r   AI_NUMERICHOST)
r   r   r   r   qtyperd   re   rf   r3   rrs
             r   rX   !AsyncResolver._resolve_with_query   s      "(6??!:v	.--d::D
 BLL $GG $#22	  $ 344+ ;||$$ 	.!$SXX!!3#((1+9LC$$#-	.s8   C.B BB AC.B C+/7C&&C++C.c                    #    U R                   (       a4  U R                   R                  X R                  5        S U l         S U l        g U R                  b  U R                  R	                  5         S U l        g 7fr   )rR   release_resolverr   rT   cancelr<   s    r   r=   AsyncResolver.close   sT     ==MM**4< DM!DN>>%NN!!#s   A5A7)r   rR   rT   r8   r   r?   )r@   rA   rB   rC   rD   r   rE   r   r   r'   r/   rF   r.   rG   rH   r   r8   dictrX   r=   rI   r;   r   r   r
   r
   U   s    C 264''$.4 4 	4
 
44 &'v~~00"0060D0D0	m	0f &'fnn"03	d38n	:
r   r
   c                      ^  \ rS rSr% SrSr\S    \S'   SU 4S jjrSS jr	SS	S
\
R                  SS4S jrSS	S
\
R                  SS4S jrSrU =r$ )rU      zManager for aiodns.DNSResolver objects.

This class manages shared aiodns.DNSResolver instances
with no custom arguments across different event loops.
N	_instancer   c                    > U R                   c.  [        TU ]	  U 5      U l         U R                   R                  5         U R                   $ r   )rx   super__new___init)cls	__class__s    r   r{   _DNSResolverManager.__new__   s7    == !GOC0CMMM!}}r   c                 8    [         R                  " 5       U l        g r   )weakrefWeakKeyDictionary
_loop_datar<   s    r   r|   _DNSResolverManager._init   s    
 %%' 	r   clientr
   r   zaiodns.DNSResolverc                     X R                   ;  a:  [        R                  " US9n[        R                  " 5       nX44U R                   U'   OU R                   U   u  p4UR                  U5        U$ )zGet or create the shared aiodns.DNSResolver instance for a specific event loop.

Args:
    client: The AsyncResolver instance requesting the resolver.
           This is required to track resolver usage.
    loop: The event loop to use for the resolver.
)r   )r   rP   rS   r   WeakSetadd)r   r   r   resolver
client_sets        r   rV    _DNSResolverManager.get_resolver   sa     &))t4H9@9JJ%-$:DOOD! $(??4#8 H 	vr   c                     U R                   R                  U5      nUc  gUu  pEUR                  U5        U(       d!  Ub  UR                  5         U R                   U	 gg)zRelease the resolver for an AsyncResolver client when it's closed.

Args:
    client: The AsyncResolver instance to release.
    loop: The event loop the resolver was using.
N)r   getdiscardrs   )r   r   r   current_loop_datar   r   s         r   rr   $_DNSResolverManager.release_resolver   s\     !OO//5$06"#!% r   )r   )r   rU   r?   )r@   rA   rB   rC   rD   rx   r   __annotations__r{   r|   r   rE   rV   rr   rI   __classcell__)r~   s   @r   rU   rU      so     26Ix-.5(%-4-F-F	.&%&-4-F-F&	& &r   rU   r   ) r   r'   r   typingr   r   r   abcr   r   __all__rP   rW   rS   aiodns_defaultImportErrorrm   AI_NUMERICSERVr1   NI_NUMERICHOSTNI_NUMERICSERVr-   AI_ADDRCONFIGr)   r   r	   r
   rU   r    _DefaultTyper   r   r;   r   r   <module>r      s       ' ' 0
BV//?N --0E0EE **V-B-BB %%
69fnn$N7' 7tu$ up@& @&F M$4451?EU UE  FNs   C 
CC