/usr/local/lib/python3.6/site-packages/distlib/__pycache__
NameSizeModeActions
compat.cpython-36.pyc315800644editdlrm
database.cpython-36.pyc430950644editdlrm
index.cpython-36.pyc170910644editdlrm
locators.cpython-36.pyc385820644editdlrm
manifest.cpython-36.pyc103070644editdlrm
markers.cpython-36.pyc52970644editdlrm
metadata.cpython-36.pyc276730644editdlrm
resources.cpython-36.pyc108460644editdlrm
scripts.cpython-36.pyc115000644editdlrm
util.cpython-36.pyc518470644editdlrm
version.cpython-36.pyc208310644editdlrm
wheel.cpython-36.pyc277940644editdlrm
__init__.cpython-36.pyc9970644editdlrm
Edit: /usr/local/lib/python3.6/site-packages/distlib/__pycache__/wheel.cpython-36.pyc (27794B)
3 0Dg˫@sddlmZddlZddlZddlZddlmZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlmZmZddlmZmZmZmZmZddlmZddlmZmZmZdd l m!Z!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.e/Z0da1e2ed r,d Z3n*ej4j5d r@dZ3nej4dkrRdZ3ndZ3ej6dZ7e7sxdej8ddZ7de7Z9e3e7Z:e*j;ddj;ddZddZ=nddZ?e?Z=[?e j@de jAe jBBZCe j@de jAe jBBZDe j@dZEe j@d ZFd!ZGd"ZHe jId#kr[^-]+) -(?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?r@fsrDcCs|jtjdS)NrB)replaceossep)rCr?r?r@rDhsr,cCs"trddtjDStjjSdS)NcSsg|] }|dqS)rr?).0sr?r?r@ tsz!_get_suffixes..)impZ get_suffixes importlib machineryEXTENSION_SUFFIXESr?r?r?r@ _get_suffixesrsrOcCsHtrtj||Stjj||}tjj|}|tj|<|jj ||SdS)N) rKZ load_dynamicrLutilspec_from_file_locationmodule_from_specr8modulesloader exec_module)namepathspecmoduler?r?r@ _load_dynamicys    rZc@s6eZdZddZddZddZd dd Zd d ZdS) MountercCsi|_i|_dS)N) impure_wheelslibs)selfr?r?r@__init__szMounter.__init__cCs||j|<|jj|dS)N)r\r]update)r^pathname extensionsr?r?r@adds z Mounter.addcCs4|jj|}x"|D]\}}||jkr|j|=qWdS)N)r\popr])r^rarbkvr?r?r@removes  zMounter.removeNcCs||jkr|}nd}|S)N)r])r^fullnamerWresultr?r?r@ find_modules zMounter.find_modulecCsh|tjkrtj|}nN||jkr,td|t||j|}||_|jdd}t|dkrd|d|_|S)Nzunable to find extension for %sr(rr) r8rSr] ImportErrorrZ __loader__rsplitlen __package__)r^rhrir<r?r?r@ load_modules       zMounter.load_module)N)__name__ __module__ __qualname__r_rcrgrjrpr?r?r?r@r[s  r[c@seZdZdZd4ZdZd5ddZedd Zed d Z ed d Z e ddZ ddZ e ddZddZd6ddZddZddZddZd7ddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd8d,d-Zd.d/Zd0d1Zd9d2d3ZdS):Wheelz@ Class to build and install from Wheel files (PEP 427). rsha256NFcCs8||_||_d|_tg|_dg|_dg|_tj|_ |dkrRd|_ d|_ |j |_ ntj|}|r|jd}|d|_ |djd d |_ |d |_|j |_ ntjj|\}}tj|}|std ||rtjj||_ ||_ |jd}|d|_ |d|_ |d |_|d jd|_|djd|_|djd|_dS)zB Initialise an instance using a (valid) filename. r3noneanyNdummyz0.1nmZvnr'r&ZbnzInvalid name or filename: %rr%r(Zbiar)signZ should_verifybuildverPYVERpyverabiarchrFgetcwddirnamerVversionfilename _filenameNAME_VERSION_REmatch groupdictrErWsplit FILENAME_RErabspath)r^rr{verifyr/inforr?r?r@r_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. r&r3r(r'z%s-%s%s-%s-%s-%s.whl)r|r;r~rrrrErV)r^r|r~rrrr?r?r@rs    zWheel.filenamecCstjj|j|j}tjj|S)N)rFrWr;rrisfile)r^rWr?r?r@existssz Wheel.existsccs@x:|jD]0}x*|jD] }x|jD]}|||fVq WqWqWdS)N)r~rr)r^r~rrr?r?r@tagss   z Wheel.tagsc Cstjj|j|j}d|j|jf}d|}tjd}t |d}|j |t t g}d}x`|D]X}y>t j||} |j| } || } t| d}|rPWdQRXWq\tk rYq\Xq\W|stddj|WdQRX|S)Nz%s-%sz %s.dist-infozutf-8r)fileobjz8Invalid wheel, because metadata is missing: looked in %sz, )rFrWr;rrrVrcodecs getreaderrget_wheel_metadatarr posixpathopenr KeyError ValueError) r^raname_verinfo_dirwrapperzffnsrifnmetadata_filenamebfwfr?r?r@metadatas,        zWheel.metadatac CsXd|j|jf}d|}tj|d}|j|}tjd|}t|}WdQRXt|S)Nz%s-%sz %s.dist-infoWHEELzutf-8) rVrrr;rrrrdict)r^rrrrrrmessager?r?r@rs  zWheel.get_wheel_metadatac Cs6tjj|j|j}t|d}|j|}WdQRX|S)Nr)rFrWr;rrrr)r^rarrir?r?r@r#s z Wheel.infoc Cstj|}|r||j}|d|||d}}d|jkrBt}nt}tj|}|rfd|jd }nd}||}||}nT|jd}|jd} |dks|| krd} n|||dd krd } nd} t| |}|S) Nspythonw r  rr$s ) SHEBANG_RErendlowerSHEBANG_PYTHONWSHEBANG_PYTHONSHEBANG_DETAIL_REgroupsfind) r^datar/rshebangZdata_after_shebangZshebang_pythonargsZcrlfZtermr?r?r@process_shebang*s,       zWheel.process_shebangc Csh|dkr|j}ytt|}Wn tk r<td|YnX||j}tj|jdj d}||fS)NzUnsupported hash algorithm: %r=ascii) hash_kindgetattrhashlibAttributeErrorrdigestbase64urlsafe_b64encoderstripdecode)r^rrZhasherrir?r?r@get_hashHs zWheel.get_hashc CsHt|}|j|ddft|}x|D]}|j|q(WWdQRXdS)Nr3)listr6rwriterow)r^records record_pathZarchive_record_pathwriterrowr?r?r@ write_recordSs   zWheel.write_recordc Csg}|\}}xX|D]P\}}t|d} | j} WdQRXd|j| } tjj|} |j|| | fqWtjj|d}ttjj|d}|j ||||j||fdS)Nrbz%s=%sRECORD) rreadrrFrWgetsizer6r;to_posixr) r^rlibdir archive_pathsrdistinforappfrrsizer?r?r@ write_recordsZs  zWheel.write_recordsc CsJt|dtj2}x*|D]"\}}tjd|||j||qWWdQRXdS)NwzWrote %s to %s in wheel)rzipfile ZIP_DEFLATEDloggerdebugwrite)r^rarrrrr?r?r@ build_zipjszWheel.build_zipc"s|dkr i}ttfddd(d}|dkrFd}tg}tg}tg}nd}tg}d g}d g}|jd ||_|jd ||_|jd ||_ |} d|j |j f} d| } d| } g} xd)D]}|krq|}t j j|rxt j|D]\}}}x|D]}tt j j||}t j j||}tt j j| ||}| j||f|dkr|jd rt|d}|j}WdQRX|j|}t|d}|j|WdQRXqWqWqW| }d}xt j|D]\}}}||kr"x@t|D]4\}}t|}|jdrt j j||}||=PqW|s"tdxP|D]H}t|jd*r@q(t j j||}tt j j||}| j||fq(WqWt j|}xJ|D]B}|d+krtt j j||}tt j j| |}| j||fqWd|p|jd td!|g}x*|jD] \}}}|jd"|||fqWt j j|d}t|d#}|jd$j|WdQRXtt j j| d}| j||fd%d&} t | | d'} |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?)rC)pathsr?r@rDxszWheel.build..purelibplatlibrfalsetruervrwr~rrz%s-%sz%s.dataz %s.dist-inforheadersscriptsz.exerwbz .dist-infoz(.dist-info directory expected, not found.pyc.pyor INSTALLERSHAREDrzWheel-Version: %d.%dzGenerator: distlib %szRoot-Is-Purelib: %sz Tag: %s-%s-%sr cSs*|d}|jd}d|kr"|d7}||fS)NrrBz .dist-infoi')count)trnr?r?r@sorters  zWheel.build..sorter)key)rr)rrr)rr)rrrr)%rr IMPVERABIARCHr}getr~rrrVrrFrWisdirwalkr r;relpathrr6endswithrrrr enumerateAssertionErrorlistdir wheel_versionrrsortedrrrr)"r^rrrZlibkeyis_pureZ default_pyverZ default_abiZ default_archrrdata_dirrrrrWrootdirsfilesrrrprrrridnwheel_metadatar~rrrrar?)rr@buildps      "          z Wheel.buildcCs |jdS)zl Determine whether an archive entry should be skipped when verifying or installing. rB /RECORD.jws)rBr )r)r^arcnamer?r?r@ skip_entryszWheel.skip_entrycCIKs|j}|jd}|jdd}|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 jdd}tdd|D}||jkr|r||j||ddkr|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 |_zyx|jD]}#|#j}$t|$tr|$}%n |$jd }%|j |%r q||%}|dr|6jd;i}?|>sD|?r|jdd}@tjj>|@sft?d<|@|_x6|>j@D]*\}:}<|5jC||}|r:|!j.||5jD|!|d?||5St0k rxt'jEd@|jFYnXWd tGjH|"XWd QRXd S)Ba~ 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. If kwarg ``bytecode_hashed_invalidation`` is True, written bytecode will try to use file-hash based invalidation (PEP-552) on supported interpreter versions (CPython 3.7+). The return value is a :class:`InstalledDistribution` instance unless ``options.lib_only`` is True, in which case the return value is ``None``. warnerlib_onlyFZbytecode_hashed_invalidationz%s-%sz%s.dataz %s.dist-inforrzutf-8rNz Wheel-Versionr(rcSsg|] }t|qSr?)int)rHrr?r?r@rJsz!Wheel.install..zRoot-Is-Purelibrrr)streamrr3r)dry_runTr$zsize mismatch for %s=zdigest mismatch for %szlib_only: skipping %sz.exerBposixirzdigest mismatch on write for %sz.py)hashed_invalidationzByte-compilation failed)exc_infozlib_only: returning Nonez1.0zentry_points.txtconsoleguiz %s_scriptszwrap_%sz%s:%sz [%s],zAUnable to read legacy script metadata, so cannot generate scriptsrbzpython.commandsz8Unable to read JSON metadata, so cannot generate scriptsZ wrap_consoleZwrap_guizValid script path not specifiedz%s = %slibprefixzinstallation failed.)rr)IrrrFrWr;rrrVrrrrrrrrrtuplerrrrecordr8dont_write_bytecodetempfilemkdtemp source_dir target_dirinfolist isinstancer rr str file_sizerrr startswithrrrr copy_streamchmod external_attrr6 byte_compile Exceptionwarningbasenamemakeset_executable_modeextendrrvaluesrsuffixflagsjsonloadrritemsr rZwrite_shared_locationsZwrite_installed_files exceptionrollbackshutilrmtree)Cr^rmakerkwargsrr r Zbc_hashed_invalidationrarrr metadata_namewheel_metadata_name record_namerrbwfrrZwvZ file_versionrrrreaderrrZdata_pfxZinfo_pfxZ script_pfxfileopZbcoutfilesworkdirzinfor  u_arcnamekindvaluerr'rZ is_scriptwhereroutfileZ newdigestZpycrZworknamer filenamesdistcommandsepZepdatarrer+rfrIconsole_scripts gui_scriptsZ script_dirscriptoptionsr?r?r@installsB             "                                       z Wheel.installcCs8tdkr4tjjttddtjdd}t|atS)Nz dylib-cachez%s.%sr$) cacherFrWr;rr$r8r9r)r^baser?r?r@_get_dylib_caches$zWheel._get_dylib_cachecCsrtjj|j|j}d|j|jf}d|}tj|d}tj d}g}t |d}y|j |}||} t j | } |j} | j|jdd} tjj| j| } tjj| stj| x| jD]\}}tjj| t|}tjj|sd}n6tj|j}tjj|}|j|}tj|j}||k}|r.|j|| |j||fqWWdQRXWntk rbYnXWdQRX|S) Nz%s-%sz %s.dist-infoZ EXTENSIONSzutf-8rF)Z use_abspathT)rFrWr;rrrVrrrrrrr4r5rV prefix_to_dirrUrmakedirsr6rrstatst_mtimedatetime fromtimestampgetinfo date_timeextractr6r)r^rarrr rrirrrrbrTrZ cache_baserVrdestr_Z file_timerZ wheel_timer?r?r@_get_extensionss>             zWheel._get_extensionscCst|S)zM Determine if a wheel is compatible with the running system. ) is_compatible)r^r?r?r@rbszWheel.is_compatiblecCsdS)zP Determine if a wheel is asserted as mountable by its metadata. Tr?)r^r?r?r@ is_mountableszWheel.is_mountablecCstjjtjj|j|j}|js2d|}t||jsJd|}t||t jkrbt j d|nN|rtt jj |nt jj d||j}|rtt jkrt jj ttj||dS)Nz)Wheel %s not compatible with this Python.z$Wheel %s is marked as not mountable.z%s already in pathr)rFrWrr;rrrbrrcr8rrr6insertra_hook meta_pathrc)r^r6ramsgrbr?r?r@mounts"   z Wheel.mountcCsrtjjtjj|j|j}|tjkr2tjd|nr?rrr@rrrrArrrEr rFrGrHrr'rr?r?r@r5sN              z Wheel.verifycKsdd}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 }|| krqjd |krtd || j| | tjj| t|}|| |<qjWWd QRX|| |\}}|| f|}|r|| |\}}|r(||kr(||||d krRtjd d| d\}}tj|n*tjj|sltd|tjj||j}t| j}tjj| |}||f}|j|| ||j|||d krtj||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|dj}||fS)Nz%s/%sz %s/PKG-INFO)rW)rr r)path_maprrrWrr?r?r@ get_version~s  z!Wheel.update..get_versionc Ssd}y|t||jd}|dkr*d|}nTdd||ddjdD}|dd7<d|d|djd d |Df}Wn tk rtjd |YnX|rt|d }||_|j t }|j ||d tjd||dS)Nr&rz%s+1cSsg|] }t|qSr?)r)rHrIr?r?r@rJsz8Wheel.update..update_version..rr(z%s+%scss|]}t|VqdS)N)r$)rHrr?r?r@ sz7Wheel.update..update_version..z0Cannot update non-compliant (PEP-440) version %r)rW)rWlegacyzVersion updated from %r to %rr) rrrr;rrrr rrrr)rrWupdatedrr<Zmdrmr?r?r@update_versions$   (   z$Wheel.update..update_versionz%s-%sz %s.dist-inforrzutf-8z..zinvalid entry in wheel: %rNz.whlz wheel-update-)r2rdirzNot a directory: %r)rFrWr;rrrVrrrrr"r#r rrr_rrmkstempcloserrr6rrr9copyfile)r^modifierdest_dirr<rkrorarrr?rDrrjrEr rFrWZoriginal_versionr'modifiedcurrent_versionfdnewpathrrrr?r?r@r`msT               z Wheel.update)rr)NFF)N)NN)F)N)rqrrrs__doc__rrr_propertyrrrrrrrrrrrrrr rSrVrarbrcrhrirr`r?r?r?r@rts6 )       uj"  8rtcCs^ddl}|j}g}|ddkrZx0|djdD]}|j|jrHt|ndq0Wt|}|S)Nrglibcrr()platformlibc_verrr6isdigitrr)r}verrirIr?r?r@_get_glibc_versions rc sGdddfddttjjd&d'D}g}x.tD]$}|jdr8|j|jdddq8W|jt d kr||j d t |jd g}t g}tj d krzt jd t }|rz|j\}}}} t|}| g} | d(kr| jd| d)kr| jd| d*kr| jd| d+kr| jd| d,kr,| jdxL|d krxx2| D]*} d|||| f} | t kr>|j| q>W|d8}q.Wxt|D]z\} }t|}g}| d kr|}tdkr|jd-krdt|j}||kr|j|x|D]}x|D]} |jdjt|f|| f|d krtj jdr| jdd} t}t|dkr|d.krx|jdjt|f|d| f|d/kr|jdjt|f|d | f|d0kr|jdjt|f|d"| f|jdjt|f|d#|d |d| ffqWqWqWx`t|D]T\} }t|}|jdjt|fd d$f| d kr|jdjt|d fd d$fqWx`t|D]T\} }t|}|jdjd%|fd d$f| d krr|jdjd%|d fd d$fqrWt|S)1zG Return (pyver, abi, arch) tuples compatible with this Python. c@seZdZddZddZdS)z!compatible_tags.._VersioncSs,||_||f|_djt|t|f|_dS)Nr3)major major_minorr;r$string)r^rminorr?r?r@r_s z*compatible_tags.._Version.__init__cSs|jS)N)r)r^r?r?r@__str__sz)compatible_tags.._Version.__str__N)rqrrrsr_rr?r?r?r@_Versionsrcsg|]}tjj|qSr?)r8r9r)rH minor_version)rr?r@rJsz#compatible_tags..rz.abir(r$rvrdarwinz(\w+)_(\d+)_(\d+)_(\w+)$i386ppcfatx86_64Zfat3ppc64fat64intel universalz %s_%s_%s_%sr"r,rr3linuxZlinux_z manylinux1_%s zmanylinux2010_%szmanylinux2014_%szmanylinux_%s_%s_%srwr%rr)rr)rrr)rr)rr)rrrrr)r,r$)r$r)r$r)r$r)ranger8r9rrOr&r6rsortrrdrr}rerrrrr$r7rrr;rErrnset)versionsabisr2riarchesr/rVrrrmatchesrrIrZversion_objectrZadd_abisZlimited_api_abirr<r?)rr@compatible_tagss                         6 $ $rcCs^t|tst|}d}|dkr"t}x6|D].\}}}||jkr(||jkr(||jkr(d}Pq(W|S)NFT)r#rtCOMPATIBLE_TAGSr~rr)wheelrrirrrr?r?r@rbBs rb)N)Y __future__rrrr[emailrrr4loggingrFrrr9r8rrr3rrcompatrrr r r Zdatabaser rr rrrPrrrrrrrrrrrrr getLoggerrqrrThasattrr7r}r&r5r4r9r}rrErrrrAcompile IGNORECASEVERBOSErrrrrrrGrrKimportlib.machineryrLimportlib.utilrOrZobjectr[rertrrrrbr?r?r?r@s   0            %( c