wcebddlZddlZddlZddlZddlZddlZddlmZmZddl m Z ddl m Z ddl mZddlmZmZddlmZddlmZdd lmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%ddl&Z&d d l'm(Z(m)Z)d d l*m+Z+d d l,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6d dl7m8Z8d dl9m:Z:m;Z;mZ>m?Z?m@Z@mAZAd dlBmCZCd dlDmEZE ddlFZFeFjZGdZJerd dlKmLZLd dl9mMZMd dlNmOZOGddZPGddZQGddZRGddZSGdd ZTGd!d"eSZUGd#d$eSZVGd%d&eSZWy#eH$rdZFeIZGYuwxYw)'N) defaultdictdeque)suppress) HTTPStatus) SimpleCookie)cycleislice) monotonic) TracebackType) TYPE_CHECKINGAny AwaitableCallable DefaultDictDictIteratorListLiteralOptionalSetTupleTypeUnioncast)hdrshelpers)AbstractResolver) ClientConnectionErrorClientConnectorCertificateErrorClientConnectorErrorClientConnectorSSLErrorClientHttpProxyErrorClientProxyConnectionErrorServerFingerprintMismatchUnixClientConnectorError cert_errors ssl_errors)ResponseHandler) ClientRequest Fingerprint_merge_ssl_params) ceil_timeoutget_running_loop is_ip_addressnoopsentinel)EventResultOrError)DefaultResolver) BaseConnector TCPConnector UnixConnectorNamedPipeConnector) ClientTimeout) ConnectionKey)Tracec:eZdZdZdeeddfdZdefdZddZy) _DeprecationWaiter _awaitable_awaited awaitablereturnNc ||_d|_yNFr=)selfr@s 3/usr/lib/python3/dist-packages/aiohttp/connector.py__init__z_DeprecationWaiter.__init__Ks# cDd|_|jjSNT)r?r> __await__rDs rErJz_DeprecationWaiter.__await__Os ((**rGcR|jstjdtyy)NzDConnector.close() is a coroutine, please use await connector.close())r?warningswarnDeprecationWarningrKs rE__del__z_DeprecationWaiter.__del__Ss"}} MM5" rGrAN) __name__ __module__ __qualname__ __slots__rr rFrJrPrGrEr<r<Hs/*I)C.T+3+rGr<c 4eZdZdZdZdddddedejddf d Zde fd Z e fd e ddfd Z ded fdZedejfdZedeej&fdZedeefdZdegdfddfdZddZddZddZedefdZy) ConnectionN connectorr4keyr9protocollooprAc||_||_||_||_g|_|j r.t jtjd|_ yy)Nr) _key _connector_loop _protocol _callbacks get_debug traceback extract_stacksys _getframe_source_traceback)rDrYrZr[r\s rErFzConnection.__init__asR # 4<46 >> %.%<%)r^rKs rE__repr__zConnection.__repr__qsTYYKq))rG _warningscl|jd|i}|jd|tfi||jj ry|j j |j|jd|dd}|j|j|d<|jj|yy)NsourcezUnclosed connection T should_closezUnclosed connection)client_connectionmessagesource_traceback) rarNResourceWarningr` is_closedr__releaser^rhcall_exception_handler)rDrlkwargscontexts rErPzConnection.__del__ts >> %%F INN1$:O Vv Vzz##% OO $ $TYYT $ R,0=RSG%%1.2.D.D*+ JJ - -g 6 &rGTcy)z9Force subclasses to not be falsy, to make checks simpler.TrVrKs rE__bool__zConnection.__bool__srGcRtjdtd|jS)Nz%connector.loop property is deprecated) stacklevel)rMrNrOr`rKs rEr\zConnection.loops# 35GTU zzrGcH|jy|jjSN)ra transportrKs rErzConnection.transports >> !~~'''rGc|jSr)rarKs rEr[zConnection.protocols ~~rGcallbackc@||jj|yyr)rbappend)rDrs rE add_callbackzConnection.add_callbacks   OO " "8 , rGc|jddgc}|_|D]!}tt5|ddd#y#1swY.xYwr)rbr Exception)rD callbackscbs rE_notify_releasezConnection._notify_releasesO%)__Q%7" 4? B)$      s ?A c|j|j:|jj|j|jdd|_yy)NTro)rrar_rvr^rKs rEclosezConnection.closesE  >> % OO $ $TYYT $ R!DN &rGc|j|jN|jj|j|j|jj d|_yy)Nro)rrar_rvr^rprKs rEreleasezConnection.releasesV  >> % OO $ $ 4>>8S8S % "DN &rGcX|jduxs|jj Sr)ra is_connectedrKs rEclosedzConnection.closeds&~~%JT^^-H-H-J)JJrGrQ)rRrSrTrh _transportr)asyncioAbstractEventLooprFstrrkrMr rPrr{propertyr\r Transportrr[rrrrrboolrrVrGrErXrX\s2JO"OO" O '' O  O *#*(0 7 7D 7'$-g// (8G$5$56(( (?3-Xb$h%7-D-""KKKrGrXceZdZdZddZy)_TransportPlaceholderz.placeholder for BaseConnector.connect functionNcyrrVrKs rErz_TransportPlaceholder.closes rGrQ)rRrSrT__doc__rrVrGrErrs 8 rGrceZdZdZdZdZdZeddddddd d ee de fd e d e d e de de ejde ddfdZefdeddfdZd9dZdeddfdZd9dZ d:de eede ede eddfdZede fdZede fdZede fdZd;d Zd!d"d#e ddfd$Z!d;d%Z"de#dfd&Z$d;d'Z%ede fd(Z&d!d"de fd)Z'd*e(d+e)d,d-d.de*fd/Z+d!d"de e fd0Z,d;d1Z-d!d"d2e ddfd3Z.dd4d!d"d5e d6e ddfd7Z/d*e(d+e)d,d-d.de fd8Z0y)> %.%<%t j |d|j|j|j|_yy)z~Double confirmation for transport close. Some broken ssl servers may leave socket open without proper close. Nrr) rrrabortrrr_cleanup_closed_periodr`r)rDrs rErzBaseConnector._cleanup_closeds  & &  ' ' . . 088 "I$! "+-',,*1*@*@!++ '+'C'C +D '-rGcH|jttS)zClose all opened transports.)rr<r0rKs rErzBaseConnector.closes !$&))rGc|jryd|_ |jjrx |jj |j j |j j d|_|jj d|_ y|jr|jj|jr|jj|jjD]}|D]\}}|j|j D]}|j|jD]}||j |jj |j j |j j d|_|jj d|_ y#|jj |j j |j j d|_|jj d|_ wxYwrI)rr`rurclearrrrrrrrrr)rDdatart0rs rErzBaseConnector._closes <<   /zz##%, KK    NN " MM   !#'D  + + 1 1 3*.D '1##$$++-**++224 **, "!%"IE2KKM" "   "<< & (OO% & KK    NN " MM   !#'D  + + 1 1 3*.D ' KK    NN " MM   !#'D  + + 1 1 3*.D 'sG*(B7G* G**A8I"c|jS)z;Is connector closed. A readonly property. )rrKs rErzBaseConnector.closeds ||rGc|jrz|jt|jz }|jrJ|dkDrE||jvr7|jj |}|J|jt|z }|S|jrG||jvr9|jj |}|J|jt|z }|Sd}|S)z Return number of available connections. The limit, limit_per_host and the connection key are taken into account. If it returns less than 1 means that there are no connections available. rr)rlenrrrget)rDrZ availableacquireds rE_available_connectionsz$BaseConnector._available_connectionss ;; c$..&99I$$M42222266s;+++ 003x=@  ! !cT-D-D&D..2237H' '',,s8}SDMM1****,C MM#  % %c *#?E<<>>>? + $--' c0B c*#=E::<<<= # =0E0GHK NN  { +  # #C ( , ,[ 9#?E<<>>>? C"55c67KK<<KKM/0FGG ||NN))+600kB#=E::<<<="?4I4KL "";/'',00=# 5! $((/$UDJJ77A? $--' c*11#6& $--' c0B c*1C' =?L! ||NN))+600kB((*  =>yI  KK, L!OO  ::d&C&C33::9E%* KK 5  sD## D/.D/cV|jsyt|jj}tj||D]_}|j |dkr|j|}|s*|j }|js|jdy|r6ay)z Iterates over all waiters until one to be released is found. The one to be released is not finished and belongs to a host that has available connections. Nr) rlistkeysrandomshufflerpopleftdone set_result)rDqueuesrZwaiterswaiters rErzBaseConnector._release_waiter`s}} dmm((*+v C**3/!3mmC(G *{{}%%d+  rGrc|jry |jj||j|||j y#t $rYywxYwr)rrrrrr )rDrZrs rE_release_acquiredzBaseConnector._release_acquiredzsW <<  # NN ! !% (  ( (e 4  "    s-A AAror[rpcd|jry|j|||jrd}|s |jrR|j}|j |j r)|js|jj|yyy|jj|}|gx}|j|<|j||jjf|j>tj |d|j"|j|j$|_yy)NTrr)rrrrprrrrrrrrr`rrrrrr)rDrZr[rprrs rErvzBaseConnector._releases <<  sH-   L 800 **I NN zz$"?"?//66yA#@zKKOOC(E}+-- C( LL(DJJOO$56 7##+'.'='=++JJ+/+G+G ($,rGcKtwr)NotImplementedError)rDrrrs rErz BaseConnector._create_connections"##s )rAr4)NNNrQ)1rRrSrTrrrhrr1robjectrrintrrrrFrMr rPrrrrrr rrrrrrr)rrrrrrrr*rrXr rrrrvrrVrGrEr4r4s G! 9A!&+48()5!u!455 5  5  5 $5w0015!&5 5n(033D3*ST 37-115 4 ./M* .   !T!!s$$$+Z -" -)8 -  -.*y* #/J/cBQ8 Q8*.w-Q8BQQ8 Q8fH_,E>4 #_ #_ #QU #(# # #"#  #  #J$ $*.w-$BQ$ $rGr4ceZdZddeeddfdZdedefdZde e e fde e e efddfd Zde e e fddfd Zdd Zde e e fde e e effd Zde e e fdefd Zy)_DNSCacheTableNttlrAc.i|_i|_||_yr) _addrs_rr _timestamps_ttl)rDr$s rErFz_DNSCacheTable.__init__sVX9; rGhostc||jvSr)r&)rDr)s rE __contains__z_DNSCacheTable.__contains__st~~%%rGrZaddrsct|t|f|j|<|jt |j |<yyr)rrr&r(r r')rDrZr,s rErz_DNSCacheTable.adds>$U|SZ8s 99 $-KD  S ! !rGc|jj|d|j|jj|dyyr)r&rr(r'rDrZs rErz_DNSCacheTable.removes; 3% 99    d + !rGcl|jj|jjyr)r&rr'rKs rErz_DNSCacheTable.clears$   rGcj|j|\}}tt||}t||Sr)r&rr next)rDrZr\lengthr,s rE next_addrsz_DNSCacheTable.next_addrss1~~c* fVD&)* T  rGcj|jy|j||jztkSrC)r(r'r r/s rEexpiredz_DNSCacheTable.expireds0 99 $tyy09;>>rGrrQ)rRrSrTrrrFr rr+rrr!rrr rrrr4r6rVrGrEr#r#sHUOt &&D&0uS#X0tDcN/C00 ,%S/,d, !eCHo$tCH~2F?5c??t?rGr#c!eZdZdZdddddddddeddddddd d ed eed ed eededee de de de e fdee eefdeede deefdededededeej&def fdZdedffd ZedefdZedefdZ d;deed eeddfd!Z dd4Z.defd5Z/d6ejVd%eddfd7Z0e(fd6ejVd%ed&d'd0e)e*de ejbe ff d8Z2e(d.d%ed"ed#d&d'd0e)e*de ejVe ff d9Z3d%ed"ed#d&d'de ejbe ffd:Z4xZ5S)?r5a/TCP connector. verify_ssl - Set to True to check ssl certifications. fingerprint - Pass the binary sha256 digest of the expected certificate in DER format to verify that the certificate the server presents matches. See also https://en.wikipedia.org/wiki/Transport_Layer_Security#Certificate_pinning resolver - Enable DNS lookups and use this resolver use_dns_cache - Use memory cache for DNS lookups. ttl_dns_cache - Max seconds having cached a DNS entry, None forever. family - socket address family local_addr - local tuple of (host, port) to bind socket to keepalive_timeout - (optional) Keep-alive timeout. force_close - Set to True to force close and do reconnect after each request (and between redirects). limit - The total number of simultaneous connections. limit_per_host - Number of simultaneous connections to one host. enable_cleanup_closed - Enables clean-up closed ssl transports. Disabled by default. loop - Optional event loop. TN rFrr) verify_ssl fingerprint use_dns_cache ttl_dns_cachefamily ssl_contextssl local_addrresolverrrrrrr\rr9r:r;r<r=r>r?r@rArrrrrr\rc t|| | | | |||t|||||_| t |j } | |_||_t||_ i|_ ||_ ||_ y)Nrr)r$) superrFr,_sslr3r` _resolver_use_dns_cacher# _cached_hosts_throttle_dns_events_family _local_addr)rDr9r:r;r<r=r>r?r@rArrrrrr\r __class__s rErFzTCPConnector.__init__s( /#)"7#9  &c:{KP  &DJJ7H!++ >OQ! %rGrAc~|jjD]}|jt|S)zClose all ongoing DNS calls.)rHrrrCr)rDevrKs rErzTCPConnector.closes8++224 B IIK w}rGc|jS)zSocket family like AF_INET.)rIrKs rEr=zTCPConnector.family$s||rGc|jS)z%True if local DNS caching is enabled.)rFrKs rEr;zTCPConnector.use_dns_cache)s"""rGr)portc| ||jj||fy|| td|jjy)z8Remove specified host/port or clear all dns local cache.Nz5either both host and port or none of them are allowed)rGrrr)rDr)rPs rEclear_dns_cachezTCPConnector.clear_dns_cache.sP   0    % %tTl 3  !1WX X    $ $ &rGrr:cKt|r||||jdddgS|jsv|r |D]}|j|d{|jj |||jd{}|r |D]}|j |d{|S||f}||jvrZ|jj|s?|jj|}|r |D]}|j|d{|S||jvrK|j|}|r |D]}|j|d{|jd{nt|j|j|<|r |D]}|j|d{ |r |D]}|j|d{|jj |||jd{} |r |D]}|j |d{|jj!|| |j|j# |jj'||jj|S7I7777V7?7777#t$$r%} |j|j#| d} ~ wwxYw#|jj'|wxYww)Nr)hostnamer)rPr=rflags)r=)r)r/rIrFsend_dns_resolvehost_startrEresolvesend_dns_resolvehost_endrGr6r4send_dns_cache_hitrHwaitr2r`send_dns_cache_missrrrr) rDr)rPrrresrZresulteventr,r s rE _resolve_hostzTCPConnector._resolve_host9s  !%  "ll   ""#AE::4@@@A..tT$,,.OOC#?E88>>>?JTl 4%% %0B0B0J0J30O''2237F#9E2248889M $++ +--c2E#9E2248889**,  .@ -KD % %c *#:E33D999: 3!'E#>>tDDDE#nn44T4 4UU!'C#<A#A> A) A%A) A>A'A>"D#A>%A)'A>)A;/A2 0A;7A>:D;A>> D B D *C D  ;DD  Dc|jsy|j}|J|jdk7ry|jy)zRaise a :py:exc:`RuntimeError` on missing ``start_tls()``. It is necessary for TLS-in-TLS so that it is possible to send HTTPS queries through HTTPS proxies. This doesn't affect regular HTTP requests, though. Nhttps)rrascheme_check_loop_for_start_tls)rDr proxy_urls rE_fail_on_no_start_tlsz"TCPConnector._fail_on_no_start_tlssBzz| II $$$   w &  &&(rGcl |jjy#t$r}td|d}~wwxYw)NaAn HTTPS request is being sent through an HTTPS proxy. This needs support for TLS in TLS but it is not implemented in your runtime for the stdlib asyncio. Please upgrade to Python 3.11 or higher. For more details, please see: * https://bugs.python.org/issue37179 * https://github.com/python/cpython/pull/28073 * https://docs.aiohttp.org/en/stable/client_advanced.html#proxy-support * https://github.com/aio-libs/aiohttp/discussions/6044 )r` start_tlsrqrx)rDattr_excs rErz&TCPConnector._check_loop_for_start_tlss<  JJ   K   s 3 .3cD |jy#t$rYywxYw)NTF)rrxrKs rE_loop_supports_start_tlsz%TCPConnector._loop_supports_start_tls s,   * * ,  s  underlying_transportc|jjjdk7ryt|dd}|ryt j dt |dy)z6Issue a warning if the requested URL has HTTPS scheme.rN_start_tls_compatibleFaAn HTTPS request is being sent through an HTTPS proxy. This support for TLS in TLS is known to be disabled in the stdlib asyncio (Python <3.11). This is why you'll probably see an error in the log below. It is possible to enable it via monkeypatching. For more details, see: * https://bugs.python.org/issue37179 * https://github.com/python/cpython/pull/28073 You can temporarily patch this as follows: * https://docs.aiohttp.org/en/stable/client_advanced.html#proxy-support * https://github.com/aio-libs/aiohttp/discussions/6044 )rnr~) request_infourlrgetattrrMrNRuntimeWarning)rDrrasyncio_supports_tls_in_tlss rE_warn_about_tls_in_tlsz#TCPConnector._warn_about_tls_in_tlss\      & &' 1 &- # ' # '   G ! rGc2K|j}ttj|j |} t |j |j4d{ |jj||||jxs |j|jd{}dddd{d}||jt!||j#|||fS77K#t$r|jwxYw7[#1d{7swYkxYw#t$$r} t'|j| | d} ~ wt($r} t+|j| | d} ~ wt $r@} | j,t/| t0j2r||j| | d} ~ wt4$rN} t7d|jd|j8dd|j:d |jxsd d | d | d} ~ wwxYww) z$Wrap the raw TCP transport with TLS.rN)server_hostnamessl_handshake_timeoutz:Failed to start TLS (possibly caused by closing transport)z2Cannot initialize a TLS-in-TLS connection to host :dz4 through an underlying connection to an HTTPS proxy z ssl:defaultz [])rrr?rhrzr-rrr`rrr)totalrrrrconnection_mader'r r(r"rryrr TypeErrorrrPra) rDrrrr tls_protort tls_transportmsgrtype_errs rE_start_tls_connectionz"TCPConnector._start_tls_connection:sMMO #..$*?*?*DE + #$$W5K5K   *.***>*>,!"(+(;(;(Gsxx.5mm +?+%M   J$R"3#5#5ws|DD  % % i''Y %%)..0     " T1#2D2DcJPS S L)#*<*D05H7D09C;;DDD0D-!D$ "D-)D00 H9E HE33 H?;F:: HA HHHcK|j|}|j|}|jj}|J|j dr|j ddz}|j }|Jtj|j||||j} tj| d{} d} | D]}|d}|d}|r"|j(xs|dj dnd} |j+|j,|||||d |d |d ||j.|| d{\}}|j1r|r |j3|||fcS| J| 7#tj$rd d} | j| t$rC} | jt!| tj"rt%|j&| | d} ~ wwxYw7#t$$r } | } Yd} ~ 6d} ~ wwxYw#t4$rD} |j7|j8s|j:j=|| } Yd} ~ d} ~ wwxYww)Nz...)rrctttj5|j dddy#1swYyxYwr)rrrCancelledErrorr])rs rEdrop_exceptionz>TCPConnector._create_direct_connection..drop_exceptions0i)?)?@!JJL!!!s 9Ar)rPrTr=rrU) rr?r=rrUrr@rr)rz$asyncio.Future[List[Dict[str, Any]]]rAN)rzr}rraw_hostendswithrstriprPr ensure_futurer_r`shieldradd_done_callbackrrryrr!rrrrrJrcheckr%rrrr)rDrrrrrtr:r)rP host_resolvedhostsrrlast_exchinfortransprs rErcz&TCPConnector._create_direct_connectionzs**3/ ++C0 ww == ;;s#c)Dxx--   tT&  9   I"..77E )-, E=D=D $$9j(9AA#F   &*&B&BMM#" ?..$3#//!-'C ' ! $zz| %%f-5= S, V' ''N}8%%  !  + +N ;  Iyy ZW5I5I%J's'9'93?S H  I, !(  1LLN8877>>vF"H sB%I(E5E3E57I==G.:G,;G.IH& I3E551G)&>G$$G))I,G.. H7G?9I?HI I9I IIIc@K|j||j}i}|j |j}|jtj |tj <|j }|Jttj|||j|j|j}|j|g|td{\}} | j|jjtj d} | K|j#s| |jtj$<n| |jtj$<|j#r|r|j'||tj(|_|j,|_t/j0|j2ddd} t5|| | |j} |j7| d{} | j8}|J|j;||j<| j?| d{}d| _d| _ |jBdk7re|jD}|tG|jBjH}tK| jL|jN|jB||j|s0|jQdd}| tSd |jU}|s|jY |sT|j[|}|j]|j^|||j`| d{| jYS|jc||| d{| jYS|| fS777Y#tV$r|jYwxYw#|s|jYwwxYw77Y#tV$r"| jY| jYwxYw#| jYwxYww) N)headersauthr\r?r~)ra proxy_authproxy_headers_hash)read_until_eofr)statusrrrsocket)rz)Transport does not expose socket instance)rr?sockrr)rr)2rr proxy_headersrrHOSTrar*METH_GETrr`r?rcr$rr AUTHORIZATIONrPROXY_AUTHORIZATIONr METH_CONNECTmethodrattrevolverrXsendraset_response_paramsrstartrrreasonrphraser#rhistoryget_extra_inforxduprrrzrrr)r)rDrrrruntime_has_start_tlsrr proxy_reqrrrrZconn proxy_respr[resprrrawsockrts rErbz%TCPConnector._create_proxy_connections ""3' $ = = ?"$    (''G [[3 ii! MM   "&!?!? r71K"@"   5   $$T%7%7>  ::<8< D445>B !!$":":; ::<$++Is; $00I GGIM++""$4TXCdC ;D(~~d33JE #>>+++ ,,#8+/+G+G-(--d33 "&"&*{{c)"&++"?&0&=&D&DG2&33 LL#';;$+$(LL 1"+":":8T":"R"?". K##*++-1!),!%!6!6s!;J!%!=!= '&$(+ ">""  ""77# 8  "%W F448%OO% 1!)1 c!   "  r  "sCPND(P>N?PAONO P B&N!?AP OP P(P ?OP PPO!N<<N??OP P +PP PP)NNr)rr*rANrQ)6rRrSrTrr1rrbytesr!rhrrr+rrrrr rrrFrrrr=r;rRrrr r_r*r)r staticmethodr lru_cachervrzr}r!rrrrrrrr BaseTransportrrcrb __classcell__rKs@rEr5r5s6 '+"'),0DH04/38@!&+48()%'&'&e_ '&  '&  } '&'&j)'&4j@ A'&U38_-'&+,'&!uf!45'&'&'&'& $!'&"w001#'&$!&%'&Ry#t## AE 'SM '08  '  'GKJ2J2"J2,4T'],CJ2 d38n J2X   *.w- BQ   YDZ*Mhz6JBMh}6M)= AAA! A 9o A  A w  /1 2A,)$"$# %//# #   # T)= >(%//>(>(! >( 9o >( w$$o5 6 >(L)= Y YW Y! Y 9o Y w  /1 2YvB  B *.w-B BQB w$$o5 6B rGr5ceZdZdZdedddfdededeee dfd e d e d e e jd dffd Zed efdZdededddd efdZxZS)r6aUnix socket connector. path - Unix socket path. keepalive_timeout - (optional) Keep-alive timeout. force_close - Set to True to force close and do reconnect after each request (and between redirects). limit - The total number of simultaneous connections. limit_per_host - Number of simultaneous connections to one host. loop - Optional event loop. FrrNpathrrrrr\rAc<t||||||||_y)Nrrrrr\)rCrF_pathrDrrrrrr\rKs rErFzUnixConnector.__init__fs/ #/)   rGc|jS)zPath to unix socket.rrKs rErzUnixConnector.pathxzzrGrrr:rr8cK t|j|j4d{|jj |j |j d{\}}dddd{|S7Q77 #1d{7swYSxYw#t$rN}|jt|tjrt|j|j||d}~wwxYwwr)r-rrr`create_unix_connectionrrrrryrrr&rrrDrrrrdrrs rErz UnixConnector._create_connection}s X#$$W5K5K  "&!B!BMM4::"5          Xyy ZW5I5I%J*499c6H6H#NTW W XsC1%BA;B4B!A="B) B4A?5B9C1;B=B?BBB BBC1B C. A C))C..C1rRrSrTrr1rrrr rr!rrrrFrrr*rr)rrrs@rEr6r6Zs "8@48!!45     w001 $c *.w-BQ rGr6ceZdZdZdedddfdededeee dfd e d e d e e jd dffd Zed efdZdededddd efdZxZS)r7aNamed pipe connector. Only supported by the proactor event loop. See also: https://docs.python.org/3/library/asyncio-eventloop.html path - Windows named pipe path. keepalive_timeout - (optional) Keep-alive timeout. force_close - Set to True to force close and do reconnect after each request (and between redirects). limit - The total number of simultaneous connections. limit_per_host - Number of simultaneous connections to one host. loop - Optional event loop. FrrNrrrrrr\rAct||||||t|jtj s t d||_y)Nrz9Named Pipes only available in proactor loop under windows)rCrFryr`rProactorEventLooprxrrs rErFzNamedPipeConnector.__init__sZ #/)   JJ11 N  rGc|jS)zPath to the named pipe.rrKs rErzNamedPipeConnector.pathrrGrrr:rr8c(K t|j|j4d{|jj |j |j d{\}}tjdd{dddd{tt S7|7F7(7#1d{7swY*xYw#t$rC}|jt|tjrt|j||d}~wwxYww)Nrr)r-rrr`create_pipe_connectionrrrsleeprrryrr!rrr)rs rErz%NamedPipeConnector._create_connections I#$$W5K5K ' '"&!B!BMM4::"5mmA&&& ' '$OU++% '' ' ' ' ' Iyy ZW5I5I%J&s'9'93?S H IsD%CB&C4B.!B("B.B*B. CB,CD&C(B.*B.,C.C4B7 5C<C D >D  DDrrs@rEr7r7s ""8@48!!45     w001 0c, ,*.w-,BQ, ,rGr7)XrrrrfrdrM collectionsrr contextlibrhttpr http.cookiesr itertoolsrr rr typesr typingr r rrrrrrrrrrrrrrrrabcrclient_exceptionsrr r!r"r#r$r%r&r'r( client_protor) client_reqrepr*r+r,r-r.r/r0r1locksr2rAr3r?rh ImportErrorr __all__clientr8r9tracingr:r<rXrr4r#r5r6r7rVrGrEr s *%#$ !   *HHRR%%J S%,(XKXKv  s$s$l$?$?N|  =|  ~2M2jB,B,k* CJs>D88 EE