/usr/lib64/python3.9/urllib/__pycache__
NameSizeModeActions
error.cpython-39.opt-1.pyc28260644editdlrm
error.cpython-39.opt-2.pyc21510644editdlrm
error.cpython-39.pyc28260644editdlrm
parse.cpython-39.opt-1.pyc359730644editdlrm
parse.cpython-39.opt-2.pyc252370644editdlrm
parse.cpython-39.pyc359730644editdlrm
request.cpython-39.opt-1.pyc724840644editdlrm
request.cpython-39.opt-2.pyc602170644editdlrm
request.cpython-39.pyc725770644editdlrm
response.cpython-39.opt-1.pyc34560644editdlrm
response.cpython-39.opt-2.pyc28770644editdlrm
response.cpython-39.pyc34560644editdlrm
robotparser.cpython-39.opt-1.pyc73270644editdlrm
robotparser.cpython-39.opt-2.pyc59590644editdlrm
robotparser.cpython-39.pyc73270644editdlrm
__init__.cpython-39.opt-1.pyc1300644editdlrm
__init__.cpython-39.opt-2.pyc1300644editdlrm
__init__.cpython-39.pyc1300644editdlrm
Edit: /usr/lib64/python3.9/urllib/__pycache__/request.cpython-39.opt-2.pyc (60217B)
a ´iº‹ã@sŠddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlmZmZmZddlmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'ddl(m)Z)m*Z*z ddl+Z+Wne,�ydZ-Yn0dZ-gd¢Z.de j/dd …Z0da1de j2fddddd œd d „Z3d d„Z4gZ5d€dd„Z6dd„Z7e  8de j9¡Z:dd„Z;Gdd„dƒZGdd„dƒZ?Gdd„de?ƒZ@Gd d!„d!e?ƒZAGd"d#„d#e?ƒZBd$d%„ZCGd&d'„d'e?ƒZDGd(d)„d)ƒZEGd*d+„d+eEƒZFGd,d-„d-eFƒZGGd.d/„d/ƒZHGd0d1„d1eHe?ƒZIGd2d3„d3eHe?ƒZJejKZLGd4d5„d5ƒZMGd6d7„d7e?eMƒZNGd8d9„d9e?eMƒZOGd:d;„d;e?ƒZPGdƒ�ræGd?d@„d@ePƒZTe. Ud@¡GdAdB„dBe?ƒZVGdCdD„dDe?ƒZWdEdF„ZXdGdH„ZYGdIdJ„dJe?ƒZZdKdL„Z[GdMdN„dNe?ƒZ\GdOdP„dPe\ƒZ]GdQdR„dRe?ƒZ^dSZ_ej`dTk�r€ddUlambZbmcZcndVdW„ZbdXdY„ZciZdGdZd[„d[ƒZeGd\d]„d]eeƒZfdagd^d_„Zhdaid`da„Zjdakdbdc„Zldamddde„ZnGdfdg„dgƒZodhdi„Zpd�djdk„Zqdldm„Zrdndo„Zse jtdpk�rPddqlumvZvmwZwdrds„Zxdtdu„Zydvdw„Zzdxdy„Z{n6ej`dTk�r~dzd{„Z|d|dy„Z{d}d~„Z}ddw„ZznepZ{eqZzdS)‚éN)ÚURLErrorÚ HTTPErrorÚContentTooShortError)ÚurlparseÚurlsplitÚurljoinÚunwrapÚquoteÚunquoteÚ _splittypeÚ _splithostÚ _splitportÚ _splituserÚ _splitpasswdÚ _splitattrÚ _splitqueryÚ _splitvalueÚ _splittagÚ _to_bytesÚunquote_to_bytesÚ urlunparse)Ú addinfourlÚ addclosehookFT)!ÚRequestÚOpenerDirectorÚ BaseHandlerÚHTTPDefaultErrorHandlerÚHTTPRedirectHandlerÚHTTPCookieProcessorÚ ProxyHandlerÚHTTPPasswordMgrÚHTTPPasswordMgrWithDefaultRealmÚHTTPPasswordMgrWithPriorAuthÚAbstractBasicAuthHandlerÚHTTPBasicAuthHandlerÚProxyBasicAuthHandlerÚAbstractDigestAuthHandlerÚHTTPDigestAuthHandlerÚProxyDigestAuthHandlerÚ HTTPHandlerÚ FileHandlerÚ FTPHandlerÚCacheFTPHandlerÚ DataHandlerÚUnknownHandlerÚHTTPErrorProcessorÚurlopenÚinstall_openerÚ build_openerÚ pathname2urlÚ url2pathnameÚ getproxiesÚ urlretrieveÚ urlcleanupÚ URLopenerÚFancyURLopenerz%d.%dé)ÚcafileÚcapathÚ cadefaultÚcontextc Cs¤|s |s |rfddl}| dtd¡|dur2tdƒ‚ts>tdƒ‚tjtjj||d�}t |d�}t |ƒ} n0|r~t |d�}t |ƒ} nt dur’t ƒa } nt } |   |||¡S)NrzJcafile, capath and cadefault are deprecated, use a custom context instead.r:zDYou can't pass both context and any of cafile, capath, and cadefaultzSSL support not available)r;r<)r>) ÚwarningsÚwarnÚDeprecationWarningÚ ValueErrorÚ _have_sslÚsslZcreate_default_contextZPurposeZ SERVER_AUTHÚ HTTPSHandlerr2Ú_openerÚopen) ÚurlÚdataÚtimeoutr;r<r=r>r?Z https_handlerÚopener©rLú&/usr/lib64/python3.9/urllib/request.pyr0‹s04 ÿÿ þ     r0cCs|adS©N)rF)rKrLrLrMr1Øsr1c Cslt|ƒ\}}t t||ƒ¡��}| ¡}|dkrR|sRtj |¡|fWdƒS|rbt|dƒ}nt j dd�}|j }t   |¡|�Ž||f} d} d} d} d} d|vr°t|d ƒ} |rÀ|| | | ƒ| | ¡}|sÒ�q| t|ƒ7} | |¡| d 7} |rÀ|| | | ƒqÀWdƒn1�s0YWdƒn1�s80Y| dk�rh| | k�rhtd | | f| ƒ‚| S) NÚfileÚwbF)Údeleteé éÿÿÿÿrúcontent-lengthúContent-Lengthéú1retrieval incomplete: got only %i out of %i bytes)r Ú contextlibÚclosingr0ÚinfoÚosÚpathÚnormpathrGÚtempfileÚNamedTemporaryFileÚnameÚ_url_tempfilesÚappendÚintÚreadÚlenÚwriter)rHÚfilenameÚ reporthookrIZurl_typer\ÚfpÚheadersÚtfpÚresultÚbsÚsizerdÚblocknumÚblockrLrLrMr6ÝsH          Nÿþr6c CsBtD]&}zt |¡Wqty(Yq0qtdd…=tr>dadSrN)rar[ÚunlinkÚOSErrorrF)Z temp_filerLrLrMr7s  r7z:\d+$cCs<|j}t|ƒd}|dkr&| dd¡}t d|d¡}| ¡S)NrVÚÚHost)Úfull_urlrÚ get_headerÚ _cut_port_reÚsubÚlower)ÚrequestrHÚhostrLrLrMÚ request_host+s   r|c@sÊeZdZdidddfdd„Zedd„ƒZejdd„ƒZejdd„ƒZed d „ƒZejd d „ƒZejd d „ƒZd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zd#dd„Zdd „Zd!d"„ZdS)$rNFc Csl||_i|_i|_d|_||_d|_| ¡D]\}}| ||¡q,|durRt|ƒ}||_ ||_ |rh||_ dSrN) rurjÚunredirected_hdrsÚ_datarIÚ _tunnel_hostÚitemsÚ add_headerr|Úorigin_req_hostÚ unverifiableÚmethod) ÚselfrHrIrjr‚rƒr„ÚkeyÚvaluerLrLrMÚ__init__=szRequest.__init__cCs|jrd |j|j¡S|jS)Nz{}#{})ÚfragmentÚformatÚ _full_url©r…rLrLrMruOszRequest.full_urlcCs(t|ƒ|_t|jƒ\|_|_| ¡dSrN)rr‹rr‰Ú_parse©r…rHrLrLrMruUs cCsd|_d|_d|_dS©Nrs)r‹r‰ÚselectorrŒrLrLrMru\scCs|jSrN)r~rŒrLrLrMrIbsz Request.datacCs(||jkr$||_| d¡r$| d¡dS)NúContent-length)r~Ú has_headerÚ remove_header)r…rIrLrLrMrIfs  cCs d|_dSrN)rIrŒrLrLrMrIpscCsNt|jƒ\|_}|jdur(td|jƒ‚t|ƒ\|_|_|jrJt|jƒ|_dS)Nzunknown url type: %r) r r‹ÚtyperBrur r{r�r )r…ÚrestrLrLrMr�ts  zRequest._parsecCs|jdurdnd}t|d|ƒS)NÚPOSTÚGETr„)rIÚgetattr)r…Zdefault_methodrLrLrMÚ get_method|szRequest.get_methodcCs|jSrN)rurŒrLrLrMÚ get_full_url�szRequest.get_full_urlcCs2|jdkr|js|j|_n||_|j|_||_dS)NÚhttps)r”rr{rur�)r…r{r”rLrLrMÚ set_proxy„s  zRequest.set_proxycCs |j|jkSrN)r�rurŒrLrLrMÚ has_proxyŒszRequest.has_proxycCs||j| ¡<dSrN)rjÚ capitalize©r…r†ÚvalrLrLrMr��szRequest.add_headercCs||j| ¡<dSrN)r}ržrŸrLrLrMÚadd_unredirected_header“szRequest.add_unredirected_headercCs||jvp||jvSrN)rjr}©r…Ú header_namerLrLrMr’—s ÿzRequest.has_headercCs|j ||j ||¡¡SrN)rjÚgetr})r…r£ÚdefaultrLrLrMrv›s þzRequest.get_headercCs |j |d¡|j |d¡dSrN)rjÚpopr}r¢rLrLrMr“ szRequest.remove_headercCsi|j¥|j¥}t| ¡ƒSrN)r}rjÚlistr€)r…ÚhdrsrLrLrMÚ header_items¤szRequest.header_items)N)Ú__name__Ú __module__Ú __qualname__rˆÚpropertyruÚsetterÚdeleterrIr�r™ršrœr�r�r¡r’rvr“r©rLrLrLrMr;s6þ        rc@sNeZdZdd„Zdd„Zdd„Zdd„Zd ejfd d „Z dd d „Z dd„Z d S)rcCs6dt}d|fg|_g|_i|_i|_i|_i|_dS)NúPython-urllib/%sz User-agent)Ú __version__Ú addheadersÚhandlersÚ handle_openÚ handle_errorÚprocess_responseÚprocess_request)r…Zclient_versionrLrLrMrˆ©s zOpenerDirector.__init__c CsRt|dƒstdt|ƒƒ‚d}t|ƒD�]}|dvr6q&| d¡}|d|…}||dd…}| d¡rÂ| d¡|d}||dd…}z t|ƒ}Wnty¦Yn0|j  |i¡} | |j|<n>|dkrÖ|}|j } n*|d krê|}|j } n|d kr&|}|j } nq&|   |g¡} | �r t | |¡n |  |¡d }q&|�rNt |j|¡| |¡dS) NÚ add_parentz%expected BaseHandler instance, got %rF)Úredirect_requestÚdo_openÚ proxy_openÚ_rVÚerrorrGÚresponserzT)ÚhasattrÚ TypeErrorr”ÚdirÚfindÚ startswithrcrBrµr¤r´r¶r·Ú setdefaultÚbisectÚinsortrbr³r¸) r…ÚhandlerZaddedÚmethÚiÚprotocolZ conditionÚjÚkindÚlookupr³rLrLrMÚ add_handler´sL ÿ        zOpenerDirector.add_handlercCsdSrNrLrŒrLrLrMÚcloseãszOpenerDirector.closec Gs<| |d¡}|D]&}t||ƒ}||Ž}|dur|SqdS)NrL)r¤r˜) r…ÚchainrÌÚ meth_nameÚargsr³rÇÚfuncrlrLrLrMÚ _call_chainçs   zOpenerDirector._call_chainNc Cs¾t|tƒrt||ƒ}n|}|dur(||_||_|j}|d}|j |g¡D]}t||ƒ}||ƒ}qJt   d|j |j|j |  ¡¡| ||¡} |d}|j |g¡D]}t||ƒ}||| ƒ} q | S)NZ_requestzurllib.RequestZ _response)Ú isinstanceÚstrrrIrJr”r·r¤r˜ÚsysÚauditrurjr™Ú_openr¶) r…ÚfullurlrIrJÚreqrÊrÑZ processorrÈr¾rLrLrMrGòs$       zOpenerDirector.opencCsP| |jdd|¡}|r|S|j}| |j||d|¡}|r>|S| |jdd|¡S)Nr¥Z default_openrÙÚunknownÚ unknown_open)rÔr´r”)r…rÛrIrlrÊrLrLrMrÙs  ÿ ÿÿ ÿzOpenerDirector._opencGs~|dvr,|jd}|d}d|}d}|}n|j}|d}d}|||f|}|j|Ž}|r^|S|rz|dd f|}|j|ŽSdS) N©Úhttpr›rßr:z http_error_%srVÚ_errorrr¥Úhttp_error_default)rµrÔ)r…ÚprotorÒÚdictrÑZhttp_errZ orig_argsrlrLrLrMr½s   zOpenerDirector.error)N) rªr«r¬rˆrÎrÏrÔÚsocketÚ_GLOBAL_DEFAULT_TIMEOUTrGrÙr½rLrLrLrMr¨s /  rc GsÒtƒ}ttttttttt g }t t j dƒr2|  t¡tƒ}|D]B}|D]8}t|tƒrht||ƒr|| |¡qDt||ƒrD| |¡qDq<|D]}| |¡q„|D]}| |ƒ¡q˜|D]}t|tƒrÂ|ƒ}| |¡q®|S)NÚHTTPSConnection)rrr.r)rrr+r*r/r-r¿rßÚclientrbrEÚsetrÕr”Ú issubclassÚaddÚremoverÎ)r³rKZdefault_classesÚskipÚklassÚcheckÚhrLrLrMr27s2 ý         r2c@s(eZdZdZdd„Zdd„Zdd„ZdS) réôcCs ||_dSrN)Úparent)r…rñrLrLrMr¸^szBaseHandler.add_parentcCsdSrNrLrŒrLrLrMrÏaszBaseHandler.closecCst|dƒsdS|j|jkS)NÚ handler_orderT)r¿rò)r…ÚotherrLrLrMÚ__lt__es zBaseHandler.__lt__N)rªr«r¬ròr¸rÏrôrLrLrLrMr[src@seZdZdZdd„ZeZdS)r/iècCsH|j|j| ¡}}}d|kr,dksDn|j d|||||¡}|S)NéÈé,rß)ÚcodeÚmsgrZrñr½)r…rzr¾r÷rør¨rLrLrMÚ http_responsers  ÿz HTTPErrorProcessor.http_responseN)rªr«r¬ròrùÚhttps_responserLrLrLrMr/ns r/c@seZdZdd„ZdS)rcCst|j||||ƒ‚dSrN)rru)r…rÛrir÷rør¨rLrLrMrá€sz*HTTPDefaultErrorHandler.http_error_defaultN)rªr«r¬rárLrLrLrMrsrc@s4eZdZdZdZdd„Zdd„ZeZZZ dZ dS) réé c st| ¡}|dvr|dvs:|dvr(|dks:t|j||||ƒ‚| dd¡}d‰‡fdd „|j ¡Dƒ}t|||jd d �S) N)é-é.é/i3)r—ZHEAD)rýrþrÿr–ú z%20)rTz content-typecs"i|]\}}| ¡ˆvr||“qSrL)ry©Ú.0ÚkÚv©ZCONTENT_HEADERSrLrMÚ ¦s  ÿz8HTTPRedirectHandler.redirect_request..T)rjr‚rƒ)r™rruÚreplacerjr€rr‚) r…rÛrir÷rørjÚnewurlÚmZ newheadersrLrrMr¹‹s ÿÿ ýz$HTTPRedirectHandler.redirect_requestc CsLd|vr|d}nd|vr$|d}ndSt|ƒ}|jdvrRt||d||f||ƒ‚|jsn|jrnt|ƒ}d|d<t|ƒ}t|dtj d�}t |j |ƒ}|  ||||||¡}|dur²dSt |d ƒ�r|j} |_|  |d ¡|jksìt| ƒ|jk�rt|j ||j|||ƒ‚ni} |_|_|  |d ¡d | |<| ¡| ¡|jj||jd �S) NÚlocationÚuri©rßr›Úftprsz+%s - Redirection to url '%s' is not allowedú/r:z iso-8859-1)ÚencodingÚsafeÚ redirect_dictrrV©rJ)rÚschemerr\Únetlocr§rr ÚstringÚ punctuationrrur¹r¿rr¤Ú max_repeatsreÚmax_redirectionsÚinf_msgrdrÏrñrGrJ) r…rÛrir÷rørjrÚurlpartsÚnewZvisitedrLrLrMÚhttp_error_302±sH    ý ÿ    ÿ ÿz"HTTPRedirectHandler.http_error_302zoThe HTTP server returned a redirect error that would lead to an infinite loop. The last 30x error message was: N) rªr«r¬rrr¹rÚhttp_error_301Úhttp_error_303Úhttp_error_307rrLrLrLrMrƒs &< rc Cs°t|ƒ\}}| d¡s d}|}nZ| d¡s6td|ƒ‚d|vrV| d¡}| d|¡}n | dd¡}|dkrnd}|d|…}t|ƒ\}}|durœt|ƒ\}} nd}} ||| |fS)Nrú//zproxy URL with no authority: %rú@r:rS)r rÃrBrÂrr) ÚproxyrZr_schemeÚ authorityZhost_separatorÚendÚuserinfoÚhostportÚuserÚpasswordrLrLrMÚ _parse_proxyôs$        r)c@s"eZdZdZddd„Zdd„ZdS)rédNcCsP|durtƒ}||_| ¡D].\}}| ¡}t|d||||jfdd„ƒqdS)Nz%s_opencSs ||||ƒSrNrL)Úrr"r”rÈrLrLrMÚ!sz'ProxyHandler.__init__..)r5Úproxiesr€ryÚsetattrr»)r…r-r”rHrLrLrMrˆs ÿzProxyHandler.__init__c Cs´|j}t|ƒ\}}}}|dur"|}|jr6t|jƒr6dS|rv|rvdt|ƒt|ƒf} t |  ¡¡ d¡} |  dd| ¡t|ƒ}|  ||¡||ksš|dkrždS|j j ||j d�SdS)Nú%s:%sÚasciiúProxy-authorizationúBasic r›r)r”r)r{Ú proxy_bypassr Úbase64Ú b64encodeÚencodeÚdecoder�rœrñrGrJ) r…rÛr"r”Z orig_typeZ proxy_typer'r(r&Z user_passZcredsrLrLrMr»$s"ÿ zProxyHandler.proxy_open)N)rªr«r¬ròrˆr»rLrLrLrMrs rc@s6eZdZdd„Zdd„Zdd„Zd dd „Zd d „Zd S)r cCs i|_dSrN)ÚpasswdrŒrLrLrMrˆBszHTTPPasswordMgr.__init__cs\t|tƒr|g}|ˆjvr$iˆj|<dD].‰t‡‡fdd„|Dƒƒ}||fˆj||<q(dS)N©TFc3s|]}ˆ |ˆ¡VqdSrN)Ú reduce_uri)rÚu©Ú default_portr…rLrMÚ Lsz/HTTPPasswordMgr.add_password..)rÕrÖr8Útuple)r…Úrealmr r'r8Ú reduced_urirLr<rMÚ add_passwordEs   ÿzHTTPPasswordMgr.add_passwordc Cs`|j |i¡}dD]H}| ||¡}| ¡D].\}}|D] }| ||¡r6|Sq6q*qdS)Nr9©NN)r8r¤r:r€Ú is_suburi) r…r@ÚauthuriZdomainsr=Úreduced_authuriZurisZauthinfor rLrLrMÚfind_user_passwordPs  z"HTTPPasswordMgr.find_user_passwordTc Cs†t|ƒ}|dr.|d}|d}|dp*d}n d}|}d}t|ƒ\}}|r~|dur~|dur~dddœ |¡} | dur~d|| f}||fS) NrVrr:réPi»rÞz%s:%d)rr r¤) r…r r=Úpartsrr#r\r{ÚportZdportrLrLrMr:Zs$ ÿþ zHTTPPasswordMgr.reduce_uricCsN||kr dS|d|dkr dS|d}|dd…dkr@|d7}|d |¡S)NTrFrVrSr)rÃ)r…ÚbaseÚtestÚprefixrLrLrMrDqszHTTPPasswordMgr.is_suburiN)T)rªr«r¬rˆrBrGr:rDrLrLrLrMr @s   r c@seZdZdd„ZdS)r!cCs0t |||¡\}}|dur"||fSt |d|¡SrN)r rG)r…r@rEr'r(rLrLrMrG‚s ÿz2HTTPPasswordMgrWithDefaultRealm.find_user_passwordN)rªr«r¬rGrLrLrLrMr!€sr!cs<eZdZ‡fdd„Zd ‡fdd„ Zd dd„Zdd „Z‡ZS) r"csi|_tƒj|i|¤ŽdSrN)Ú authenticatedÚsuperrˆ©r…rÒÚkwargs©Ú __class__rLrMrˆŒsz%HTTPPasswordMgrWithPriorAuth.__init__Fcs<| ||¡|dur&tƒ d|||¡tƒ ||||¡dSrN)Úupdate_authenticatedrOrB)r…r@r r'r8Úis_authenticatedrRrLrMrB�s z)HTTPPasswordMgrWithPriorAuth.add_passwordcCs>t|tƒr|g}dD]$}|D]}| ||¡}||j|<qqdS©Nr9)rÕrÖr:rN)r…r rUr=r;rArLrLrMrT—s   z1HTTPPasswordMgrWithPriorAuth.update_authenticatedcCsDdD]:}| ||¡}|jD]"}| ||¡r|j|SqqdSrV)r:rNrD)r…rEr=rFr rLrLrMrU¡s    z-HTTPPasswordMgrWithPriorAuth.is_authenticated)F)F)rªr«r¬rˆrBrTrUÚ __classcell__rLrLrRrMr"Šs  r"c@sTeZdZe dej¡Zddd„Zdd„Zdd„Z d d „Z d d „Z d d„Z e Z e ZdS)r#z1(?:^|,)[ ]*([^ ,]+)[ ]+realm=(["']?)([^"']*)\2NcCs"|durtƒ}||_|jj|_dSrN)r r8rB)r…Z password_mgrrLrLrMrˆ¾sz!AbstractBasicAuthHandler.__init__ccspd}tj |¡D]6}| ¡\}}}|dvr8t dtd¡||fVd}q|sl|r^| ¡d}nd}|dfVdS)NF)ú"ú'zBasic Auth Realm was unquotedéTrrs)r#ÚrxÚfinditerÚgroupsr?r@Ú UserWarningÚsplit)r…ÚheaderZfound_challengeÚmorr r@rLrLrMÚ _parse_realmÄsÿ z%AbstractBasicAuthHandler._parse_realmc Cs~| |¡}|sdSd}|D]H}| |¡D]8\}}| ¡dkrB|}q(|dur(| |||¡Sq(q|durztd|fƒ‚dS)NÚbasiczBAbstractBasicAuthHandler does not support the following scheme: %r)Zget_allrbryÚretry_http_basic_authrB) r…Úauthreqr{rÛrjZ unsupportedr`rr@rLrLrMÚhttp_error_auth_reqedØs  þz.AbstractBasicAuthHandler.http_error_auth_reqedcCs||j ||¡\}}|durtd||f}dt | ¡¡ d¡}| |jd¡|krTdS| |j|¡|j j ||j d�SdSdS)Nr/r2r0r) r8rGr4r5r6r7rvÚ auth_headerr¡rñrGrJ)r…r{rÛr@r'ÚpwÚrawÚauthrLrLrMrdòs z.AbstractBasicAuthHandler.retry_http_basic_authcCstt|jdƒr|j |j¡s|S| d¡sp|j d|j¡\}}d ||¡ ¡}t  |¡  ¡}|  dd |  ¡¡¡|S)NrUÚ Authorizationz{0}:{1}zBasic {}) r¿r8rUrur’rGrŠr6r4Zstandard_b64encoder7r¡Ústrip)r…rÛr'r8Z credentialsZauth_strrLrLrMÚ http_requestþs  ÿ  ÿz%AbstractBasicAuthHandler.http_requestcCsLt|jdƒrHd|jkr"dkr8nn|j |jd¡n|j |jd¡|S)NrUrõröTF)r¿r8r÷rTru)r…rÛr¾rLrLrMrù s  z&AbstractBasicAuthHandler.http_response)N)rªr«r¬ÚreÚcompileÚIr[rˆrbrfrdrmrùÚ https_requestrúrLrLrLrMr#©sø   r#c@seZdZdZdd„ZdS)r$rkcCs|j}| d|||¡}|S)Núwww-authenticate)rurf)r…rÛrir÷rørjrHr¾rLrLrMÚhttp_error_401s ÿz#HTTPBasicAuthHandler.http_error_401N)rªr«r¬rgrsrLrLrLrMr$sr$c@seZdZdZdd„ZdS)r%r1cCs|j}| d|||¡}|S©Núproxy-authenticate)r{rf)r…rÛrir÷rørjr#r¾rLrLrMÚhttp_error_407's ÿz$ProxyBasicAuthHandler.http_error_407N)rªr«r¬rgrvrLrLrLrMr%#sr%c@sNeZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dS)r&NcCs4|durtƒ}||_|jj|_d|_d|_d|_dS©Nr)r r8rBÚretriedÚ nonce_countÚ last_nonce)r…r8rLrLrMrˆAs z"AbstractDigestAuthHandler.__init__cCs d|_dSrw)rxrŒrLrLrMÚreset_retry_countJsz+AbstractDigestAuthHandler.reset_retry_countcCs|| |d¡}|jdkr*t|jdd|dƒ‚n|jd7_|rx| ¡d}| ¡dkr`| ||¡S| ¡dkrxtd|ƒ‚dS) Néi‘zdigest auth failedrVrÚdigestrczEAbstractDigestAuthHandler does not support the following scheme: '%s')r¤rxrrur_ryÚretry_http_digest_authrB)r…rgr{rÛrjrerrLrLrMrfMs   ÿ    ÿz/AbstractDigestAuthHandler.http_error_auth_reqedcCsz| dd¡\}}ttdt|ƒƒƒ}| ||¡}|rvd|}|j |jd¡|krRdS| |j|¡|j j ||j d�}|SdS)NrrVz Digest %sr) r_Úparse_keqv_listÚfilterÚparse_http_listÚget_authorizationrjr¤rgr¡rñrGrJ)r…rÛrjÚtokenZ challengeÚchalZauth_valZresprLrLrMr~as z0AbstractDigestAuthHandler.retry_http_digest_authcCs@d|j|t ¡f}| d¡tdƒ}t |¡ ¡}|dd…S)Nz %s:%s:%s:r0éé)ryÚtimeÚctimer6Ú _randombytesÚhashlibÚsha1Ú hexdigest)r…ÚnonceÚsÚbÚdigrLrLrMÚ get_cnoncemsz$AbstractDigestAuthHandler.get_cnoncecCsÄz6|d}|d}| d¡}| dd¡}| dd¡}WntyJYdS0| |¡\}} |durfdS|j ||j¡\} } | dur†dS|jdur | |j|¡} nd} d| || f} d| ¡|j f}|durè| || ƒd|||ƒfƒ}n~d |  d ¡v�rZ||j k�r|j d 7_ n d |_ ||_ d |j }|  |¡}d |||d ||ƒf}| || ƒ|ƒ}n td|ƒ‚d| |||j |f}|�rŒ|d|7}| �rž|d| 7}|d|7}|�rÀ|d||f7}|S)Nr@r�ÚqopÚ algorithmÚMD5Úopaquez%s:%s:%sr/rjú,rVz%08xz%s:%s:%s:%s:%szqop '%s' is not supported.z>username="%s", realm="%s", nonce="%s", uri="%s", response="%s"z , opaque="%s"z , digest="%s"z, algorithm="%s"z, qop=auth, nc=%s, cnonce="%s")r¤ÚKeyErrorÚget_algorithm_implsr8rGrurIÚget_entity_digestr™r�r_rzryr‘r)r…rÛr„r@r�r’r“r•ÚHÚKDr'rhZentdigZA1ZA2ZrespdigZncvalueZcnonceZnoncebitrKrLrLrMr‚xs\    þ     ÿÿ   z+AbstractDigestAuthHandler.get_authorizationcsD|dkrdd„‰n|dkr$dd„‰n td|ƒ‚‡fdd„}ˆ|fS)Nr”cSst | d¡¡ ¡S©Nr0)rŠÚmd5r6rŒ©ÚxrLrLrMr,¹óz?AbstractDigestAuthHandler.get_algorithm_impls..ZSHAcSst | d¡¡ ¡Srœ)rŠr‹r6rŒržrLrLrMr,»r z.Unsupported digest authentication algorithm %rcsˆd||fƒS)Nr/rL)rŽÚd©ršrLrMr,Àr )rB)r…r“r›rLr¢rMr˜¶s  ÿ z-AbstractDigestAuthHandler.get_algorithm_implscCsdSrNrL)r…rIr„rLrLrMr™Ãsz+AbstractDigestAuthHandler.get_entity_digest)N) rªr«r¬rˆr{rfr~r‘r‚r˜r™rLrLrLrMr&6s   > r&c@seZdZdZdZdd„ZdS)r'rkéêcCs*t|jƒd}| d|||¡}| ¡|S)NrVrr)rrurfr{©r…rÛrir÷rørjr{ÚretryrLrLrMrsÒs ÿz$HTTPDigestAuthHandler.http_error_401N)rªr«r¬rgròrsrLrLrLrMr'Èsr'c@seZdZdZdZdd„ZdS)r(úProxy-Authorizationr£cCs"|j}| d|||¡}| ¡|Srt)r{rfr{r¤rLrLrMrvßs ÿz%ProxyDigestAuthHandler.http_error_407N)rªr«r¬rgròrvrLrLrLrMr(Úsr(c@s6eZdZd dd„Zdd„Zdd„Zdd „Zd d „Zd S)ÚAbstractHTTPHandlerrcCs ||_dSrN©Ú _debuglevel)r…Ú debuglevelrLrLrMrˆèszAbstractHTTPHandler.__init__cCs ||_dSrNr¨)r…ÚlevelrLrLrMÚset_http_debuglevelësz'AbstractHTTPHandler.set_http_debuglevelcCstjj |j| ¡¡SrN)rßrçÚHTTPConnectionÚ_get_content_lengthrIr™©r…rzrLrLrMr®îsþz'AbstractHTTPHandler._get_content_lengthc Cs|j}|stdƒ‚|jdur’|j}t|tƒr8d}t|ƒ‚| d¡sN| dd¡| d¡s’| d¡s’| |¡}|dur†| dt|ƒ¡n | dd¡|}|  ¡r¸t |j ƒ\}}t |ƒ\}} | d¡sÎ| d|¡|j jD]&\} } |  ¡} | | ¡sÖ| | | ¡qÖ|S) Nú no host givenz\POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.z Content-typeú!application/x-www-form-urlencodedr‘úTransfer-encodingZchunkedrt)r{rrIrÕrÖrÀr’r¡r®r�r r�r rñr²rž) r…rzr{rIrøZcontent_lengthZsel_hostrZselZsel_pathr`r‡rLrLrMÚ do_request_ósF   þ ÿ ÿÿ    zAbstractHTTPHandler.do_request_c sV|j}|stdƒ‚||fd|ji|¤Ž}| |j¡t|jƒ‰ˆ ‡fdd„|j  ¡Dƒ¡dˆd<dd„ˆ  ¡Dƒ‰|j r®i}d}|ˆvržˆ|||<ˆ|=|j |j |d �zbz&|j |  ¡|j|jˆ| d ¡d �Wn.t�y}zt|ƒ‚WYd}~n d}~00| ¡} Wn| ¡‚Yn0|j�r@|j ¡d|_| ¡| _| j| _| S) Nr°rJcsi|]\}}|ˆvr||“qSrLrLr©rjrLrMr's ÿz/AbstractHTTPHandler.do_open..rÏÚ ConnectioncSsi|]\}}| ¡|“qSrL)Útitle)rr`r rLrLrMr4r r¦r´r²)Zencode_chunked)r{rrJZset_debuglevelr©rãr}Úupdaterjr€rZ set_tunnelrzr™r�rIr’rrÚ getresponserÏÚsockršrHÚreasonrø) r…Z http_classrÛZhttp_conn_argsr{rïZtunnel_headersZproxy_auth_hdrÚerrr+rLr´rMrºsB    ÿ    zAbstractHTTPHandler.do_openN)r)rªr«r¬rˆr¬r®r³rºrLrLrLrMr§æs  &r§c@seZdZdd„ZejZdS)r)cCs| tjj|¡SrN)rºrßrçr­©r…rÛrLrLrMÚ http_open^szHTTPHandler.http_openN)rªr«r¬r½r§r³rmrLrLrLrMr)\sr)ræc@s$eZdZddd„Zdd„ZejZdS)rErNcCst ||¡||_||_dSrN)r§rˆÚ_contextÚ_check_hostname)r…rªr>Úcheck_hostnamerLrLrMrˆgs zHTTPSHandler.__init__cCs|jtjj||j|jd�S)N)r>rÀ)rºrßrçrær¾r¿r¼rLrLrMÚ https_openls ÿzHTTPSHandler.https_open)rNN)rªr«r¬rˆrÁr§r³rqrLrLrLrMrEes rEc@s.eZdZddd„Zdd„Zdd„ZeZeZdS) rNcCs$ddl}|dur|j ¡}||_dSrw)Zhttp.cookiejarÚ cookiejarZ CookieJar)r…rÂrßrLrLrMrˆus zHTTPCookieProcessor.__init__cCs|j |¡|SrN)rÂZadd_cookie_headerr¯rLrLrMrm{s z HTTPCookieProcessor.http_requestcCs|j ||¡|SrN)rÂZextract_cookies)r…rzr¾rLrLrMrùsz!HTTPCookieProcessor.http_response)N)rªr«r¬rˆrmrùrqrúrLrLrLrMrts  rc@seZdZdd„ZdS)r.cCs|j}td|ƒ‚dS)Nzunknown url type: %s)r”r)r…rÛr”rLrLrMr݇szUnknownHandler.unknown_openN)rªr«r¬rÝrLrLrLrMr.†sr.cCsNi}|D]@}| dd¡\}}|ddkr@|ddkr@|dd…}|||<q|S)Nú=rVrrXrS)r_)ÚlÚparsedÚeltrrrLrLrMr‹s  rcCsžg}d}d}}|D]l}|r*||7}d}q|rT|dkr>d}qn |dkrJd}||7}q|dkrl| |¡d}q|dkrxd}||7}q|r�| |¡dd„|DƒS) NrsFú\TrXr–cSsg|] }| ¡‘qSrL)rl)rÚpartrLrLrMÚ ¾r z#parse_http_list..)rb)rŽÚresrÈÚescaper ZcurrLrLrMr�•s4    r�c@s(eZdZdd„ZdZdd„Zdd„ZdS)r*cCs\|j}|dd…dkrN|dd…dkrN|jrN|jdkrN|j| ¡vrXtdƒ‚n | |¡SdS)Nr:r rZrÚ localhostú-file:// scheme is supported only on localhost)r�r{Ú get_namesrÚopen_local_file)r…rÛrHrLrLrMÚ file_openÂs&ÿ zFileHandler.file_openNcCs^tjdurXz*tt d¡dt t ¡¡dƒt_Wn"tjyVt d¡ft_Yn0tjS)NrÌr:)r*Únamesr?räÚgethostbyname_exÚ gethostnameÚgaierrorÚ gethostbynamerŒrLrLrMrÎÍs  ÿÿ zFileHandler.get_namesc Csddl}ddl}|j}|j}t|ƒ}z¢t |¡}|j}|jj |j dd�} |  |¡d} |  d| pbd|| f¡} |r~t |ƒ\}} |r–| sÄt|ƒ| ¡vrÄ|r¨d||} nd|} tt|dƒ| | ƒWSWn,tyò}zt|ƒ‚WYd}~n d}~00tdƒ‚dS) NrT©Zusegmtz6Content-type: %s Content-length: %d Last-modified: %s ú text/plainúfile://Úrbzfile not on local host)Ú email.utilsÚ mimetypesr{r�r4r[ÚstatÚst_sizeÚutilsÚ formatdateÚst_mtimeÚ guess_typeÚmessage_from_stringr Ú_safe_gethostbynamerÎrrGrrr)r…rÛÚemailrÛr{rgZ localfileÚstatsrnÚmodifiedÚmtyperjrJZorigurlÚexprLrLrMrÏØs:  ÿÿ ÿÿzFileHandler.open_local_file)rªr«r¬rÐrÑrÎrÏrLrLrLrMr*Às  r*cCs(z t |¡WStjy"YdS0dSrN)rärÕrÔ)r{rLrLrMrãós rãc@seZdZdd„Zdd„ZdS)r+c Cs.ddl}ddl}|j}|s"tdƒ‚t|ƒ\}}|dur>|j}nt|ƒ}t|ƒ\}}|rdt|ƒ\}}nd}t |ƒ}|pvd}|p~d}zt   |¡}Wn,t yº}zt|ƒ‚WYd}~n d}~00t |jƒ\} } |  d¡} ttt | ƒƒ} | dd…| d} } | �r| d�s| dd…} zÎ| ||||| |j¡} | �r8d�p:d}| D]2}t|ƒ\}}| ¡d k�r@|d v�r@| ¡}�q@|  | |¡\}}d}| |j¡d}|�rª|d |7}|du�rÊ|dk�rÊ|d |7}t |¡}t|||jƒWS|j�y(}z*td |ƒ}| t  ¡d¡‚WYd}~n d}~00dS)Nrúftp error: no host givenrsrrSrVrpÚDr”©ÚaÚArÉrpr¡rêzContent-type: %s zContent-length: %d ú ftp error: %rr:)!ÚftplibrÛr{rr ÚFTP_PORTrcrrr rärÕrrrr�r_r§ÚmapÚ connect_ftprJrryÚupperÚretrfilerárurärârÚ all_errorsÚwith_tracebackr×Úexc_info)r…rÛrïrÛr{rJr'r8rør\ÚattrsÚdirsrOÚfwr”Úattrr‡riÚretrlenrjrçrèÚexcrLrLrMÚftp_openús^     ÿ     zFTPHandler.ftp_openc Cst||||||dd�S)NF)Ú persistent)Ú ftpwrapper)r…r'r8r{rJrùrJrLrLrMrò/sÿzFTPHandler.connect_ftpN)rªr«r¬rþròrLrLrLrMr+ùs5r+c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)r,cCs"i|_i|_d|_d|_d|_dS)Nré<r†)ÚcacherJÚsoonestÚdelayÚ max_connsrŒrLrLrMrˆ6s zCacheFTPHandler.__init__cCs ||_dSrN)r)r…ÚtrLrLrMÚ setTimeout=szCacheFTPHandler.setTimeoutcCs ||_dSrN)r)r…r rLrLrMÚ setMaxConns@szCacheFTPHandler.setMaxConnscCsr|||d |¡|f}||jvr4t ¡|j|j|<n,t||||||ƒ|j|<t ¡|j|j|<| ¡|j|S)Nr)Újoinrr‡rrJrÚ check_cache)r…r'r8r{rJrùrJr†rLrLrMròCs  ÿ zCacheFTPHandler.connect_ftpcCsÂt ¡}|j|krPt|j ¡ƒD].\}}||kr |j| ¡|j|=|j|=q tt|j ¡ƒƒ|_t |jƒ|j kr¾t|j ¡ƒD]&\}}||jkr‚|j|=|j|=qªq‚tt|j ¡ƒƒ|_dSrN) r‡rr§rJr€rrÏÚminÚvaluesrer)r…rrrrLrLrMr Ns   zCacheFTPHandler.check_cachecCs0|j ¡D] }| ¡q |j ¡|j ¡dSrN)rr rÏÚclearrJ)r…ÚconnrLrLrMÚ clear_cachebs  zCacheFTPHandler.clear_cacheN) rªr«r¬rˆrrròr rrLrLrLrMr,3s  r,c@seZdZdd„ZdS)r-cCs~|j}| dd¡\}}| dd¡\}}t|ƒ}| d¡rNt |¡}|dd…}|sVd}t d|t|ƒf¡}t t   |¡||ƒS)Nú:rVr–z;base64iùÿÿÿútext/plain;charset=US-ASCIIz$Content-type: %s Content-length: %d ) rur_rÚendswithr4Ú decodebytesrärârerÚioÚBytesIO)r…rÛrHrrIZ mediatyperjrLrLrMÚ data_openis     ÿzDataHandler.data_openN)rªr«r¬rrLrLrLrMr-hsr-rüÚnt)r4r3cCst|ƒSrN)r ©ÚpathnamerLrLrMr4�sr4cCst|ƒSrN)r rrLrLrMr3”sr3c@sÆeZdZdZdeZd)dd„Zdd„Zdd„Zd d „Z d d „Z d*d d„Z d+dd„Z d,dd„Z d-dd„Zdd„Zd.dd„Zd/dd„Zdd„Zer dd„Zd0dd „Zd!d"„Zd#d$„Zd%d&„Zd1d'd(„ZdS)2r8Nr°cKszdd|jji}tj|tdd�|dur.tƒ}||_| d¡|_| d¡|_ d|j fdg|_ g|_ t j|_d|_t|_dS) NzW%(class)s style of invoking requests is deprecated. Use newer urlopen functions/methodsÚclassrZ)Ú stacklevelÚkey_fileÚ cert_filez User-Agent)ZAcceptz*/*)rSrªr?r@rAr5r-r¤rrÚversionr²Ú_URLopener__tempfilesr[rqÚ_URLopener__unlinkÚ tempcacheÚftpcache)r…r-Zx509rørLrLrMrˆªs ÿ  zURLopener.__init__cCs | ¡dSrN)rÏrŒrLrLrMÚ__del__ÄszURLopener.__del__cCs | ¡dSrN)ÚcleanuprŒrLrLrMrÏÇszURLopener.closec CsT|jr@|jD]&}z| |¡Wq ty0Yq 0q |jdd…=|jrP|j ¡dSrN)rr rrr!r )r…rOrLrLrMr$Ês   zURLopener.cleanupcGs|j |¡dSrN)r²rb)r…rÒrLrLrMÚ addheaderØszURLopener.addheaderc Csptt|ƒƒ}t|dd�}|jrL||jvrL|j|\}}t|dƒ}t|||ƒSt|ƒ\}}|s`d}||jvr–|j|}t|ƒ\}} t| ƒ\} } | |f}nd}d|} ||_ |   dd¡} t || ƒrÆ| dkrä|rØ|  |||¡S|  ||¡Sz0|du�rt|| ƒ|ƒWSt|| ƒ||ƒWSWnVttf�y.‚Yn>t�yj} z$td | ƒ t ¡d ¡‚WYd} ~ n d} ~ 00dS) Nz%/:=&?~#+!$,;'@()*[]|©rrÙrOZopen_ú-r¼rÏz socket errorr:)rrr r!rGrr r-r r”rr¿Úopen_unknown_proxyÚ open_unknownr˜rrrrrör×r÷)r…rÚrIrgrjriÚurltyperHr"Ú proxyhostr{r�r`rørLrLrMrGÞs<             zURLopener.opencCst|ƒ\}}tdd|ƒ‚dS)Nú url errorzunknown url type©r rr)r…rÚrIr”rHrLrLrMr)s zURLopener.open_unknowncCs t|ƒ\}}tdd||ƒ‚dS)Nr,zinvalid proxy for %sr-)r…r"rÚrIr”rHrLrLrMr(s zURLopener.open_unknown_proxycCstt|ƒƒ}|jr&||jvr&|j|St|ƒ\}}|durŠ|rF|dkrŠz0| |¡}| ¡}| ¡tt|ƒdƒ|fWSt yˆYn0|  ||¡}�zL| ¡} |r²t |dƒ} nrt|ƒ\} } t| pÆdƒ\} } t | pÖdƒ\} } t | pædƒ\} } t j | ¡d} t | ¡\}}|j |¡t  |d¡} zª|| f}|jdu�rD||j|<d}d}d}d}d| v�rjt| d ƒ}|�r|||||ƒ| |¡}|�s��qÄ|t|ƒ7}|  |¡|d7}|�r|||||ƒ�q|W|  ¡n |  ¡0W| ¡n | ¡0|dk�r||k�rtd ||f|ƒ‚|S) NrOrVrPrsrRrSrrTrUrW)rrr!r rÏrZrÏr4r rrrGrrr[r\Úsplitextr^ÚmkstemprrbÚfdopenrcrdrerfr)r…rHrgrhrIr”Zurl1rir¨rjrkZgarbager\ÚsuffixÚfdrlrmrnrdrorprLrLrMÚretrieve sn                  ÿþzURLopener.retrievecCs"d}d}t|tƒrr@rÏrFrNrLrLrLrMr8�s,  $   A\     :r8c@sšeZdZdd„Zdd„Zd"dd„Zdd „Zd#d d „Zd$d d „Zd%dd„Z d&dd„Z d'dd„Z d(dd„Z d)dd„Z d*dd„Zd+dd„Zd,dd„Zd d!„ZdS)-r9cOs.tj|g|¢Ri|¤Ži|_d|_d|_dS)Nrrü)r8rˆÚ auth_cacheÚtriesÚmaxtriesrPrLrLrMrˆ]szFancyURLopener.__init__cCst||d||ƒS)Nr4)rr<rLrLrMrácsz!FancyURLopener.http_error_defaultNc Cs~|jd7_zb|jrR|j|jkrRt|dƒr4|j}n|j}|||dd|ƒWd|_S| ||||||¡}|Wd|_Sd|_0dS)NrVÚhttp_error_500rðz)Internal Server Error: Redirect Recursionr)rPrQr¿rRráÚredirect_internal) r…rHrir:r;rjrIrÈrlrLrLrMrgs& þù ÿþzFancyURLopener.http_error_302c Csxd|vr|d}nd|vr$|d}ndS| ¡t|jd||ƒ}t|ƒ}|jdvrnt|||d|||ƒ‚| |¡S)Nr r rr z( Redirection to url '%s' is not allowed.)rÏrr”rrrrG) r…rHrir:r;rjrIrrrLrLrMrSys    ÿýz FancyURLopener.redirect_internalcCs| ||||||¡SrN©r©r…rHrir:r;rjrIrLrLrMr•szFancyURLopener.http_error_301cCs| ||||||¡SrNrTrUrLrLrMr™szFancyURLopener.http_error_303cCs2|dur| ||||||¡S| |||||¡SdSrN)rrárUrLrLrMr�szFancyURLopener.http_error_307Fc CsÈd|vrt ||||||¡|d}t d|¡} | sHt ||||||¡|  ¡\} } |  ¡dkrtt ||||||¡|sŒt ||||||¡d|jd} |dur²t|| ƒ|| ƒSt|| ƒ|| |ƒSdS)Nrrú![ ]*([^ ]+)[ ]+realm="([^"]*)"rcZretry_Ú _basic_auth©r8rárnÚmatchr]ryr”r˜© r…rHrir:r;rjrIr¥ÚstuffrYrr@r`rLrLrMrs¤s. ÿ  ÿ   ÿÿzFancyURLopener.http_error_401c CsÈd|vrt ||||||¡|d}t d|¡} | sHt ||||||¡|  ¡\} } |  ¡dkrtt ||||||¡|sŒt ||||||¡d|jd} |dur²t|| ƒ|| ƒSt|| ƒ|| |ƒSdS)NrurVrcZ retry_proxy_rWrXrZrLrLrMrv½s. ÿ  ÿ   ÿÿzFancyURLopener.http_error_407cCsÄt|ƒ\}}d||}|jd}t|ƒ\}} t| ƒ\} } |  d¡d} | | d…} | | || ¡\} } | sr| srdSdt| dd�t| dd�| f} d| | |jd<|dur´| |¡S| ||¡SdS)Núhttp://rßr!rVú%s:%s@%srsr&©r r-r rÂÚget_user_passwdr rG©r…rHr@rIr{r�rr"r*r+Z proxyselectorrÉr'r8rLrLrMÚretry_proxy_http_basic_authÖs          ÿ z*FancyURLopener.retry_proxy_http_basic_authcCsÄt|ƒ\}}d||}|jd}t|ƒ\}} t| ƒ\} } |  d¡d} | | d…} | | || ¡\} } | sr| srdSdt| dd�t| dd�| f} d| | |jd<|dur´| |¡S| ||¡SdS)Núhttps://r›r!rVr]rsr&r^r`rLrLrMÚretry_proxy_https_basic_authès          ÿ z+FancyURLopener.retry_proxy_https_basic_authc Cs�t|ƒ\}}| d¡d}||d…}| |||¡\}}|sD|sDdSdt|dd�t|dd�|f}d||} |dur€| | ¡S| | |¡SdS)Nr!rVr]rsr&r\©r rÂr_r rG© r…rHr@rIr{r�rÉr'r8rrLrLrMrdús     ÿ  z$FancyURLopener.retry_http_basic_authc Cs�t|ƒ\}}| d¡d}||d…}| |||¡\}}|sD|sDdSdt|dd�t|dd�|f}d||} |dur€| | ¡S| | |¡SdS)Nr!rVr]rsr&rbrdrerLrLrMÚretry_https_basic_auth s     ÿ  z%FancyURLopener.retry_https_basic_authrcCs`|d| ¡}||jvr2|r(|j|=n |j|S| ||¡\}}|sJ|rX||f|j|<||fS)Nr!)ryrOÚprompt_user_passwd)r…r{r@rr†r'r8rLrLrMr_ s   zFancyURLopener.get_user_passwdcCsVddl}z.td||fƒ}| d|||f¡}||fWStyPtƒYdS0dS)NrzEnter username for %s at %s: z#Enter password for %s in %s at %s: rC)ÚgetpassÚinputÚKeyboardInterruptÚprint)r…r{r@rhr'r8rLrLrMrg! sÿ  z!FancyURLopener.prompt_user_passwd)N)N)N)N)NF)NF)N)N)N)N)r)rªr«r¬rˆrárrSrrrrsrvrarcrdrfr_rgrLrLrLrMr9Zs&    ÿ ÿ      r9cCstdurt d¡atS)NrÌ)Ú _localhosträrÕrLrLrLrMrÌ1 s rÌcCsNtdurJztt t ¡¡dƒaWn&tjyHtt d¡dƒaYn0tS)Nr:rÌ)Ú _thishostr?rärÒrÓrÔrLrLrLrMrB9 s rBcCstdurddl}|jatSrw)Ú _ftperrorsrïrõ)rïrLrLrMrED srEcCstdurt d¡atSr�)Ú _noheadersrärârLrLrLrMÚ noheadersM s rpc@sFeZdZddd„Zdd„Zdd„Zd d „Zd d „Zd d„Zdd„Z dS)rNTcCsX||_||_||_||_||_||_d|_||_z | ¡Wn|  ¡‚Yn0dSrw) r'r8r{rJrùrJÚrefcountÚ keepaliveÚinitrÏ)r…r'r8r{rJrùrJrÿrLrLrMrˆZ s zftpwrapper.__init__cCs\ddl}d|_| ¡|_|j |j|j|j¡|j |j |j ¡d  |j ¡}|j  |¡dS)Nrr)rïÚbusyZFTPr Úconnectr{rJrJZloginr'r8r rùÚcwd)r…rïÚ_targetrLrLrMrsj s  zftpwrapper.initc CsÄddl}| ¡|dvr"d}d}n d|}d}z|j |¡Wn(|jyf| ¡|j |¡Yn0d}|ræ|sæzd|}|j |¡\}}WnT|jyä}z:t|ƒdd…dkrÐt d |ƒ  t   ¡d ¡‚WYd}~n d}~00|�sŽ|j d¡|�rz|j  ¡} zXz|j |¡Wn6|j�yP}zt d |ƒ|‚WYd}~n d}~00W|j | ¡n|j | ¡0d |}nd }|j |¡\}}d|_t| d ¡|jƒ} |jd7_| ¡| |fS)Nr)r¡rêzTYPE ArVzTYPE zRETR rZZ550rîr:zLIST ÚLISTrÙ)rïÚ endtransferr ZvoidcmdrõrsZ ntransfercmdZ error_permrÖrrör×r÷ÚpwdrvrtrÚmakefileÚ file_closerqrÏ) r…rOr”rïÚcmdÚisdirrrürºrzZftpobjrLrLrMrôs sJ   ÿ  & zftpwrapper.retrfilecCs d|_dSrw)rtrŒrLrLrMry  szftpwrapper.endtransfercCsd|_|jdkr| ¡dS)NFr)rrrqÚ real_closerŒrLrLrMrÏ£ s zftpwrapper.closecCs2| ¡|jd8_|jdkr.|js.| ¡dS)NrVr)ryrqrrrrŒrLrLrMr|¨ szftpwrapper.file_closecCs0| ¡z|j ¡Wntƒy*Yn0dSrN)ryr rÏrErŒrLrLrMr® s zftpwrapper.real_close)NT) rªr«r¬rˆrsrôryrÏr|rrLrLrLrMrW sÿ  -rcCs´i}tj ¡D]4\}}| ¡}|r|dd…dkr|||dd…<qdtjvrZ| dd¡tj ¡D]J\}}|dd…dkrd| ¡}|rš|||dd…<qd| |dd…d¡qd|S)NiúÿÿÿÚ_proxyZREQUEST_METHODrß)r[Úenvironr€ryr¦)r-r`r‡rLrLrMÚgetproxies_environment¶ s   r‚cCsº|durtƒ}z |d}Wnty.YdS0|dkr|dd>B|dd >B|d BS) Nr…rû)rrrrrérVr†r:r…rZ)r_r§rñrcre)ZipAddrrIrLrLrMÚip2num s   z,_proxy_bypass_macosx_sysconf..ip2numr…Zexclude_simpleTÚ exceptionsrLz(\d+(?:\.\d+)*)(/\d+)?rVr:r…é F) rŠÚ ipaddressr‹rŒr rcr¤rnrYÚgroupÚcount) r{Úproxy_settingsrŠr‹rŒr‡rJrŽZhostIPr‡r rKÚmaskrLrLrMÚ_proxy_bypass_macosx_sysconfú s:      r–cCs`ddlm}t|ƒ\}}| d¡}|D]4}| ¡}|dkrJd|vrZdSq&|||ƒr&dSq&dS)Nrr‰rGzr…TF)rŠr r_rl)r{ÚoverriderŠr¼Zproxy_overriderLrLrLrMÚ_proxy_bypass_winreg_override: s    r˜Údarwin)Ú_get_proxy_settingsÚ _get_proxiescCstƒ}t||ƒSrN)ršr–)r{r”rLrLrMÚproxy_bypass_macosx_sysconfU srœcCstƒSrN)r›rLrLrLrMÚgetproxies_macosx_sysconfY sr�cCs tƒ}|rt||ƒSt|ƒSdSrN)r‚rˆrœ©r{r-rLrLrMr3c s r3cCs tƒp tƒSrN)r‚r�rLrLrLrMr5p sr5c CsBi}z ddl}Wnty&|YS0zú| |jd¡}| |d¡d}|�rt| |d¡dƒ}d|vr|d|vr|d |¡}| d¡D]J}| dd¡\}}t  d |¡sÈ|d vr¸d |}n|d krÈd |}|||<q†|  d ¡�rt  dd|d ¡}|  d¡�pþ||d<|  d¡�p||d<|  ¡Wnt ttf�y<Yn0|S)Nrú;Software\Microsoft\Windows\CurrentVersion\Internet SettingsÚ ProxyEnableZ ProxyServerrÃrGzhttp={0};https={0};ftp={0}rVz (?:[^/:]+)://)rßr›r r\Zsockszsocks://z ^socks://z socks4://rßr›)ÚwinregÚ ImportErrorÚOpenKeyÚHKEY_CURRENT_USERÚ QueryValueExrÖrŠr_rnrYr¤rxÚCloserrrBrÀ)r-r¡ÚinternetSettingsÚ proxyEnableZ proxyServerÚprÊÚaddressrLrLrMÚgetproxies_registryu sL   ÿÿÿÿÿ      r«cCs tƒp tƒSrN)r‚r«rLrLrLrMr5¦ scCs„z ddl}Wnty YdS0z6| |jd¡}| |d¡d}t| |d¡dƒ}WntylYdS0|rv|szdSt||ƒS)NrFrŸr Z ProxyOverride)r¡r¢r£r¤r¥rÖrrr˜)r{r¡r§r¨Z proxyOverriderLrLrMÚproxy_bypass_registry¯ s.  ÿÿÿÿÿ  r¬cCs tƒ}|rt||ƒSt|ƒSdSrN)r‚rˆr¬ržrLrLrMr3à s )NNN)N)~r4rÅrärŠZ http.clientrßrr[Ú posixpathrnrärr×r‡r^rXr?Z urllib.errorrrrÚ urllib.parserrrrr r r r r rrrrrrrrrZurllib.responserrrDr¢rCÚ__all__Ú version_infor±rFrår0r1rar6r7roÚASCIIrwr|rrr2rr/rrr)rr r!r"r#r$r%Úurandomr‰r&r'r(r§r)r¿rçrErbrr.rr�r*rãr+r,r-rDr`Z nturl2pathr4r3r"r8r9rlrÌrmrBrnrErorprr‚rˆr–r˜ÚplatformZ_scproxyršr›rœr�r3r5r«r¬rLrLrLrMÚTsØP  ÿ M ?m$q!+@ o  v  +3:5! @W  _ %@    1