[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.145.141.5: ~ $


�t�_���@s�ddlmZddlZddlZddlZddlZddlmZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlmZmZddlmZmZmZmZmZddlmZddlm Z m!Z!m"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/m0Z0ej1e2�Z3da4e5ed�r�dZ6n9ej7j8d
�r�dZ6nej7dkr�dZ6ndZ6ej9d�Z:e:r-dej;dd�Z:de:Z<e6e:Z=ej$j>�j?dd�j?dd�Z@ej9d�ZAeAo�eAj8d�r�eAj?dd�ZAndd�ZBeB�ZA[BejCdejDejEB�ZFejCdejDejEB�ZGejCd�ZHejCd �ZId!ZJd"ZKe
jLd#kr9d$d%�ZMnd&d%�ZMGd'd(�d(eN�ZOeO�ZPGd)d*�d*eN�ZQd+d,�ZReR�ZS[Rdd-d.�ZTdS)/�)�unicode_literalsN)�message_from_file�)�__version__�DistlibException)�	sysconfig�ZipFile�fsdecode�	text_type�filter)�InstalledDistribution)�Metadata�METADATA_FILENAME�WHEEL_METADATA_FILENAME�LEGACY_METADATA_FILENAME)	�FileOperator�convert_path�	CSVReader�	CSVWriter�Cache�cached_property�get_cache_base�read_exports�tempdir)�NormalizedVersion�UnsupportedVersionError�pypy_version_info�pp�java�jy�cli�ip�cp�py_version_nodotz%s%s��py�-�_�.�SOABIzcpython-cCssdtg}tjd�r(|jd�tjd�rD|jd�tjd�dkrf|jd�d	j|�S)
Nr"�Py_DEBUG�d�
WITH_PYMALLOC�m�Py_UNICODE_SIZE��u�)�
VER_SUFFIXr�get_config_var�append�join)�parts�r7��/builddir/build/BUILDROOT/alt-python35-pip-20.2.4-1.el7.x86_64/opt/alt/python35/lib/python3.5/site-packages/pip/_vendor/distlib/wheel.py�_derive_abi<s


r9zz
(?P<nm>[^-]+)
-(?P<vn>\d+[^-]*)
(-(?P<bn>\d+[^-]*))?
-(?P<py>\w+\d+(\.\w+\d+)*)
-(?P<bi>\w+)
-(?P<ar>\w+(\.\w+)*)
\.whl$
z7
(?P<nm>[^-]+)
-(?P<vn>\d+[^-]*)
(-(?P<bn>\d+[^-]*))?$
s
\s*#![^\r\n]*s^(\s*#!("[^"]+"|\S+))\s+(.*)$s#!pythons	#!pythonw�/cCs|S)Nr7)�or7r7r8�<lambda>^sr<cCs|jtjd�S)Nr:)�replace�os�sep)r;r7r7r8r<`sc@sOeZdZdd�Zdd�Zdd�Zddd	�Zd
d�ZdS)�MountercCsi|_i|_dS)N)�
impure_wheels�libs)�selfr7r7r8�__init__ds	zMounter.__init__cCs!||j|<|jj|�dS)N)rArB�update)rC�pathname�
extensionsr7r7r8�addhs
zMounter.addcCsF|jj|�}x-|D]%\}}||jkr|j|=qWdS)N)rA�poprB)rCrFrG�k�vr7r7r8�removelszMounter.removeNcCs"||jkr|}nd}|S)N)rB)rC�fullname�path�resultr7r7r8�find_modulers	zMounter.find_modulecCs�|tjkrtj|}nr||jkr>td|��tj||j|�}||_|jdd�}t|�dkr�|d|_	|S)Nzunable to find extension for %sr(rr)
�sys�modulesrB�ImportError�impZload_dynamic�
__loader__�rsplit�len�__package__)rCrMrOr6r7r7r8�load_moduleys	
zMounter.load_module)�__name__�
__module__�__qualname__rDrHrLrPrYr7r7r7r8r@cs
r@c@sleZdZdZd4ZdZddddd�Zedd	��Zed
d��Z	edd
��Z
edd��Zdd�Z
edd��Zdd�Zddd�Zdd�Zdd�Zdd�Zdddd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zdd,d-�Zd.d/�Zd0d1�Zdd2d3�ZdS)5�Wheelz@
    Class to build and install from Wheel files (PEP 427).
    r�sha256NFcCs�||_||_d|_tg|_dg|_dg|_tj�|_	|dkr{d|_
d|_|j|_
n?tj|�}|r�|jd�}|d|_
|djd	d
�|_|d|_|j|_
n�tjj|�\}}tj|�}|std|��|r9tjj|�|_	||_
|jd�}|d|_
|d|_|d|_|d
jd�|_|djd�|_|djd�|_dS)zB
        Initialise an instance using a (valid) filename.
        r1�none�anyN�dummyz0.1�nmZvnr'r&ZbnzInvalid name or filename: %rr%r(Zbi�ar)�signZ
should_verify�buildver�PYVER�pyver�abi�archr>�getcwd�dirname�name�version�filename�	_filename�NAME_VERSION_RE�match�	groupdictr=rN�split�FILENAME_REr�abspath)rCrnrd�verifyr-�inforkr7r7r8rD�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&r1r(r'z%s-%s%s-%s-%s-%s.whl)rer5rgrhrirmr=rl)rCrergrhrirmr7r7r8rn�s	zWheel.filenamecCs+tjj|j|j�}tjj|�S)N)r>rNr5rkrn�isfile)rCrNr7r7r8�exists�szWheel.existsccsNxG|jD]<}x3|jD](}x|jD]}|||fVq*WqWq
WdS)N)rgrhri)rCrgrhrir7r7r8�tags�sz
Wheel.tagscCsMtjj|j|j�}d|j|jf}d|}tjd�}t	|d���}|j
|�}|djdd�}tdd	�|D��}t
tg}	d}
xt|	D]l}yQtj||�}|j|��)}
||
�}td
|�}
|
rPWdQRXWq�tk
rYq�Xq�W|
sBtddj|	���WdQRX|
S)
Nz%s-%sz%s.dist-infozutf-8�rz
Wheel-Versionr(rcSsg|]}t|��qSr7)�int)�.0�ir7r7r8�
<listcomp>�s	z"Wheel.metadata.<locals>.<listcomp>�fileobjz8Invalid wheel, because metadata is missing: looked in %sz, )r>rNr5rkrnrlrm�codecs�	getreaderr�get_wheel_metadatars�tuplerr�	posixpath�openr
�KeyError�
ValueError)rCrF�name_ver�info_dir�wrapper�zf�wheel_metadata�wv�file_version�fnsrO�fn�metadata_filename�bf�wfr7r7r8�metadata�s0


	zWheel.metadatac	Csvd|j|jf}d|}tj|d�}|j|��(}tjd�|�}t|�}WdQRXt|�S)Nz%s-%sz%s.dist-info�WHEELzutf-8)	rlrmr�r5r�r�r�r�dict)rCr�r�r�r�r�r��messager7r7r8r��s
zWheel.get_wheel_metadatac	CsGtjj|j|j�}t|d��}|j|�}WdQRX|S)Nr{)r>rNr5rkrnrr�)rCrFr�rOr7r7r8rwsz
Wheel.infocCs&tj|�}|r�|j�}|d|�||d�}}d|j�kr]t}nt}tj|�}|r�d|j�d
}nd}||}||}nv|jd�}|jd�}	|dks�||	kr�d}
n)|||d�d	krd	}
nd}
t|
|}|S)Nspythonw� r�s
s
rr$s
���)	�
SHEBANG_RErq�end�lower�SHEBANG_PYTHONW�SHEBANG_PYTHON�SHEBANG_DETAIL_RE�groups�find)rC�datar-r��shebangZdata_after_shebangZshebang_python�argsZcr�lfZtermr7r7r8�process_shebangs,!	

		zWheel.process_shebangcCs�|dkr|j}ytt|�}Wn"tk
rLtd|��YnX||�j�}tj|�jd�j	d�}||fS)NzUnsupported hash algorithm: %r�=�ascii)
�	hash_kind�getattr�hashlib�AttributeErrorr�digest�base64�urlsafe_b64encode�rstrip�decode)rCr�r��hasherrOr7r7r8�get_hash%s	
!zWheel.get_hashc
Csut|�}ttjj||��}|j|ddf�t|��%}x|D]}|j|�qSWWdQRXdS)Nr1)�list�to_posixr>rN�relpathr4r�writerow)rC�records�record_path�base�p�writer�rowr7r7r8�write_record0s
zWheel.write_recordcCs�g}|\}}tt|j�}xt|D]l\}}	t|	d��}
|
j�}WdQRXd|j|�}tjj|	�}
|j	|||
f�q+Wtjj
|d�}	|j||	|�ttjj
|d��}|j	||	f�dS)N�rbz%s=%s�RECORD)
r�r�r�r��readr�r>rN�getsizer4r5r�r�)rCrw�libdir�
archive_pathsr��distinfor�r��apr��fr�r��sizer7r7r8�
write_records8szWheel.write_recordscCs]t|dtj��A}x7|D]/\}}tjd||�|j||�qWWdQRXdS)N�wzWrote %s to %s in wheel)r�zipfile�ZIP_DEFLATED�logger�debug�write)rCrFr�r�r�r�r7r7r8�	build_zipHszWheel.build_zipc"s�|dkri}tt�fdd�d(��d}|dkrgd}tg}tg}tg}n!d}tg}d	g}d
g}|jd|�|_|jd|�|_|jd
|�|_	�|}	d|j
|jf}
d|
}d|
}g}
xDd)D]<}|�krq�|}tj
j|�rxtj|�D]�\}}}x�|D]�}ttj
j||��}tj
j||�}ttj
j|||��}|
j||f�|dkr_|jd�r_t|d��}|j�}WdQRX|j|�}t|d��}|j|�WdQRXq_WqIWqW|	}d}x�tj|�D]�\}}}||kr�xRt|�D]D\}}t|�}|jd�r�tj
j||�}||=Pq�W|s�td��xi|D]a}t|�jd*�rq�tj
j||�}ttj
j||��}|
j||f�q�WqdWtj|�}xc|D][}|d+krlttj
j||��}ttj
j||��}|
j||f�qlWd|p�|jd td!|g}x4|jD])\}}}|jd"|||f�q�Wtj
j|d�}t|d#��}|jd$j|��WdQRXttj
j|d��}|
j||f�d%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)Nr7)r;)�pathsr7r8r<VszWheel.build.<locals>.<lambda>�purelib�platlibr�false�truer_r`rgrhriz%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��
cSs9|d}|jd�}d|kr/|d7}||fS)Nrr:z
.dist-infoi')�count)�tr��nr7r7r8�sorter�s


zWheel.build.<locals>.sorter�key)r�r�)r�r�r�)r�r�)r�r�r�r�)%r�r�IMPVER�ABI�ARCHrf�getrgrhrirlrmr>rN�isdir�walkr	r5r�r�r4�endswithr�r�r�r��	enumerate�AssertionError�listdir�
wheel_versionrrz�sortedr�rkrnr�)"rCr�rzr�Zlibkey�is_pureZ
default_pyverZdefault_abiZdefault_archr�r��data_dirr�r�r�rN�root�dirs�filesr�r��rpr�r�r�r�r~�dnr�rgrhrir�rFr7)r�r8�buildNs�%					





 


zWheel.buildcCs
|jd�S)zl
        Determine whether an archive entry should be skipped when verifying
        or installing.
        r:�/RECORD.jws)r:r�)r�)rC�arcnamer7r7r8�
skip_entry�szWheel.skip_entrycCIKs�	|j}|jd�}|jdd�}|jdd�}tjj|j|j�}d|j|jf}	d|	}
d|	}t	j|t
�}t	j|d�}
t	j|d	�}tjd
�}t
|d���}|j|
��}||�}t|�}WdQRX|d
jdd�}tdd�|D��}||jkr]|r]||j|�|ddkrz|d}n
|d}i}|j|��E}td|��,}x"|D]}|d}|||<q�WWdQRXWdQRXt	j|
d�}t	j|d�}t	j|
dd�}td|�}d|_tj} g}!tj�}"|"|_d|_zy�x�|j�D]y}#|#j}$t|$t�r�|$}%n|$jd
�}%|j |%�r�qs||%}|dr�t!|#j"�|dkr�t#d|%��|drw|djdd�\}&}'|j|$��}|j$�}(WdQRX|j%|(|&�\})}*|*|'krwt#d|$��|r�|%j&||f�r�t'j(d |%�qs|%j&|�o�|%j)d!�}+|%j&|�r|%jd"d�\})},}-tjj||,t*|-��}.n0|%|
|fkr%qstjj|t*|%��}.|+sL|j|$��}|j+||.�WdQRX|!j,|.�|r�|dr�t|.d#��G}|j$�}(|j%|(|&�\})}/|/|*kr�t#d$|.��WdQRX| r�|.j)d%�r�y&|j-|.d&|�}0|!j,|0�Wq�t.k
rHt'j/d'd(d�Yq�Xqstjj0t*|$��}1tjj|"|1�}2|j|$��}|j+||2�WdQRXtjj|.�\}3}1|3|_|j1|1�}4|j2|4�|!j3|4�qsW|rt'j(d)�d}5n.d}6|j4d
}|d*kr+t	j|d+�}7y�|j|7��}t5|�}8WdQRXi}6x�d>D]�}9d.|9}:|:|8krri|6d/|9<};x^|8|:j6�D]L}<d0|<j7|<j8f}=|<j9r�|=d1d2j|<j9�7}=|=|;|<j<q�WqrWWq�t.k
r't'j/d3�Yq�XnxyV|j|��@}||�}t:j;|�jd4�}6|6ry|6jd5�}6WdQRXWnt.k
r�t'j/d6�YnX|6r�|6jd7i�}>|6jd8i�}?|>s�|?r�|jdd�}@tjj<|@�s	t=d9��|@|_xF|>j>�D]8\}:}<d:|:|<f}A|j1|A�}4|j2|4�qW|?r�d-di}BxI|?j>�D];\}:}<d:|:|<f}A|j1|A|B�}4|j2|4�qzWtjj||�}t?|�}5t@|�}|d=|d=||d;<|5jA||�}|r#	|!j,|�|5jB|!|d<|�|5SWn,t.k
rm	t'jCd=�|jD��YnXWdtEjF|"�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. If kwarg ``bytecode_hashed_invalidation`` is True, written
        bytecode will try to use file-hash based invalidation (PEP-552) on
        supported interpreter versions (CPython 2.7+).

        The return value is a :class:`InstalledDistribution` instance unless
        ``options.lib_only`` is True, in which case the return value is ``None``.
        �warner�lib_onlyFZbytecode_hashed_invalidationz%s-%sz%s.dataz%s.dist-infor�r�zutf-8r{Nz
Wheel-Versionr(rcSsg|]}t|��qSr7)r|)r}r~r7r7r8r�s	z!Wheel.install.<locals>.<listcomp>zRoot-Is-Purelibr�r�r��streamrr1r��dry_runTr$zsize mismatch for %s�=zdigest mismatch for %szlib_only: skipping %sz.exer:r�zdigest mismatch on write for %sz.py�hashed_invalidationzByte-compilation failed�exc_infozlib_only: returning Nonez1.0zentry_points.txt�console�guiz
%s_scriptszwrap_%sz%s:%sz [%s]�,zAUnable to read legacy script metadata, so cannot generate scriptsrGzpython.commandsz8Unable to read JSON metadata, so cannot generate scriptsZwrap_consoleZwrap_guizValid script path not specifiedz%s = %s�lib�prefixzinstallation failed.)rr)Gr�r�r>rNr5rkrnrlrmr�rr�r�rr�rrsr�r�rr�recordrQ�dont_write_bytecode�tempfile�mkdtemp�
source_dir�
target_dir�infolist�
isinstancer
r�r��str�	file_sizerr�r��
startswithr�r�r�r�copy_streamr4�byte_compile�	Exception�warning�basename�make�set_executable_mode�extendrwr�valuesr�suffix�flags�json�loadr�r��itemsrr�Zwrite_shared_locationsZwrite_installed_files�	exception�rollback�shutil�rmtree)CrCr��maker�kwargsr�r�r�Zbc_hashed_invalidationrFr�r�r��
metadata_name�wheel_metadata_name�record_namer�r��bwfr�r�r�r�r�r�r��readerr�r�Zdata_pfxZinfo_pfxZ
script_pfx�fileopZbc�outfiles�workdir�zinfor��	u_arcname�kind�valuer�r'r�Z	is_script�wherer��outfileZ	newdigestZpycr�Zworknamer��	filenames�dist�commands�epZepdatar�rJr+rK�s�console_scripts�gui_scriptsZ
script_dir�script�optionsr7r7r8�install�sF	





	
				
#


"
	
	

	


	

	




z
Wheel.installcCsNtdkrJtjjt�td�dtjdd��}t|�atS)Nzdylib-cachez%s.%sr$)	�cacher>rNr5rrrQ�version_infor)rCr�r7r7r8�_get_dylib_cache�s
zWheel._get_dylib_cachecCs�tjj|j|j�}d|j|jf}d|}tj|d�}tj	d�}g}t
|d��s}yW|j|��A}||�}	tj
|	�}
|j�}|j|�}tjj|j|�}
tjj|
�s�tj|
�x�|
j�D]�\}}tjj|
t|��}tjj|�sEd}nQtj|�j}tjj|�}|j|�}tj|j�}||k}|r�|j||
�|j||f�qWWdQRXWntk
r�YnXWdQRX|S)Nz%s-%sz%s.dist-infoZ
EXTENSIONSzutf-8r{T)r>rNr5rkrnrlrmr�r�r�rr�rrrA�
prefix_to_dirr�r��makedirsr rry�stat�st_mtime�datetime�
fromtimestamp�getinfo�	date_time�extractr4r�)rCrFr�r�r�r�rOr�r�r�rGr?rZ
cache_baserlr��destrJZ	file_timerwZ
wheel_timer7r7r8�_get_extensions�s>

	"
zWheel._get_extensionscCs
t|�S)zM
        Determine if a wheel is compatible with the running system.
        )�
is_compatible)rCr7r7r8rM�szWheel.is_compatiblecCsdS)zP
        Determine if a wheel is asserted as mountable by its metadata.
        Tr7)rCr7r7r8�is_mountable�szWheel.is_mountablecCs�tjjtjj|j|j��}|j�sId|}t|��|j�skd|}t|��|t	jkr�t
jd|�nm|r�t	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)r>rNrur5rkrnrMrrNrQr�r�r4�insertrL�_hook�	meta_pathrH)rCr4rF�msgrGr7r7r8�mount�s"'

zWheel.mountcCs�tjjtjj|j|j��}|tjkrItjd|�nTtjj	|�|t
jkrut
j	|�t
js�t
tjkr�tjj	t
�dS)Nz%s not in path)
r>rNrur5rkrnrQr�r�rLrPrArQ)rCrFr7r7r8�unmounts'
	z
Wheel.unmountc'Cs�tjj|j|j�}d|j|jf}d|}d|}tj|t�}tj|d�}tj|d�}t	j
d�}t|d��}	|	j|��}
||
�}t
|�}WdQRX|djd	d
�}
tdd�|
D��}i}|	j|��E}td
|��,}x"|D]}|d}|||<q-WWdQRXWdQRXx=|	j�D]/}|j}t|t�r�|}n|jd�}|jd�}d|kr�td|��|j|�r�qf||}|drt|j�|dkrtd|��|d
rf|d
jdd
�\}}|	j|��}|j�}WdQRX|j||�\}}||krftd|��qfWWdQRXdS)Nz%s-%sz%s.dataz%s.dist-infor�r�zutf-8r{z
Wheel-Versionr(rcSsg|]}t|��qSr7)r|)r}r~r7r7r8r!s	z Wheel.verify.<locals>.<listcomp>r�rr:z..zinvalid entry in wheel: %rr$zsize mismatch for %srzdigest mismatch for %s)r>rNr5rkrnrlrmr�rr�r�rr�rrsr�rrrr
r�rr�rrr�r�)rCrFr�r�r�r'r(r)r�r�r*r�r�r�r�r�r�r+r�r�r/r�r0r1r2r�r'r�r7r7r8rvsV



		

#

zWheel.verifycKs�dd�}dd�}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�d
|kr�td|��|j|
|
�tjj|
t|��}|||<q�WWdQRX|||�\}}|||�}|r�|||�\}}|r�||kr�|||�|dkr�tjd
dddd|
�\}}tj|�n:tjj|�s�td|��tjj||j�}t|j��}tjj|
|�}||f}|j||
|�|j||�|dkr�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.
        cSsbd}}d|tf}||kr0d|}||krX||}td|�j}||fS)Nz%s/%sz%s/PKG-INFOrN)rr
rm)�path_mapr�rmrNr�r7r7r8�get_versionYs


z!Wheel.update.<locals>.get_versionc
Ss%d}y�t|�}|jd�}|dkr=d|}nhdd�||dd�jd�D�}|dd7<d|d|�djd	d
�|D��f}Wn"tk
r�tjd|�YnX|r!td|�}||_|j	t
�}|jd|d
|�tjd||�dS)Nr&rz%s+1cSsg|]}t|��qSr7)r|)r}r9r7r7r8rks	z8Wheel.update.<locals>.update_version.<locals>.<listcomp>rr(z%s+%scss|]}t|�VqdS)N)r)r}r~r7r7r8�	<genexpr>nsz7Wheel.update.<locals>.update_version.<locals>.<genexpr>z0Cannot update non-compliant (PEP-440) version %rrN�legacyzVersion updated from %r to %rr�)rr�rsr5rr�r�r
rmr�rr�)rmrN�updatedrKr~r6ZmdrXr7r7r8�update_versioncs(
*$
		z$Wheel.update.<locals>.update_versionz%s-%sz%s.dist-infor�r{zutf-8z..zinvalid entry in wheel: %rNrz.whlrz
wheel-update-�dirzNot a directory: %r)r>rNr5rkrnrlrmr�rrrrr
r�rrJrr
�mkstemp�closer�r�r r�r�r#�copyfile)rC�modifier�dest_dirr&rVrZrFr�r�r)r.r�rUr/r�r0rNZoriginal_versionr'�modified�current_version�fd�newpathr�r�rwr7r7r8rEHsX

		

zWheel.update)rr)rZr[r\�__doc__r�r�rD�propertyrnryrzrr�r�rwr�r�r�r�r�r�r�r>rArLrMrNrSrTrvrEr7r7r7r8r]�s4) 	t�	"8r]cCsbtg}td}xGttjdddd�D](}|jdj|t|�g��q1Wg}xItj�D];\}}}|j	d�rp|j|j
dd�d�qpW|j�tdkr�|j
dt�|jd�g}tg}tjdkrtjd	t�}|r|j�\}	}}}
t|�}|
g}|
dkr^|jd�|
dkrw|jd�|
dkr�|jd�|
dkr�|jd�|
dkr�|jd�xZ|dkrx=|D]5}d|	|||f}
|
tkr�|j|
�q�W|d8}q�WxH|D]@}x7|D]/}
|jdjt|df�||
f�q3Wq&Wxtt|�D]f\}}|jdjt|f�ddf�|dkrw|jdjt|df�ddf�qwWxtt|�D]f\}}|jdjd|f�ddf�|dkr�|jdjd|df�ddf�q�Wt|�S)zG
    Return (pyver, abi, arch) tuples compatible with this Python.
    rrr1z.abir(r$r_�darwinz(\w+)_(\d+)_(\d+)_(\w+)$�i386�ppc�fat�x86_64Zfat3�ppc64�fat64�intel�	universalz%s_%s_%s_%sr`r%r�r�)rhri)rhrirk)rlrk)rhrk)rhrkrnrirl)r2�rangerQr@r4r5rrT�get_suffixesrrs�sortr�rOr��platform�rerqr�r|�
IMP_PREFIXr��set)�versions�major�minor�abisrr'rO�archesr-rlri�matchesrqr9rhr~rmr7r7r8�compatible_tags�s`	
$&!

		







1%-%-r}cCs�t|t�st|�}d}|dkr3t}xK|D]C\}}}||jkr:||jkr:||jkr:d}Pq:W|S)NFT)rr]�COMPATIBLE_TAGSrgrhri)�wheelrzrO�verrhrir7r7r8rM�s-rM)U�
__future__rr�r�rF�distutils.util�	distutils�emailrr�rTr�loggingr>r�rtr#rQr
r�r1rr�compatrrr	r
rZdatabaserr�r
rrr�utilrrrrrrrrrrmrr�	getLoggerrZr�r?�hasattrrursrr3r2r@rfr��get_platformr=r�r�r9�compile�
IGNORECASE�VERBOSErtrpr�r�r�r�r?r��objectr@rPr]r}r~rMr7r7r7r8�<module>s�("@			

'		#	���'>	

Filemanager

Name Type Size Permission Actions
__init__.cpython-35.pyc File 1.1 KB 0644
compat.cpython-35.pyc File 33.85 KB 0644
database.cpython-35.pyc File 44.5 KB 0644
index.cpython-35.pyc File 18.01 KB 0644
locators.cpython-35.pyc File 40.95 KB 0644
manifest.cpython-35.pyc File 10.95 KB 0644
markers.cpython-35.pyc File 4.81 KB 0644
metadata.cpython-35.pyc File 28.86 KB 0644
resources.cpython-35.pyc File 11.58 KB 0644
scripts.cpython-35.pyc File 11.56 KB 0644
util.cpython-35.pyc File 51.86 KB 0644
version.cpython-35.pyc File 22.13 KB 0644
wheel.cpython-35.pyc File 28.19 KB 0644