Sindbad~EG File Manager
�
��abc@s�ddlmZddlZddlZddlZddlZddlmZddl Z ddl
Z
ddlZddlZddl
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.ej/e0�Z1e2a3e4ed�r�dZ5n9ej6j7d
�r�dZ5nej6dkr�dZ5ndZ5ej8d�Z9e9rdej:d Z9nde9Z;e5e9Z<ej"j=�j>dd�j>dd�Z?ej8d�Z@e@oze@j7d�r�e@j>dd�Z@nd�ZAeA�Z@[AejBdejCejDB�ZEejBdejCejDB�ZFejBd�ZGejBd�ZHd ZId!ZJe
jKd"kr$d#�ZLn d$�ZLd%eMfd&��YZNeN�ZOd'eMfd(��YZPd)�ZQeQ�ZR[Qe2d*�ZSdS(+i����(tunicode_literalsN(tmessage_from_filei(t__version__tDistlibException(t sysconfigtZipFiletfsdecodet text_typetfilter(tInstalledDistribution(tMetadatatMETADATA_FILENAME( tFileOperatortconvert_patht CSVReadert CSVWritertCachetcached_propertytget_cache_basetread_exportsttempdir(tNormalizedVersiontUnsupportedVersionErrorupypy_version_infouppujavaujyucliuipucpupy_version_nodotu%s%siupyu-u_u.uSOABIucpython-cCs|dtg}tjd�r+|jd�ntjd�rJ|jd�ntjd�dkro|jd�nd j|�S(
NucpuPy_DEBUGudu
WITH_PYMALLOCumuPy_UNICODE_SIZEiuuu(t
VER_SUFFIXRtget_config_vartappendtjoin(tparts((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyt_derive_abi;suz
(?P<nm>[^-]+)
-(?P<vn>\d+[^-]*)
(-(?P<bn>\d+[^-]*))?
-(?P<py>\w+\d+(\.\w+\d+)*)
-(?P<bi>\w+)
-(?P<ar>\w+(\.\w+)*)
\.whl$
u7
(?P<nm>[^-]+)
-(?P<vn>\d+[^-]*)
(-(?P<bn>\d+[^-]*))?$
s
\s*#![^\r\n]*s^(\s*#!("[^"]+"|\S+))\s+(.*)$s#!pythons #!pythonwu/cCs|S(N((to((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyt<lambda>]tcCs|jtjd�S(Nu/(treplacetostsep(R((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyR_RtMountercBs8eZd�Zd�Zd�Zdd�Zd�ZRS(cCsi|_i|_dS(N(t
impure_wheelstlibs(tself((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyt__init__cs cCs!||j|<|jj|�dS(N(R$R%tupdate(R&tpathnamet
extensions((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytaddgs
cCsI|jj|�}x0|D](\}}||jkr|j|=qqWdS(N(R$tpopR%(R&R)R*tktv((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytremovekscCs"||jkr|}nd}|S(N(R%tNone(R&tfullnametpathtresult((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytfind_moduleqs cCs�|tjkrtj|}nx||jkrAtd|��ntj||j|�}||_|jdd�}t|�dkr�|d|_ n|S(Nuunable to find extension for %su.ii(
tsystmodulesR%tImportErrortimptload_dynamict
__loader__trsplittlent__package__(R&R1R3R((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytload_modulexs N(t__name__t
__module__R'R+R/R0R4R>(((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyR#bs
tWheelcBseZdZdZdZdeed�Zed��Z ed��Z
ed��Zed��Z
d�Zed ��Zd
�Zdd�Zd�Zd
�Zd�Zddd�Zd�Zd�Zd�Zd�Zd�Zed�Zd�Zd�Zdd�ZRS(u@
Class to build and install from Wheel files (PEP 427).
iusha256cCs�||_||_d|_tg|_dg|_dg|_tj�|_ |dkr{d|_d|_|j
|_nEtj|�}|r�|jd�}|d|_|djdd �|_|d
|_|j
|_n�tjj|�\}}tj|�}|s!td|��n|r?tjj|�|_ n||_|jd�}|d|_|d|_|d
|_|djd
�|_|djd
�|_|djd
�|_dS(uB
Initialise an instance using a (valid) filename.
uunoneuanyudummyu0.1unmuvnu_u-ubnuInvalid name or filename: %rupyu.ubiuarN(tsignt
should_verifytbuildvertPYVERtpyvertabitarchR!tgetcwdtdirnameR0tnametversiontfilenamet _filenametNAME_VERSION_REtmatcht groupdictR R2tsplittFILENAME_RERtabspath(R&RMRBtverifytmtinfoRJ((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyR'�sB
cCs�|jrd|j}nd}dj|j�}dj|j�}dj|j�}|jjdd�}d|j|||||fS(uJ
Build and return a filename from the various components.
u-uu.u_u%s-%s%s-%s-%s-%s.whl(RDRRFRGRHRLR RK(R&RDRFRGRHRL((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyRM�s cCs+tjj|j|j�}tjj|�S(N(R!R2RRJRMtisfile(R&R2((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytexists�sccsNxG|jD]<}x3|jD](}x|jD]}|||fVq*WqWq
WdS(N(RFRGRH(R&RFRGRH((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyttags�scCs8tjj|j|j�}d|j|jf}d|}tjd�}t |d���}|j
|�}|djdd�}tg|D]}t
|�^q��} | dkr�d}
nt}
yItj||
�}|j|��"}||�}
td |
�}WdQXWn!tk
r-td
|
��nXWdQX|S(Nu%s-%su%s.dist-infouutf-8uru
Wheel-Versionu.iuMETADATAtfileobju$Invalid wheel, because %s is missing(ii(R!R2RRJRMRKRLtcodecst getreaderRtget_wheel_metadataRRttupletintRt posixpathtopenR
tKeyErrort
ValueError(R&R)tname_vertinfo_dirtwrappertzftwheel_metadatatwvtitfile_versiontfntmetadata_filenametbftwfR3((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytmetadata�s(
%
cCsud|j|jf}d|}tj|d�}|j|��(}tjd�|�}t|�}WdQXt|�S(Nu%s-%su%s.dist-infouWHEELuutf-8( RKRLRaRRbR\R]Rtdict(R&RhReRfRnRoRptmessage((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyR^�s
cCsFtjj|j|j�}t|d��}|j|�}WdQX|S(Nur(R!R2RRJRMRR^(R&R)RhR3((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyRW�scCstj|�}|r�|j�}|| ||}}d|j�krQt}nt}tj|�}|r�d|j�d}nd}||}||}ns|jd�}|jd�} |dks�|| kr�d}
n&|||d!d kr�d }
nd}
t|
|}|S(
Ntpythonwt i����Rs
s
iis
( t
SHEBANG_RERPtendtlowertSHEBANG_PYTHONWtSHEBANG_PYTHONtSHEBANG_DETAIL_REtgroupstfind(R&tdataRVRwtshebangtdata_after_shebangtshebang_pythontargstcrtlftterm((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytprocess_shebang�s,
cCs�|dkr|j}nytt|�}Wn!tk
rNtd|��nX||�j�}tj|�j d�j
d�}||fS(NuUnsupported hash algorithm: %rt=uascii(R0t hash_kindtgetattrthashlibtAttributeErrorRtdigesttbase64turlsafe_b64encodetrstriptdecode(R&R~R�thasherR3((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytget_hashs
!cCs~t|�}ttjj||��}|j|ddf�|j�t|��%}x|D]}|j|�q]WWdQXdS(Nu( tlisttto_posixR!R2trelpathRtsortRtwriterow(R&trecordstrecord_pathtbasetptwritertrow((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytwrite_record's
cCs�g}|\}}tt|j�}xs|D]k\}} t| d��}
|
j�}WdQXd|j|�}tjj| �}
|j |||
f�q+Wtjj
|d�} |j|| |�ttjj
|d��}|j || f�dS(Nurbu%s=%suRECORD(
R�R�R�RbtreadR�R!R2tgetsizeRRR�R�(R&RWtlibdirt
archive_pathsR�tdistinfoRfR�tapR�tfR~R�tsize((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyt
write_records0sc Cs\t|dtj��A}x7|D]/\}}tjd||�|j||�qWWdQXdS(NuwuWrote %s to %s in wheel(RtzipfiletZIP_DEFLATEDtloggertdebugtwrite(R&R)R�RhR�R�((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyt build_zip@sc!
s�|dkri}ntt�fd�d$��d}|dkrgd}tg}tg}tg}n!d}tg}dg}dg}|jd |�|_|jd
|�|_ |jd|�|_
�|} d|j|jf}
d
|
}d|
}g}
xKd%D]C}|�kr qn�|}t
jj|�rxt
j|�D]�\}}}x�|D]�}tt
jj||��}t
jj||�}tt
jj|||��}|
j||f�|dkrb|jd�rbt|d��}|j�}WdQX|j|�}t|d��}|j|�WdQXqbqbWqLWqqW| }d}xt
j|�D]�\}}}||kr�xUt|�D]G\}}t|�}|jd�r�t
jj||�}||=Pq�q�W|s�td��nxl|D]d}t|�jd&�rq�nt
jj||�}tt
jj||��}|
j||f�q�WqkWt
j|�}xf|D]^}|d'kr|tt
jj||��}tt
jj||��}|
j||f�q|q|Wd|p�|jdtd |g}x4|j D])\}}}|jd!|||f�qWt
jj|d�}t|d"��}|jd#j|��WdQXtt
jj|d��}|
j||f�|j!||f| |
�t
jj|j"|j#�} |j$| |
�| S((u�
Build a wheel from files in specified paths, and use any specified tags
when determining the name of the wheel.
cs
|�kS(N((R(tpaths(s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyRNRupurelibuplatlibiufalseutrueunoneuanyupyveruabiuarchu%s-%su%s.datau%s.dist-infoudatauheadersuscriptsu.exeurbNuwbu
.dist-infou(.dist-info directory expected, not foundu.pycu.pyouRECORDu INSTALLERuSHAREDuWHEELuWheel-Version: %d.%duGenerator: distlib %suRoot-Is-Purelib: %su
Tag: %s-%s-%suwu
(upurelibuplatlib(udatauheadersuscripts(u.pycu.pyo(uRECORDu INSTALLERuSHAREDuWHEEL(%R0R�RtIMPVERtABItARCHREtgetRFRGRHRKRLR!R2tisdirtwalkRRR�R�RtendswithRbR�R�R�t enumeratetAssertionErrortlistdirt
wheel_versionRRZR�RJRMR�(!R&R�RZR�tlibkeytis_puret
default_pyvertdefault_abitdefault_archR�Retdata_dirRfR�tkeyR2troottdirstfilesRmR�trpR�R�R~R�RktdnRiRFRGRHR)((R�s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytbuildFs� "
%
cCKs� |j}|jd�}|jdt�}tjj|j|j�}d|j|j f}d|} d|}
t
j|
t�}t
j|
d�}t
j|
d�}
tj
d�}t|d ���}|j|��}||�}t|�}Wd
QX|djdd
�}tg|D]}t|�^q�}||jkrY|rY||j|�n|ddkrv|d}n
|d}i}|j|
��D}td|��,}x"|D]}|d}|||<q�WWd
QXWd
QXt
j| d�}t
j|
d�}t
j| dd�}td|�}t|_tj} g}!tj�}"|"|_d
|_z*y�x�|j �D]�}#|#j}$t!|$t"�r�|$}%n|$j#d�}%|%j$d�r�qmn||%}|dr�t%|#j&�|dkr�t'd|%��n|d
r||d
jdd
�\}&}'|j|$��}|j(�}(Wd
QX|j)|(|&�\})}*|*|'kr|t'd|$��q|n|r�|%j*||f�r�t+j,d|%�qmn|%j*|�o�|%j$d�}+|%j*|�r|%jdd�\})},}-tjj||,t-|-��}.n3|%||
fkr0qmntjj|t-|%��}.|+sW|j|$��}|j.||.�Wd
QX|!j/|.�|r�|d
r�t|.d��J}|j(�}(|j)|(|&�\})}/|/|*kr�t'd |.��nWd
QXn| r�|.j$d!�r�y |j0|.�}0|!j/|0�WqTt1k
rPt+j2d"d#t�qTXq�qmtjj3t-|$��}1tjj|"|1�}2|j|$��}|j.||2�Wd
QXtjj|.�\}3}1|3|_|j4|1�}4|j5|4�|!j6|4�qmW|rt+j,d$�d
}5n:d
}6|j7d}|d%kr0t
j|
d&�}7y�|j|7��}t8|�}8Wd
QXi}6x�d8D]�}9d)|9}:|:|8kr{i|6d*|9<};x[|8|:j9�D]F}<d+|<j:|<j;f}=|<j<r�|=d,|<j<7}=n|=|;|<j<q�Wq{q{WWq�t1k
r,t+j2d-�q�XnyyX|j|��C}||�}t=j>|�jd.�}6|6r�|6jd/�}6nWd
QXWnt1k
r�t+j2d0�nX|6r�|6jd1i�}>|6jd2i�}?|>s�|?r�|jdd�}@tjj?|@�st@d3��n|@|_xF|>jA�D]8\}:}<d4|:|<f}A|j4|A�}4|j5|4�q(W|?r�itd(6}BxL|?jA�D];\}:}<d4|:|<f}A|j4|A|B�}4|j5|4�q�Wq�q�ntjj||
�}tB|�}5tC|�}|d=|d=||d5<|5jD||�}|r9 |!j/|�n|5jE|!|d6|�|5SWn+t1k
r� t+jFd7�|jG��nXWd
tHjI|"�XWd
QXd
S(9u�
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``.
uwarnerulib_onlyu%s-%su%s.datau%s.dist-infouWHEELuRECORDuutf-8urNu
Wheel-Versionu.iuRoot-Is-Purelibutrueupurelibuplatlibtstreamiuuscriptstdry_runu/RECORD.jwsiusize mismatch for %su=udigest mismatch for %sulib_only: skipping %su.exeu/urbudigest mismatch on write for %su.pyuByte-compilation failedtexc_infoulib_only: returning Noneu1.0uentry_points.txtuconsoleuguiu
%s_scriptsuwrap_%su%s:%su %suAUnable to read legacy script metadata, so cannot generate scriptsu
extensionsupython.commandsu8Unable to read JSON metadata, so cannot generate scriptsuwrap_consoleuwrap_guiuValid script path not specifiedu%s = %sulibuprefixuinstallation failed.(uconsoleugui(JR�R�tFalseR!R2RRJRMRKRLRaRR\R]RRbRRRR_R`R�RRtTruetrecordR5tdont_write_bytecodettempfiletmkdtempt
source_dirR0t
target_dirtinfolistt
isinstanceRR�R�tstrt file_sizeRR�R�t
startswithR�R�R
tcopy_streamRtbyte_compilet Exceptiontwarningtbasenametmaketset_executable_modetextendRWRtvaluestprefixtsuffixtflagstjsontloadR�RdtitemsR Rrtwrite_shared_locationstwrite_installed_filest exceptiontrollbacktshutiltrmtree(CR&R�tmakertkwargsR�twarnertlib_onlyR)ReR�Rft
metadata_nametwheel_metadata_nametrecord_nameRgRhtbwfRpRsRjRkRlR�R�RotreaderR�R�tdata_pfxtinfo_pfxt
script_pfxtfileoptbctoutfilestworkdirtzinfotarcnamet u_arcnametkindtvalueR~t_R�t is_scripttwhereR�toutfilet newdigesttpycRmtworknameR�t filenamestdisttcommandsteptepdataR�R-tdR.tstconsole_scriptstgui_scriptst
script_dirtscripttoptions((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytinstall�sD
%
#
"
cCsGtdkrCtjjt�td�tjd �}t |�antS(Nudylib-cachei(
tcacheR0R!R2RRR�R5RLR(R&R�((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyt_get_dylib_cache�s
c
Cs�tjj|j|j�}d|j|jf}d|}tj|d�}tj d�}g}t
|d��w}y\|j|��G}||�} tj
| �}
|j�}|j|�}tjj|j|�}
tjj|
�s�tj|
�nx�|
j�D]�\}}tjj|
t|��}tjj|�sHt}nQtj|�j}tjj|�}|j|�}tj|j�}||k}|r�|j||
�n|j||f�qWWdQXWntk
r�nXWdQX|S(Nu%s-%su%s.dist-infou
EXTENSIONSuutf-8ur( R!R2RRJRMRKRLRaR\R]RRbR�R�Rt
prefix_to_dirR�R�tmakedirsR�R
RYR�tstattst_mtimetdatetimet
fromtimestamptgetinfot date_timetextractRRc(R&R)ReRfR�RgR3RhRoRpR*RR�t
cache_baseRKR�tdestRt file_timeRWt
wheel_time((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyt_get_extensions�s>
!
cCs
t|�S(uM
Determine if a wheel is compatible with the running system.
(t
is_compatible(R&((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyR%�scCstS(uP
Determine if a wheel is asserted as mountable by its metadata.
(R�(R&((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytis_mountable�scCs
tjjtjj|j|j��}|j�sLd|}t|��n|j�sqd|}t|��n|t jkr�t
jd|�ns|r�t jj|�nt jj
d|�|j�}|rtt jkr�t jjt�ntj||�ndS(Nu)Wheel %s not compatible with this Python.u$Wheel %s is marked as not mountable.u%s already in pathi(R!R2RTRRJRMR%RR&R5R�R�RtinsertR$t_hookt meta_pathR+(R&RR)tmsgR*((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytmount�s"'
cCs�tjjtjj|j|j��}|tjkrItjd|�n]tjj |�|t
jkrxt
j |�nt
js�t
tjkr�tjj t
�q�ndS(Nu%s not in path(
R!R2RTRRJRMR5R�R�R/R(R$R)(R&R)((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytunmount�s' cCs�tjj|j|j�}d|j|jf}d|}d|}tj|t�}tj|d�}tj|d�}t j
d�}t|d��} | j|��}
||
�}t
|�}WdQX|djd d
�}
tg|
D]}t|�^q��}i}| j|��D}td|��,}x"|D]}|d}|||<q8WWdQXWdQXx<| j�D].}|j}t|t�r�|}n|jd�}d
|kr�td|��n|jd�r�qon||}|drt|j�|dkrtd|��n|d
ro|d
jdd
�\}}| j|��}|j�}WdQX|j||�\}}||kr�td|��q�qoqoWWdQXdS(Nu%s-%su%s.datau%s.dist-infouWHEELuRECORDuutf-8uru
Wheel-Versionu.iR�iu..uinvalid entry in wheel: %ru/RECORD.jwsiusize mismatch for %su=udigest mismatch for %s(R!R2RRJRMRKRLRaRR\R]RRbRRRR_R`RR�R�RR�RR�R�R�R�R�(R&R)ReR�RfR�R�R�RgRhR�RpRsRjRkRlR�RoR�R�R�R�R�R�R�RR~RR�((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyRU�sT
%
#
c
Ks�d�}d�}tjj|j|j�}d|j|jf}d|}tj|d�} t��(}
t |d���}i}x�|j
�D]�}
|
j}t|t�r�|}n|j
d�}|| kr�q�nd|kr�td |��n|j|
|
�tjj|
t|��}|||<q�WWd
QX|||�\}}|||�}|r�|||�\}}|r�||kr�|||�n|d
kr�tjddd
dd|
�\}}tj|�n=tjj|�s�td|��ntjj||j�}t|j��}tjj|
|�}||f}|j||
|�|j||�|d
kr�tj||�q�nWd
QX|S(u�
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}||kr3d|}n||kr^||}td|�j}n||fS(Nu%s/%su%s/PKG-INFOR2(R0RR
RL(tpath_mapRfRLR2R�((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytget_version1s
c Ss'd}y�t|�}|jd�}|dkr=d|}ngg||djd�D]}t|�^qU}|dcd7<d|| djd�|D��f}Wn!tk
r�tjd |�nX|r#t d
|�}||_
|jt�}|j
d
|d|�tjd||�ndS(
Nu-iu%s+1iu.i����u%s+%scss|]}t|�VqdS(N(R�(t.0Rk((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pys <genexpr>Fsu0Cannot update non-compliant (PEP-440) version %rR2tlegacyuVersion updated from %r to %r(R0RR}RRR`RRR�R�R
RLR�RR�( RLR2tupdatedR.RkRRtmdR0((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytupdate_version;s(
0
!
u%s-%su%s.dist-infouRECORDuruutf-8u..uinvalid entry in wheel: %rNR�u.whlR�u
wheel-update-tdiruNot a directory: %r(R!R2RRJRMRKRLRaRRR�R�RR�RRR
R0R�tmkstemptcloseR�R�R�R�R�R�tcopyfile(R&tmodifiertdest_dirR�R.R3R)ReRfR�R�RhR-R�R�R�R2toriginal_versionRtmodifiedtcurrent_versiontfdtnewpathR�R�RW((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyR( sX
(iiN(R?R@t__doc__R�R�R0R�R'tpropertyRMRYRZRRqR^RWR�R�R�R�R�R�RRR$R%R&R+R,RUR((((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyRA�s2) h � " 6cCs�tg}td}xGttjdddd�D](}|jdj|t|�g��q1Wg}xLtj�D]>\}}}|j d�rp|j|j
dd�d�qpqpW|j�tdkr�|j
dt�n|jd�g}tg}tjd kr=tjd
t�}|r=|j�\} }}}
t|�}|
g}|
dkrg|jd
�n|
dkr�|jd�n|
dkr�|jd�n|
dkr�|jd�n|
dkr�|jd�nx`|dkr6x@|D]8}d| |||f}
|
tkr�|j|
�q�q�W|d8}q�Wq=nxH|D]@}x7|D]/}
|jdjt|df�||
f�qQWqDWxwt|�D]i\}}|jdjt|f�ddf�|dkr�|jdjt|df�ddf�q�q�Wxwt|�D]i\}}|jdjd|f�ddf�|dkr|jdjd|df�ddf�qqWt|�S(uG
Return (pyver, abi, arch) tuples compatible with this Python.
iii����uu.abiu.iunoneudarwinu(\w+)_(\d+)_(\d+)_(\w+)$ui386uppcufatux86_64ufat3uppc64ufat64uintelu universalu%s_%s_%s_%suanyupy(ui386uppc(ui386uppcux86_64(uppc64ux86_64(ui386ux86_64(ui386ux86_64uinteluppcuppc64(RtrangeR5tversion_infoRRR�R8tget_suffixesR�RRR�R�R'R�tplatformtreRPR|R`t
IMP_PREFIXR�tset(tversionstmajortminortabisR�RR3tarchesRVRKRHtmatchesRPRRGRkRL((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pytcompatible_tags�s`
$&$
1%0%0cCs�t|t�st|�}nt}|dkr9t}nxN|D]F\}}}||jkr@||jkr@||jkr@t}Pq@q@W|S(N( R�RAR�R0tCOMPATIBLE_TAGSRFRGRHR�(twheelRZR3tverRGRH((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyR%�s -(Tt
__future__RR�R\Rtdistutils.utilt distutilstemailRR�R8R�tloggingR!RaRER�R5R�R�RRRtcompatRRRRRtdatabaseR RqR
RtutilRR
RRRRRRRRLRRt getLoggerR?R�R0RthasattrRFRDR�RRRBRER�tget_platformR R�R�Rtcompilet
IGNORECASEtVERBOSERSRORvR{RzRyR"R�tobjectR#R(RARNROR%(((s=/usr/lib/python2.7/site-packages/pip/_vendor/distlib/wheel.pyt<module>s�(@
' # ��� >
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists