Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 ÝPf˘ã@sŠddlmZddlZddlZddlZddlZddlmZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlZddlmZmZddlmZmZmZmZmZddlmZddlm Z m!Z!dd l"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+dd l,m-Z-m.Z.e j/e0ƒZ1da2e3ed ƒ�r4d Z4n*ej5j6d ƒ�rHdZ4nej5dk�rZdZ4ndZ4ej7dƒZ8e8�s€dej9dd…Z8de8Z:e4e8Z;ej"j<ƒj=ddƒj=ddƒZ>ej7dƒZ?e?�rÔe?j6dƒ�rÔe?j=ddƒZ?ndd„Z@e@ƒZ?[@ejAdejBejCBƒZDejAdejBejCBƒZEejAdƒZFejAd ƒZGd!ZHd"ZIe jJd#k�r>d$d%„ZKnd&d%„ZKGd'd(„d(eLƒZMeMƒZNGd)d*„d*eLƒZOd+d,„ZPePƒZQ[Pd/d-d.„ZRdS)0é)Úunicode_literalsN)Úmessage_from_fileé)Ú __version__ÚDistlibException)Ú sysconfigÚZipFileÚfsdecodeÚ text_typeÚfilter)ÚInstalledDistribution)ÚMetadataÚMETADATA_FILENAME) Ú FileOperatorÚ convert_pathÚ CSVReaderÚ CSVWriterÚCacheÚcached_propertyÚget_cache_baseÚ read_exportsÚtempdir)ÚNormalizedVersionÚUnsupportedVersionErrorZpypy_version_infoZppÚjavaZjyZcliZipÚcpÚpy_version_nodotz%s%séÚpyú-Ú_Ú.ÚSOABIzcpython-cCsRdtg}tjdƒr|jdƒtjdƒr0|jdƒtjdƒdkrH|jdƒd j|ƒS) NrÚPy_DEBUGÚdÚ WITH_PYMALLOCÚmZPy_UNICODE_SIZEéÚuÚ)Ú VER_SUFFIXrÚget_config_varÚappendÚjoin)Úparts©r/ú/usr/lib/python3.6/wheel.pyÚ _derive_abi;s     r1zz (?P[^-]+) -(?P\d+[^-]*) (-(?P\d+[^-]*))? -(?P\w+\d+(\.\w+\d+)*) -(?P\w+) -(?P\w+(\.\w+)*) \.whl$ z7 (?P[^-]+) -(?P\d+[^-]*) (-(?P\d+[^-]*))?$ s \s*#![^\r\n]*s^(\s*#!("[^"]+"|\S+))\s+(.*)$s#!pythons #!pythonwú/cCs|S)Nr/)Úor/r/r0Ú]sr4cCs|jtjdƒS)Nr2)ÚreplaceÚosÚsep)r3r/r/r0r4_sc@s6eZdZdd„Zdd„Zdd„Zd dd „Zd d „ZdS) ÚMountercCsi|_i|_dS)N)Ú impure_wheelsÚlibs)Úselfr/r/r0Ú__init__cszMounter.__init__cCs||j|<|jj|ƒdS)N)r9r:Úupdate)r;ÚpathnameÚ extensionsr/r/r0Úaddgs z Mounter.addcCs4|jj|ƒ}x"|D]\}}||jkr|j|=qWdS)N)r9Úpopr:)r;r>r?ÚkÚvr/r/r0Úremoveks  zMounter.removeNcCs||jkr|}nd}|S)N)r:)r;ÚfullnameÚpathÚresultr/r/r0Ú find_moduleqs zMounter.find_modulecCsj|tjkrtj|}nP||jkr,td|ƒ‚tj||j|ƒ}||_|jddƒ}t|ƒdkrf|d|_ |S)Nzunable to find extension for %sr!rr) ÚsysÚmodulesr:Ú ImportErrorÚimpZ load_dynamicÚ __loader__ÚrsplitÚlenÚ __package__)r;rErGr.r/r/r0Ú load_modulexs       zMounter.load_module)N)Ú__name__Ú __module__Ú __qualname__r<r@rDrHrQr/r/r/r0r8bs  r8c@sæeZdZdZd2ZdZd3dd„Zedd „ƒZed d „ƒZ ed d „ƒZ e dd„ƒZ dd„Z e dd„ƒZdd„Zd4dd„Zdd„Zdd„Zdd„Zd5dd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd6d*d+„Zd,d-„Zd.d/„Zd7d0d1„ZdS)8ÚWheelz@ Class to build and install from Wheel files (PEP 427). rZsha256NFcCs8||_||_d|_tg|_dg|_dg|_tjƒ|_ |dkrRd|_ d|_ |j |_ nâtj|ƒ}|rš|jdƒ}|d|_ |djd d ƒ|_ |d |_|j |_ nštjj|ƒ\}}tj|ƒ}|sÄtd |ƒ‚|rÖtjj|ƒ|_ ||_ |jdƒ}|d|_ |d|_ |d |_|d jdƒ|_|djdƒ|_|djdƒ|_dS)zB Initialise an instance using a (valid) filename. r)ÚnoneÚanyNZdummyz0.1ZnmZvnr rZbnzInvalid name or filename: %rrr!ZbiÚar)ÚsignZ should_verifyÚbuildverÚPYVERÚpyverÚabiÚarchr6ÚgetcwdÚdirnameÚnameÚversionÚfilenameZ _filenameÚNAME_VERSION_REÚmatchÚ groupdictr5rFÚsplitÚ FILENAME_RErÚabspath)r;rcrYÚverifyr&Úinfor`r/r/r0r<�sB            zWheel.__init__cCs^|jrd|j}nd}dj|jƒ}dj|jƒ}dj|jƒ}|jjddƒ}d|j|||||fS)zJ Build and return a filename from the various components. rr)r!r z%s-%s%s-%s-%s-%s.whl)rZr-r\r]r^rbr5ra)r;rZr\r]r^rbr/r/r0rc¹s     zWheel.filenamecCstjj|j|jƒ}tjj|ƒS)N)r6rFr-r`rcÚisfile)r;rFr/r/r0ÚexistsÊsz Wheel.existsccs@x:|jD]0}x*|jD] }x|jD]}|||fVq WqWqWdS)N)r\r]r^)r;r\r]r^r/r/r0ÚtagsÏs   z Wheel.tagscCsætjj|j|jƒ}d|j|jf}d|}tjdƒ}t |dƒ�ž}|j |ƒ}|dj ddƒ}t dd „|Dƒƒ}|d krzd } nt } y8tj|| ƒ} |j| ƒ�} || ƒ} t| d �} WdQRXWn tk rÖtd | ƒ‚YnXWdQRX| S)Nz%s-%sz %s.dist-infozutf-8Úrz Wheel-Versionr!rcSsg|] }t|ƒ‘qSr/)Úint)Ú.0Úir/r/r0ú ßsz"Wheel.metadata..ZMETADATA)Zfileobjz$Invalid wheel, because %s is missing)rr)r6rFr-r`rcrarbÚcodecsÚ getreaderrÚget_wheel_metadatargÚtuplerÚ posixpathÚopenr ÚKeyErrorÚ ValueError)r;r>Úname_verÚinfo_dirÚwrapperÚzfÚwheel_metadataÚwvÚ file_versionÚfnÚmetadata_filenameÚbfÚwfrGr/r/r0ÚmetadataÖs(     zWheel.metadatac CsXd|j|jf}d|}tj|dƒ}|j|ƒ�}tjdƒ|ƒ}t|ƒ}WdQRXt|ƒS)Nz%s-%sz %s.dist-infoÚWHEELzutf-8) rarbrxr-ryrtrurÚdict)r;rr|r}r„r…r†Úmessager/r/r0rvîs  zWheel.get_wheel_metadatac Cs6tjj|j|jƒ}t|dƒ�}|j|ƒ}WdQRX|S)Nro)r6rFr-r`rcrrv)r;r>rrGr/r/r0rk÷s z Wheel.infoc CsÔtj|ƒ}|r||jƒ}|d|…||d…}}d|jƒkrBt}nt}tj|ƒ}|rfd|jƒd }nd}||}||}nT|jdƒ}|jdƒ} |dks || kr¦d} n|||d…d krÀd } nd} t| |}|S) Nspythonwó róó ó rrs éÿÿÿÿ) Ú SHEBANG_REreÚendÚlowerÚSHEBANG_PYTHONWÚSHEBANG_PYTHONÚSHEBANG_DETAIL_REÚgroupsÚfind) r;Údatar&r‘ZshebangZdata_after_shebangZshebang_pythonÚargsZcrZlfZtermr/r/r0Úprocess_shebangþs,       zWheel.process_shebangc Csh|dkr|j}ytt|ƒ}Wn tk r<td|ƒ‚YnX||ƒjƒ}tj|ƒjdƒj dƒ}||fS)NzUnsupported hash algorithm: %ró=Úascii) Ú hash_kindÚgetattrÚhashlibÚAttributeErrorrÚdigestÚbase64Zurlsafe_b64encodeÚrstripÚdecode)r;r˜r�ÚhasherrGr/r/r0Úget_hashs zWheel.get_hashc Csbt|ƒ}ttjj||ƒƒ}|j|ddfƒ|jƒt|ƒ�}x|D]}|j|ƒqBWWdQRXdS)Nr)) ÚlistÚto_posixr6rFÚrelpathr,ÚsortrZwriterow)r;ÚrecordsZ record_pathÚbaseÚpÚwriterÚrowr/r/r0Ú write_record's  zWheel.write_recordc Cs²g}|\}}tt|jƒ}xX|D]P\}} t| dƒ�} | jƒ} WdQRXd|j| ƒ} tjj| ƒ} |j || | fƒqWtjj |dƒ} |j || |ƒt tjj |dƒƒ}|j || fƒdS)NÚrbz%s=%sÚRECORD) ržrŸr�ryÚreadr¦r6rFÚgetsizer,r-r°r¨)r;rkÚlibdirÚ archive_pathsr«Údistinfor}r¥Úapr­Úfr˜r¡Úsizer/r/r0Ú write_records0s   zWheel.write_recordsc CsJt|dtjƒ�2}x*|D]"\}}tjd||ƒ|j||ƒqWWdQRXdS)NÚwzWrote %s to %s in wheel)rÚzipfileZ ZIP_DEFLATEDÚloggerÚdebugÚwrite)r;r>r¶rr¸r­r/r/r0Ú build_zip@szWheel.build_zipc!s¢|dkr i}tt‡fdd„d%ƒƒd}|dkrFd}tg}tg}tg}nd}tg}d g}d g}|jd |ƒ|_|jd |ƒ|_|jd |ƒ|_ ˆ|} d|j |j f} d| } d| } g} xöd&D]î}|ˆkrÆq¸ˆ|}t j j|ƒr¸xÊt j|ƒD]¼\}}}x°|D]¨}tt j j||ƒƒ}t j j||ƒ}tt j j| ||ƒƒ}| j||fƒ|dk�rö|jdƒ �röt|dƒ�}|jƒ}WdQRX|j|ƒ}t|dƒ�}|j|ƒWdQRX�qöWqæWq¸W| }d}xÆt j|ƒD]¸\}}}||k�r"x@t|ƒD]4\}}t|ƒ}|jdƒ�rÜt j j||ƒ}||=P�qÜW|�s"tdƒ‚xP|D]H}t|ƒjd'ƒ�r@�q(t j j||ƒ}tt j j||ƒƒ}| j||fƒ�q(W�q¾Wt j|ƒ}xJ|D]B}|d(k�rŠtt j j||ƒƒ}tt j j| |ƒƒ}| j||fƒ�qŠWd|�pÜ|jd td!|g}x*|jD] \}}}|jd"|||fƒ�qöWt j j|dƒ}t|d#ƒ�}|jd$j|ƒƒWdQRXtt j j| dƒƒ}| j||fƒ|j || f| | ƒt j j|j!|j"ƒ} |j#| | ƒ| S))z‰ Build a wheel from files in specified paths, and use any specified tags when determining the name of the wheel. Ncs|ˆkS)Nr/)r3)Úpathsr/r0r4NszWheel.build..ÚpurelibÚplatlibrZfalseÚtruerVrWr\r]r^z%s-%sz%s.dataz %s.dist-infor˜ÚheadersÚscriptsz.exer±Úwbz .dist-infoz(.dist-info directory expected, not foundú.pycú.pyor²Ú INSTALLERÚSHAREDrˆzWheel-Version: %d.%dzGenerator: distlib %szRoot-Is-Purelib: %sz Tag: %s-%s-%sr¼Ú )rÃrÄ)r˜rÆrÇ)rÉrÊ)r²rËrÌrˆ)$r§r ÚIMPVERÚABIÚARCHr[Úgetr\r]r^rarbr6rFÚisdirÚwalkr r-r©r¨r,Úendswithryr³ršrÀÚ enumerateÚAssertionErrorÚlistdirÚ wheel_versionrrnr»r`rcrÁ)!r;rÂrnrØZlibkeyZis_pureZ default_pyverZ default_abiZ default_archrµr|Údata_dirr}r¶ÚkeyrFÚrootÚdirsÚfilesrƒr­Úrpr¸r¹r˜r·rrÚdnr€r\r]r^r>r/)rÂr0ÚbuildFs”      "         z Wheel.buildcBIKs`|j}|jdƒ}|jddƒ}tjj|j|jƒ}d|j|jf}d|} d|} t j| t ƒ} t j| dƒ} t j| dƒ} t j d ƒ}t |d ƒ��Î}|j| ƒ�}||ƒ}t|ƒ}Wd QRX|d jd dƒ}tdd„|Dƒƒ}||jkrì|rì||j|ƒ|ddk�r|d}n|d}i}|j| ƒ�<}t|d��&}x|D]}|d}|||<�q.WWd QRXWd QRXt j| dƒ}t j| dƒ}t j| ddƒ}t|d�}d|_tj }g} tjƒ}!|!|_d |_�z��y^�xÀ|jƒD�]²}"|"j}#t|#tƒ�rä|#}$n |#jd ƒ}$|$j dƒ�rþ�qÆ||$}|d�r0t!|"j"ƒ|dk�r0t#d|$ƒ‚|d�r’|djddƒ\}%}&|j|#ƒ�}|j$ƒ}'Wd QRX|j%|'|%ƒ\}(})|)|&k�r’t#d|#ƒ‚|�r¸|$j&||fƒ�r¸t'j(d |$ƒ�qÆ|$j&|ƒ�oÎ|$j d!ƒ }*|$j&|ƒ�r|$jd"dƒ\}(}+},tjj||+t)|,ƒƒ}-n$|$| | fk�r�qÆtjj|t)|$ƒƒ}-|*�s|j|#ƒ�}|j*||-ƒWd QRX| j+|-ƒ| �r²|d�r²t|-d#ƒ�4}|j$ƒ}'|j%|'|%ƒ\}(}.|.|)k�r¨t#d$|-ƒ‚Wd QRX|�rx|-j d%ƒ�rxy|j,|-ƒ}/| j+|/ƒWn$t-k �rt'j.d&dd'�YnXnttjj/t)|#ƒƒ}0tjj|!|0ƒ}1|j|#ƒ�}|j*||1ƒWd QRXtjj|-ƒ\}2}0|2|_|j0|0ƒ}3|j1|3ƒ| j2|3ƒ�qÆW|�r–t'j(d(ƒd }4�n~d }5|j3d }|d)k�r~t j| d*ƒ}6y |j|6ƒ�}t4|ƒ}7Wd QRXi}5xxd|=�s |>�r´|jddƒ}?tjj;|?ƒ�s.tW|>�r´d,di}Ax8|>j=ƒD],\}9};d8|9|;f}@|j0|@|Aƒ}3|j1|3ƒ�q„Wtjj|| ƒ}t>|ƒ}4t?|ƒ}|d=|d=||d9<|4j@||ƒ}|�r| j+|ƒ|4jA| |d:|ƒ|4St-k �r@t'jBd;ƒ|jCƒ‚YnXWd tDjE|!ƒXWd QRXd S)=aÁ Install a wheel to the specified paths. If kwarg ``warner`` is specified, it should be a callable, which will be called with two tuples indicating the wheel version of this software and the wheel version in the file, if there is a discrepancy in the versions. This can be used to issue any warnings to raise any exceptions. If kwarg ``lib_only`` is True, only the purelib/platlib files are installed, and the headers, scripts, data and dist-info metadata are not written. The return value is a :class:`InstalledDistribution` instance unless ``options.lib_only`` is True, in which case the return value is ``None``. ÚwarnerÚlib_onlyFz%s-%sz%s.dataz %s.dist-inforˆr²zutf-8roNz Wheel-Versionr!rcSsg|] }t|ƒ‘qSr/)rp)rqrrr/r/r0rsÑsz!Wheel.install..zRoot-Is-PurelibrÅrÃrÄ)Ústreamrr)rÇ)Údry_runTz /RECORD.jwsrzsize mismatch for %sú=zdigest mismatch for %szlib_only: skipping %sz.exer2r±zdigest mismatch on write for %sz.pyzByte-compilation failed)Úexc_infozlib_only: returning Nonez1.0zentry_points.txtÚconsoleÚguiz %s_scriptszwrap_%sz%s:%sz %szAUnable to read legacy script metadata, so cannot generate scriptsr?zpython.commandsz8Unable to read JSON metadata, so cannot generate scriptsZ wrap_consoleZwrap_guizValid script path not specifiedz%s = %sÚlibÚprefixzinstallation failed.)rçrè)FrärÑr6rFr-r`rcrarbrxrrtrurryrrgrwrØrrÚrecordrIÚdont_write_bytecodeÚtempfileZmkdtempZ source_dirZ target_dirÚinfolistÚ isinstancer r¤rÔÚstrÚ file_sizerr³r¦Ú startswithr¾r¿rZ copy_streamr,Z byte_compileÚ ExceptionZwarningÚbasenameZmakeZset_executable_modeÚextendrkrÚvaluesrêÚsuffixÚflagsÚjsonÚloadrÒr{Úitemsr r‰Zwrite_shared_locationsZwrite_installed_filesZ exceptionZrollbackÚshutilZrmtree)Br;rÂZmakerÚkwargsrärárâr>r|rÙr}Ú metadata_nameÚwheel_metadata_nameÚ record_namer~rÚbwfr†rŠr�r‚rµr«r…Úreaderr¯r­Zdata_pfxZinfo_pfxZ script_pfxZfileopZbcZoutfilesÚworkdirÚzinfoÚarcnameÚ u_arcnameÚkindÚvaluer˜r r¡Z is_scriptÚwhererÞZoutfileZ newdigestZpycrƒZworknamerßÚ filenamesZdistZcommandsZepZepdatarÚrBr$rCÚsZconsole_scriptsZ gui_scriptsZ script_dirZscriptZoptionsr/r/r0Úinstall®sB            "                                          z Wheel.installcCs4tdkr0tjjtƒtdƒtjdd…ƒ}t|ƒatS)Nz dylib-cacheé) Úcacher6rFr-rrðrIrbr)r;r¬r/r/r0Ú_get_dylib_cache’s zWheel._get_dylib_cachecCsltjj|j|jƒ}d|j|jf}d|}tj|dƒ}tj dƒ}g}t |dƒ��}yô|j |ƒ�à}||ƒ} t j | ƒ} |jƒ} | j|ƒ} tjj| j| ƒ} tjj| ƒsªtj| ƒxŽ| jƒD]‚\}}tjj| t|ƒƒ}tjj|ƒsàd}n6tj|ƒj}tjj|ƒ}|j|ƒ}tj|jŽ}||k}|�r(|j|| ƒ|j||fƒq´WWdQRXWntk �r\YnXWdQRX|S)Nz%s-%sz %s.dist-infoZ EXTENSIONSzutf-8roT)r6rFr-r`rcrarbrxrtrurryrùrúrZ prefix_to_dirr¬rÒÚmakedirsrûrrmÚstatÚst_mtimeÚdatetimeZ fromtimestampZgetinfoZ date_timeÚextractr,rz)r;r>r|r}rr~rGrr…r†r?rrêZ cache_baserar©ÚdestrZ file_timerkZ wheel_timer/r/r0Ú_get_extensions›s>              zWheel._get_extensionscCst|ƒS)zM Determine if a wheel is compatible with the running system. )Ú is_compatible)r;r/r/r0r½szWheel.is_compatiblecCsdS)zP Determine if a wheel is asserted as mountable by its metadata. Tr/)r;r/r/r0Ú is_mountableÃszWheel.is_mountablecCs´tjjtjj|j|jƒƒ}|jƒs2d|}t|ƒ‚|jƒsJd|}t|ƒ‚|t jkrbt j d|ƒnN|rtt jj |ƒnt jj d|ƒ|jƒ}|r°tt jkr¤t jj tƒtj||ƒdS)Nz)Wheel %s not compatible with this Python.z$Wheel %s is marked as not mountable.z%s already in pathr)r6rFrir-r`rcrrrrIr¾r¿r,ÚinsertrÚ_hookÚ meta_pathr@)r;r,r>Úmsgr?r/r/r0ÚmountÉs"   z Wheel.mountcCsrtjjtjj|j|jƒƒ}|tjkr2tjd|ƒnr/r/r0ÚunmountÞs     z Wheel.unmountc'Cstjj|j|jƒ}d|j|jf}d|}d|}tj|tƒ}tj|dƒ}tj|dƒ}t j dƒ}t |dƒ��Œ} | j |ƒ�} || ƒ} t | ƒ} WdQRX| djd d ƒ} td d „| Dƒƒ}i}| j |ƒ�:}t|d ��$}x|D]}|d}|||<qØWWdQRXWdQRXxî| jƒD]â}|j}t|tƒ�r*|}n |jdƒ}d|k�rJtd|ƒ‚|jdƒ�rZ�q||}|d�rŒt|jƒ|dk�rŒtd|ƒ‚|d �r|d jdd ƒ\}}| j |ƒ�}|jƒ}WdQRX|j||ƒ\}}||k�rtd|ƒ‚�qWWdQRXdS)Nz%s-%sz%s.dataz %s.dist-inforˆr²zutf-8roz Wheel-Versionr!rcSsg|] }t|ƒ‘qSr/)rp)rqrrr/r/r0rsûsz Wheel.verify..)rãrz..zinvalid entry in wheel: %rz /RECORD.jwsrzsize mismatch for %sråzdigest mismatch for %s)r6rFr-r`rcrarbrxrrtrurryrrgrwrrîrïr r¤rrÔrðrñr³r¦)r;r>r|rÙr}rþrÿrr~rrr†rŠr�r‚r«r…rr¯r­rrrrrr˜r r¡r/r/r0rjêsT                z Wheel.verifycKsÜdd„}dd„}tjj|j|jƒ}d|j|jf}d|}tj|dƒ} tƒ��„} t |dƒ�€} i} xt| j ƒD]h} | j}t |t ƒr„|}n |j d ƒ}|| kr˜qjd |kr¬td |ƒ‚| j| | ƒtjj| t|ƒƒ}|| |<qjWWd QRX|| |ƒ\}}|| f|Ž}|�rÎ|| |ƒ\}}|�r(||k�r(|||ƒ|d k�rRtjd d| d�\}}tj|ƒn*tjj|ƒ�sltd|ƒ‚tjj||jƒ}t| jƒƒ}tjj| |ƒ}||f}|j|| |ƒ|j||ƒ|d k�rÎtj||ƒWd QRX|S)a‘ Update the contents of a wheel in a generic way. The modifier should be a callable which expects a dictionary argument: its keys are archive-entry paths, and its values are absolute filesystem paths where the contents the corresponding archive entries can be found. The modifier is free to change the contents of the files pointed to, add new entries and remove entries, before returning. This method will extract the entire contents of the wheel to a temporary location, call the modifier, and then use the passed (and possibly updated) dictionary to write a new wheel. If ``dest_dir`` is specified, the new wheel is written there -- otherwise, the original wheel is overwritten. The modifier should return True if it updated the wheel, else False. This method returns the same value the modifier returns. cSsHd}}d|tf}||kr$d|}||kr@||}t|d�j}||fS)Nz%s/%sz %s/PKG-INFO)rF)rr rb)Úpath_mapr}rbrFrÚr/r/r0Ú get_version1s  z!Wheel.update..get_versionc Ssâd}y|t|ƒ}|jdƒ}|dkr*d|}nTdd„||dd…jdƒDƒ}|dd7<d|d|…djd d „|Dƒƒf}Wn tk r tjd |ƒYnX|rÞt|d �}||_|j t ƒ }|j ||d �tjd||ƒdS)Nrrz%s+1cSsg|] }t|ƒ‘qSr/)rp)rqr r/r/r0rsCsz8Wheel.update..update_version..rr!z%s+%scss|]}t|ƒVqdS)N)rð)rqrrr/r/r0ú Fsz7Wheel.update..update_version..z0Cannot update non-compliant (PEP-440) version %r)rF)rFÚlegacyzVersion updated from %r to %rr�) rr—rgr-rr¾r¿r rbrÔrrÀ)rbrFÚupdatedrCrrr.Zmdr"r/r/r0Úupdate_version;s(       z$Wheel.update..update_versionz%s-%sz %s.dist-infor²rozutf-8z..zinvalid entry in wheel: %rNz.whlz wheel-update-)r÷rêÚdirzNot a directory: %r)r6rFr-r`rcrarbrxrrrîrïr r¤rrrríZmkstempÚcloserÒr§rûr»rÁrüZcopyfile)r;ZmodifierZdest_dirrýr r$r>r|r}rrrrrrrrFZoriginal_versionr ZmodifiedZcurrent_versionÚfdÚnewpathr¶r·rkr/r/r0r= sX                z Wheel.update)rr)NFF)N)NN)F)N)rRrSrTÚ__doc__rØr�r<Úpropertyrcrmrnrr‡rvrkršr¦r°r»rÁràr rrrrrrrjr=r/r/r/r0rUˆs4 )        he "  6rUcCsštg}td}x6ttjddddƒD]}|jdj|t|ƒgƒƒq&Wg}x6tjƒD]*\}}}|j dƒrT|j|j ddƒdƒqTW|j ƒt dkrž|j dt ƒ|jdƒg}tg}tjdk�r tjd tƒ}|�r |jƒ\} }}} t|ƒ}| g} | dk�r| jd ƒ| dk�r| jdƒ| dk�r*| jdƒ| dk�r>| jdƒ| dk�rR| jdƒxL|dk�ržx2| D]*} d| ||| f} | tk�rd|j| ƒ�qdW|d8}�qTWx<|D]4}x,|D]$} |jdjt|dfƒ|| fƒ�q°W�q¦WxXt|ƒD]L\}}|jdjt|fƒddfƒ|dk�rè|jdjt|dfƒddfƒ�qèWxXt|ƒD]L\}}|jdjd|fƒddfƒ|dk�rB|jdjd|dfƒddfƒ�qBWt|ƒS)zG Return (pyver, abi, arch) tuples compatible with this Python. rrr)z.abir!rrVÚdarwinz(\w+)_(\d+)_(\d+)_(\w+)$Úi386ÚppcZfatÚx86_64Zfat3Úppc64Zfat64ÚintelZ universalz %s_%s_%s_%srWrr�r�)r,r-)r,r-r.)r/r.)r,r.)r,r.r0r-r/)r*ÚrangerIÚ version_infor,r-rðrLZ get_suffixesròrgrªrÏrrÐÚplatformÚrerer–rpÚ IMP_PREFIXrÕÚset)ZversionsÚmajorÚminorZabisr÷r rGZarchesr&rar^Zmatchesrer r]rrrbr/r/r0Úcompatible_tags…s`                    * $ $r9cCs^t|tƒst|ƒ}d}|dkr"t}x6|D].\}}}||jkr(||jkr(||jkr(d}Pq(W|S)NFT)rïrUÚCOMPATIBLE_TAGSr\r]r^)ZwheelrnrGZverr]r^r/r/r0rÈs r)N)SZ __future__rr¢rtrZdistutils.utilZ distutilsZemailrrŸrLrùZloggingr6rxr4rürIrír½r)rrÚcompatrrr r r Zdatabaser r‡r rÚutilrrrrrrrrrrbrrZ getLoggerrRr¾rÚhasattrr5r3ròr+r*r2r[rÎÚ get_platformr5rÐrÏr1ÚcompileÚ IGNORECASEÚVERBOSErhrdr�r•r”r“r7r¨Úobjectr8rrUr9r:rr/r/r/r0Ús†   ,          #>