B `W @s8ddlZddlZddlZddlZddlZddlZddlZddlZddlm Z m Z m Z ddl m Z mZmZddlmZmZddlmZmZmZmZmZmZmZmZmZmZmZddlZddl m!Z!m"Z"m#Z#m$Z$ddl%m&Z&dd l'm(Z(m)Z)m*Z*m+Z+m,Z,dd l-m.Z.dd l/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5dd l6m7Z7dd l)m8Z8m9Z9m:Z:m;Z;mZ>m?Z?ddl*m@Z@mAZAmBZBmCZCddlDmEZEddlFmGZGddlHmIZImJZJmKZKmLZLmMZMyddlNZNddlNmOZOWnePk rdZNeQZOYnXy ddlRZSWnePk rddlSZSYnXdZTer2ddlUmVZVddlWmXZXddlYmZZZe[dZ\ej]ddddGdddZ^ej]ddddGdddZ_GdddZ`eNdk reNjOeae`ebdfZcnebdZced eae`dfeeaed eeded eae`dfd!d"d#Zeej]dddd$Gd%d&d&Zfegegead'd(d)ZhGd*d+d+ZiGd,d-d-e;ZjdS).N)md5sha1sha256) CookieErrorMorsel SimpleCookie)MappingProxyType TracebackType) TYPE_CHECKINGAnyDictIterableListMappingOptionalTupleTypeUnioncast) CIMultiDictCIMultiDictProxy MultiDictMultiDictProxy)URL)hdrshelpershttp multipartpayload)AbstractStreamWriter)ClientConnectionError ClientOSErrorClientResponseErrorContentTypeError InvalidURLServerFingerprintMismatch)FormData)PY_36BaseTimerContext BasicAuth HeadersMixin TimerNoopnoopreify set_result)SERVER_SOFTWARE HttpVersion10 HttpVersion11 StreamWriter) client_logger) StreamReader)DEFAULT_JSON_DECODER JSONDecoder LooseCookies LooseHeaders RawHeaders) SSLContext) ClientRequestClientResponse RequestInfo Fingerprint) ClientSession) Connection)Tracez!^application/(?:[\w.+-]+?\+)?jsonT) auto_attribsfrozenslotsc@s.eZdZUeeed<ded<eeed<dS)ContentDispositiontypezMappingProxyType[str, str] parametersfilenameN)__name__ __module__ __qualname__rstr__annotations__rOrOp/private/var/folders/7j/8686xlfs15q3tgljmghtvg0r0000gn/T/pip-target-isidps9b/lib/python/aiohttp/client_reqrep.pyrFWs  rFc@sJeZdZUeed<eed<ded<eZeed<ej edddZ d S) r>urlmethodzCIMultiDictProxy[str]headersreal_url)returncCs|jS)N)rQ)selfrOrOrPreal_url_defaulteszRequestInfo.real_url_defaultN) rJrKrLrrNrMattribrTdefaultrWrOrOrOrPr>^s r>c@sLeZdZeeedZeddddZe edddZ e j dd d d Z dS) r?) N) fingerprintrUcCsJt|}|j|}|s"tdn|tks2|tkr:td||_||_dS)Nzfingerprint has invalid lengthz8md5 and sha1 are insecure and not supported. Use sha256.)lenHASHFUNC_BY_DIGESTLENget ValueErrorrr _hashfunc _fingerprint)rVr^Z digestlenhashfuncrOrOrP__init__qs  zFingerprint.__init__)rUcCs|jS)N)rd)rVrOrOrPr^}szFingerprint.fingerprint) transportrUcCs`|dsdS|d}|jdd}||}||jkr\|d^}}}t|j|||dS)NZ sslcontextZ ssl_objectT) binary_formZpeername)Zget_extra_info getpeercertrcdigestrdr&)rVrgsslobjcertgothostport_rOrOrPchecks    zFingerprint.check)rJrKrLrrrr`bytesrfpropertyr^asyncio TransportrqrOrOrOrPr?js r?r;)ssl verify_ssl ssl_contextr^rUcCs|dk r2|s2tjdtdd|dk r.tdnd}|dk r`tjdtdd|dk r\tdn|}|dk rtjdtdd|dk rtdnt|}t|tstd||S) Nz/verify_ssl is deprecated, use ssl=False instead) stacklevelzNverify_ssl, ssl_context, fingerprint and ssl parameters are mutually exclusiveFz2ssl_context is deprecated, use ssl=context insteadzCfingerprint is deprecated, use ssl=Fingerprint(fingerprint) insteadzFssl should be SSLContext, bool, Fingerprint or None, got {!r} instead.) warningswarnDeprecationWarningrbr? isinstanceSSL_ALLOWED_TYPES TypeErrorformat)rvrwrxr^rOrOrP_merge_ssl_paramss@  r)rCrErDc@sbeZdZUeed<eeed<eed<ee dee fed<ee ed<ee ed<eeed<dS) ConnectionKeyrnrois_sslNrvproxy proxy_authZproxy_headers_hash) rJrKrLrMrNrintboolrr;r?rr*rOrOrOrPrs    r)response_content_typeexpected_content_typerUcCs|dkrt|dk S||kS)Nzapplication/json)json_rematch)rrrOrOrP_is_expected_content_typesrc@seZdZejejejejhZej ej ej hZ e e  ejhZejdejdiZdZdZdZdZdZddedddejdddddddddddddeeeeeefeee ee!ee"ee#ej$eeee%e%ee&j'ee(deeee#ee)ede*e+e%e,dfeeee-d d d d Z.e%d ddZ/e0e*dde%e,fd ddZ1e0e2d ddZ3e0ed ddZ4e0ee5d ddZ6e0e7d ddZ8eddddZ9e*ej$efdddd Z:eedd!d"d#Z;e edd$d%d&Zdd d-d.Z?ee#dd/d0d1Z@e!dd2d3d4ZAdKe%dd5d6d7ZBeeee#eedd8d9d:ZCe%d d;d<ZDeEd=dd>d?d@ZFd=ddAdBdCZGdd dDdEZHdd dFdGZIeeeJddHdIdJZKdS)Lr<z*/*z gzip, deflateNF)paramsrSskip_auto_headersdatacookiesauthversioncompresschunked expect100loopresponse_classrrtimersessionrv proxy_headerstracesr=r@rB)rRrQrrSrrrrrrrrrrrrrrrvrrcCs| dkrt} t|ts"t|t|ttdfsMsz/ClientRequest.connection_key..) rhashtupleitemsrrnrorrvrr)rVrhrOrOrPconnection_keyHszClientRequest.connection_keycCs|jj}|dk st|S)N)rQraw_hostr)rVretrOrOrPrn[s zClientRequest.hostcCs|jjS)N)rQro)rVrOrOrProaszClientRequest.portcCst|j}t|j|j||jS)N)rrSr>rQrRr)rVrSrOrOrP request_infoes zClientRequest.request_info)rQrUcCs6|jst||j|j}}|r2t||p,d|_dS)z8Update destination host, port and connection type (ssl).N)rr%userpasswordrr*r)rVrQusernamerrOrOrPrjs zClientRequest.update_host)rrUcCspt|trfdd|ddD}y tt|dt|d}Wn$tk rdtd|dYnX||_dS)zdConvert request version to two elements tuple. parser HTTP version '1.1' => (1, 1) cSsg|] }|qSrO)strip)rpartrOrOrP {sz0ClientRequest.update_version...rrz#Can not parse http version number: N)r~rMsplitr HttpVersionrrbr)rVrrrOrOrPrus    zClientRequest.update_version)rSrUcCst|_tt|jj}t|r,d|d}|jjdk rV|j sV|dt|jj7}||jt j <|rt |t ttfr~|}x6|D].\}}|dkr||j|<q|j||qWdS)zUpdate request headers.[]N:rn)rrSrrMrQrris_ipv6_addressroZis_default_portrZHOSTr~dictrrrloweradd)rVrSnetlockeyvaluerOrOrPrs     zClientRequest.update_headers)rrUcCsvtddt|D|_|j}||jx,|jD]\}}||kr:|j||q:Wt j |krrt |jt j <dS)Ncss|]}|dfVqdS)NrO)rhdrrOrOrPrsz4ClientRequest.update_auto_headers..) rsortedrrScopyrDEFAULT_HEADERSrrrZ USER_AGENTr0)rVrZ used_headersrvalrOrOrPrs   z!ClientRequest.update_auto_headers)rrUcCs|sdSt}tj|jkr:||jtjd|jtj=t|trN|}n|}xP|D]H\}}t|t r||j t }| |j |j |j |||<qX|||<qXW|jddd|jtj<dS)zUpdate request cookies header.Nr;)headersep)rrZCOOKIErSloadrar~rrrrsetr coded_valueoutputr)rVrcZ iter_cookiesnamerZmrsl_valrOrOrPrs        zClientRequest.update_cookies)rrUcCs`|sdS|jtjd}|r0|jr\tdn,|jr\t|jtsHd|_|j|jtj<d|_ dS)zSet request content encoding.Nrz9compress can not be set if Content-Encoding header is setdeflateT) rSrarZCONTENT_ENCODINGrrrbr~rMr)rVrencrOrOrPrs z%ClientRequest.update_content_encodingcCsz|jtjd}d|kr,|jrvtdnJ|jrTtj|jkrFtdd|jtj<n"tj|jkrvtt |j |jtj<dS)z!Analyze transfer-encoding header.rrzDchunked can not be set if "Transfer-Encoding: chunked" header is setz6chunked can not be set if Content-Length header is setN) rSrarZTRANSFER_ENCODINGrrrbCONTENT_LENGTHrMr_body)rVterOrOrPrs  z&ClientRequest.update_transfer_encoding)rrUcCsB|dkr|j}|dkrdSt|tjs.td||jtj<dS)zSet basic auth.Nz%BasicAuth() tuple is required instead) rr~rr*rencoderSrZ AUTHORIZATION)rVrrOrOrPrs zClientRequest.update_auth)rrUcCs|sdSt|tr|}ytjj|dd}Wn tjk rLt|}YnX||_|jstj |j kr|j }|dkr|d|_ntj |j krt ||j tj <|j st x8|j D]*\}}||j krq||jkrq||j |<qWdS)N) dispositionT)r~r'rZPAYLOAD_REGISTRYra LookupErrorrrrrrSsizerMrrr)rVrrrrrOrOrPrs.      z#ClientRequest.update_body_from_data)expectrUcCsB|rd|jtj<n|jtjddkr.d}|r>|j|_dS)Nz 100-continuerT)rSrZEXPECTrarrZ create_future _continue)rVrrOrOrPrs z$ClientRequest.update_expect_continue)rrrrUcCsD|r|jdkstd|r.t|tjs.td||_||_||_dS)NrzOnly http proxies are supportedz,proxy_auth must be None or BasicAuth() tuple)rrbr~rr*rrr)rVrrrrOrOrPr szClientRequest.update_proxycCsN|jtkrdS|jtkr4|jtjdkr.dSdSn|jtjdkrJdSdS)NFz keep-aliveTclose)rr1rSrar CONNECTION)rVrOrOrP keep_alive.s  zClientRequest.keep_aliverA)writerconnrUc sf|jdk r$|IdH|jIdH|j}|dk s6tz ynt|jtjr^|j|IdHn:t|jt t frx|jf|_x|jD]}||IdHqW| IdHWnt k r}z,t |jd|j}||_||_||Wdd}~XYndtjk r(}z|js||Wdd}~XYn.tk rT}z||Wdd}~XYnXWdd|_XdS)z-Support coroutines that yields bytes objects.Nz!Can not write request body for %s)rZdrainprotocolrr~rrZPayloadwriterr bytearray write_eofOSErrorr"errnorQ __context__ __cause__ set_exceptionrtZCancelledErrorclosed Exception_writer)rVrrrchunkexcnew_excrOrOrP write_bytes<s2      zClientRequest.write_bytes)rrUc s|jtjkrJ|jj}|dk s tt|r6d|d}|d|jj}n:|j rd| sdt |j}n |jj }|jj r|d|jj 7}|j}|dk stt||jt|j|j|jd}|jr||j|jdk r||j|jkrtj|jkrtj|jkrd|jtj<|jtj}|sP|r@|jt krPd}n|jt!krPd}|dk rf||jtj<d "|j||j}|#||jIdH|j$|%|||_&|j'}|dk st||j|j(|j&|j)|j*|j+|j,|j|j-d |_.|j.S) Nrrr?)Z on_chunk_sentzapplication/octet-streamz keep-aliverz{0} {1} HTTP/{2[0]}.{2[1]})r continue100rrrrr)/rRrZ METH_CONNECTrQrrrrrorrrMraw_pathZraw_query_stringrr3r functoolspartial_on_chunk_request_sentrZenable_compressionrZenable_chunking POST_METHODS CONTENT_TYPErrSrarrrr1r2rZ write_headersZ create_taskr r rrrrrrrresponse) rVrZ connect_hostpathrr connectionZ status_linerrOrOrPsendash               zClientRequest.sendcs(|jdk r$z|jIdHWdd|_XdS)N)r )rVrOrOrPrs zClientRequest.closecCs(|jdk r$|js|jd|_dS)N)r r is_closedcancel)rVrOrOrP terminates   zClientRequest.terminate)rRrQr rUcs(x"|jD]}||||IdHqWdS)N)rZsend_request_chunk_sent)rVrRrQr tracerOrOrPrs z$ClientRequest._on_chunk_request_sent)F)LrJrKrLrZMETH_GETZ METH_HEADZ METH_OPTIONSZ METH_TRACErZ METH_PATCHZ METH_POSTZMETH_PUTrunionZ METH_DELETEZ ALL_METHODSZACCEPTACCEPT_ENCODINGrrrrr r frozensetrr2rMrrrr9r r r8r*rrrtAbstractEventLooprr)rr;r?rrfrrsrvrrrnrror>rrrrrrrrrrrrrr r rrrrrrrOrOrOrPr<s  3  "  #Nr<c @steZdZdZdZdZdZdZdZdZ dZ dZ dZ e ededeeedejddd d d Zeed d d Zeed ddZeed ddZee d ddZedd ddZeed ddZeed ddZeeed ddZ e!fe"ddddZ#e d d d!Z$e%ed"d d#d$Z&ee'd%d d&d'Z(ed(d d)d*Z)d"dd+d,d-Z*dd d.d/Z+e%e,d d0d1Z-dd d2d3Z.e"d d4d5Z/e%e,d d6d7Z0dd d8d9Z1dd d:d;Z2dd dd?Z4e5d d@dAZ6e d dBdCZ7dRee e e dEdFdGZ8de9dHdIee e:ee e"dJdKdLZ;dd dMdNZee>ee?ddOdPdQZ@dS)Sr=NTFzasyncio.Task[None]zasyncio.Future[bool]rBr@) rRrQrrrrrrrrUc Cst|tst||_t|_||_|d|_d|_ ||_ ||_ d|_ d|_ ||_|dk r^|nt|_i|_||_||_| |_|rttd|_dS)NTrOr)r~rrrRrr _real_urlr_url_bodyr r_closed_history _request_infor,r_cacher_looprrrrrrr) rVrRrQrrrrrrrrOrOrPrfs$  zClientResponse.__init__)rUcCs|jS)N)r#)rVrOrOrPrQszClientResponse.urlcCstjdtdd|jS)NzDeprecated, use .url #1654)rz)r{r|r}r#)rVrOrOrPurl_objszClientResponse.url_objcCs|jS)N)r")rVrOrOrPrTszClientResponse.real_urlcCs|jjdk st|jjS)N)r#rnr)rVrOrOrPrnszClientResponse.hostzCIMultiDictProxy[str]cCs|jS)N)_headers)rVrOrOrPrSszClientResponse.headerscCs|jS)N) _raw_headers)rVrOrOrP raw_headers szClientResponse.raw_headerscCs|jS)N)r')rVrOrOrPrszClientResponse.request_infocCsF|jtj}|dkrdSt|\}}t|}t|}t|||S)N) r,rarZCONTENT_DISPOSITIONrparse_content_dispositionrZcontent_disposition_filenamerF)rVrawZdisposition_typeZ params_dctrrIrOrOrPcontent_dispositions z"ClientResponse.content_disposition) _warningsrUcCs|jr dS|jdk r~|j||jr~tr>d|i}ni}|jd|tf||dd}|j rr|j |d<|j |dS)NsourcezUnclosed response zUnclosed response)Zclient_responsemessageZsource_traceback) r% _connectionrelease_cleanup_writerr)rr(r|ResourceWarningrZcall_exception_handler)rVr2kwargscontextrOrOrP__del__s      zClientResponse.__del__cCsbt}t|j}|jr.|jddd}n|j}td||j ||dt|j |d| S)Nasciibackslashreplacez)file) ioStringIOrMrQreasonrdecodeprintrstatusrSgetvalue)rVoutZascii_encodable_urlZascii_encodable_reasonrOrOrP__repr__1s  zClientResponse.__repr__rAcCs|jS)N)r5)rVrOrOrPrCszClientResponse.connection)r=.cCs|jS)z2A sequence of of responses, if redirects occurred.)r&)rVrOrOrPhistoryGszClientResponse.historyz/MultiDictProxy[MultiDictProxy[Union[str, URL]]]c Csd|jdg}|s"ttSt}xtd|D]}td|}|dkrPq6|\}}|ddd}t}xB|D]:} td| tj }|dkrqz|\} } } } | | | qzW| d|} | d |j t || | t|q6Wt|S) Nz, linkz ,(?=\s*<)z \s*<(.*)>(.*)rrz%^\s*(\S*)\s*=\s*(['\"]?)(.*?)(\2)\s*$relrQ)joinrSgetallrrrerrgroupsMrrarQr) rVZ links_strlinksrrrQZ params_strrrIparamrrprrOrOrPrPLs*     zClientResponse.links)rrUc s`d|_|j|_||_|jxy|jIdH\}}WnBtjk rx}z"t|j |j |j |j |j d|Wdd}~XYnX|j dks|j dks|j dkrP|jdk rt|jdd|_qWWdQRX||j|j|_|j |_|j|_|j |_|j|_||_x\|j tjdD]H}y|j|Wn0tk rT}zt d |Wdd}~XYnXqW|S) zStart response processing.FN)rDr4rSdeTrOz!Can not load response cookies: %s)!r%r _protocolr5rreadrZHttpProcessingErrorr#rrHcoder4rSrr/Zon_eof _response_eofrrDrAr,r.r-contentrLrZ SET_COOKIErrrr4warning)rVrr4rr rrOrOrPstartpsB   $zClientResponse.startcCsP|jr dS|jdk r>|jjdk r.|jjjr.dS|jd|_d|_|dS)NT)r%r5rZupgradedr6r7)rVrOrOrPrXs    zClientResponse._response_eofcCs|jS)N)r%)rVrOrOrPrszClientResponse.closedcCs\|js||jrdSd|_|jdks2|jr6dS|jdk rP|jd|_|dS)NT) _released_notify_contentr%r)rr5rr7)rVrOrOrPrs  zClientResponse.closecCsH|js||jrtSd|_|jdk r:|jd|_|tS)NT)r\r]r%r-r5r6r7)rVrOrOrPr6s  zClientResponse.releasecCs&y |Wntk r dSXdS)zReturns ``True`` if ``status`` is less than ``400``, ``False`` if not. This is **not** a check for ``200 OK`` but a check that the response status is under 400. FT)raise_for_statusr#)rVrOrOrPoks  zClientResponse.okcCs@d|jkr<|jdk st|t|j|j|j|j|jddS)Ni)rDr4rS)rDrArr6r#rrHrS)rVrOrOrPr^s zClientResponse.raise_for_statuscCs$|jdk r|jd|_d|_dS)N)r rr)rVrOrOrPr7s  zClientResponse._cleanup_writercCs.|j}|r$|dkr$|tdd|_dS)NzConnection closedT)rY exceptionrr!r\)rVrYrOrOrPr]szClientResponse._notify_contentcs0|jdk r$z|jIdHWdd|_X|dS)N)r r6)rVrOrOrPwait_for_closes  zClientResponse.wait_for_closecs|jdkrly@|jIdH|_x(|jD]}||j|j|jIdHq&WWqztk rh|YqzXn|j rzt d|jS)zRead response payload.NzConnection closed) r$rYrVrZsend_response_chunk_receivedrRrQ BaseExceptionrr\r!)rVrrOrOrPrVs   zClientResponse.readcCs|jtjd}t|}|jd}|rVyt |Wnt k rTd}YnX|s|j dkr~|j dksx|j dkr~d}n$|j dkrtdnt|j d}|sd}|S) NrcharsetZ applicationjsonZrdapzutf-8z0Cannot guess the encoding of a not yet read bodyencoding)rSrarrrrZparse_mimetyperHcodecslookuprrGsubtyper$ RuntimeErrorchardetdetect)rVctypemimetypererOrOrP get_encodings&     zClientResponse.get_encodingstrict)reerrorsrUcs8|jdkr|IdH|dkr(|}|jj||dS)z!Read response payload and decode.N)rp)r$rVrnrB)rVrerprOrOrPtext1s  zClientResponse.textzapplication/json)reloads content_type)rerrrsrUcs|jdkr|IdH|rT|jtjd}t||sTt|j |j d||jd|j }|sfdS|dkrv| }|| |S)zRead and decodes JSON response.Nrz3Attempt to decode JSON with unexpected mimetype: %s)r4rS)r$rVrSrarrrrr$rrHrrnrB)rVrerrrsrlstrippedrOrOrPrd;s     zClientResponse.jsoncs|S)NrO)rVrOrOrP __aenter__[szClientResponse.__aenter__)exc_typeexc_valexc_tbrUcs |dS)N)r6)rVrvrwrxrOrOrP __aexit__^s zClientResponse.__aexit__)Nro)ArJrKrLrrDrArYr,r-r5rr%r\rMrrr)r>rrtr!rfr.rQr+rTrnrSr:r.rrFr1r{r r;rGrsrrrHrPr[rXrrrr6r_r^r7r]rarrrVrnrqr6r7rdrurrbr ryrOrOrOrPr=s #2    r=)krtrfrr?rMrrr{hashlibrrr http.cookiesrrrtypesrr typingr r r r rrrrrrrrXZ multidictrrrrZyarlrrrrrrrabcr Zclient_exceptionsr!r"r#r$r%r&Zformdatar'r(r)r*r+r,r-r.r/r0r1r2r3logr4Zstreamsr5Ztypedefsr6r7r8r9r:rvr; ImportErrorobjectZcchardetrj__all__clientr@Z connectorrAtracingrBcompilersrFr>r?rrGrrrrrrMrr<r=rOrOrOrPst4    (          " 0h