wceUddlZddlZddlmZmZmZmZmZmZddl m Z ddl m Z dZ ddlZdZGdd e ZGd d e ZeeeefZereneZeed <y#e$rdZY7wxYw) N)AnyDictListOptionalTypeUnion)AbstractResolver)get_running_loop)ThreadedResolver AsyncResolverDefaultResolverFc eZdZdZd deej ddfdZdejfde de d e de e e effd Zd d Zy)r zThreaded resolver. Uses an Executor for synchronous getaddrinfo() calls. concurrent.futures.ThreadPoolExecutor is used by default. Nloopreturnc$t||_yN)r _loop)selfrs 2/usr/lib/python3/dist-packages/aiohttp/resolver.py__init__zThreadedResolver.__init__s%d+ rhostnameportfamilyc BK|jj||tj|tjd{}g}|D]\}}}}}|tj k(rat |dkr+|drDtj|tjtjz\} } t| }n#|dd\} }n|tjk(sJ|\} }|j|| |||tjtjzd|S7ڭw)N)typerflagsrhostrrprotor)r getaddrinfosocket SOCK_STREAM AI_ADDRCONFIGAF_INET6len getnameinfoNI_NUMERICHOSTNI_NUMERICSERVintAF_INETappendAI_NUMERICHOSTAI_NUMERICSERV) rrrrinfoshosts_r#addressr"_ports rresolvezThreadedResolver.resolves(jj,,  ##&& -  ,1  (FAua(wAB B%d+ ++TGGGt~~733DL8rrr"rrc K |jj||d{}g}|jD]9}|j||||dtjtjzd;|s td|S7]#tjj$r:}t |j dk\r|j dnd}t||d}~wwxYww)Nr DNS lookup failedrr!) rLrHrIerrorDNSErrorr)rEOSError addressesr/r%r0r1) rr"rrrespexcmsgr3r5s rr7zAsyncResolver.resolveas (55dFCCD~~ G LL $# $#22V5J5JJ   -. . )D||$$ (!$SXX!!3#((1+9LC#,C ' (s8CBBBACBC 5CCCc K|tjk(rd}nd} |jj||d{}g}|D]2} |j|| j||dtjd4|s td|S7L#tj j $r:}t|jdk\r|jdnd}t||d}~wwxYww)NAAAAAr rPrr!) r%r(rLqueryrIrQrRr)rErSr/r"r0) rr"rrqtyperUrVrWr3rrs rrNz!AsyncResolver._resolve_with_query{s V__ $EE (--dE::D  B LL $GG $#22   -. . +;||$$ (!$SXX!!3#((1+9LC#,C ' (s9C$B BB AC$B C!'5CC!!C$c@K|jjywr)rLcancelr:s rr;zAsyncResolver.closes srr<)r=r>r?r@rrArBrrr%r.rCr-rrr7rNr;r9rrr r NsC594w00144 4  4"&'fnn"03 d38n 6&'fnn"03 d38n @ rr r)rAr%typingrrrrrrabcr helpersr __all__rI ImportErroraiodns_defaultr r _DefaultTyper__annotations__r9rrrhs 99!% B 7 '7 tN $N bE-)99:; 1? EUUe FsAA%$A%