Your IP : 216.73.216.213


Current Path : /opt/alt/python38/lib/python3.8/site-packages/wheel/__pycache__/
Upload File :
Current File : //opt/alt/python38/lib/python3.8/site-packages/wheel/__pycache__/wheelfile.cpython-38.pyc

U

c�a��@s�ddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
ZddlmZmZmZddlmZddlmZmZmZmZmZmZejdkr�dd	lmZd
d�Zndd�Ze� d
ej!�Z"ddd�Z#Gdd�de�Z$dS)�)�print_functionN)�OrderedDict)�log)�ZIP_DEFLATED�ZipInfo�ZipFile)�
WheelError)�urlsafe_b64decode�
as_unicode�native�urlsafe_b64encode�as_bytes�StringIO)�)�
TextIOWrappercCst�t|ddd��S)N��utf-8)�newline�encoding)�csv�readerr)�fp�r�@/opt/alt/python38/lib/python3.8/site-packages/wheel/wheelfile.py�read_csvsrccs$t�|�D]}dd�|D�Vq
dS)NcSsg|]}|�d��qS)r)�decode)�.0�columnrrr�
<listcomp>szread_csv.<locals>.<listcomp>)rr)r�linerrrrszt^(?P<namever>(?P<name>.+?)-(?P<ver>.+?))(-(?P<build>\d[^-]*))?
     -(?P<pyver>.+?)-(?P<abi>.+?)-(?P<plat>.+?)\.whl$cCs,ttj�d|pt����}t�|�dd�S)N�SOURCE_DATE_EPOCHr�)�int�os�environ�get�time�gmtime)�	timestamprrr�get_zipinfo_datetime#sr)c@sReZdZdZejZdefdd�Zddd�Z	dd	�Z
dd
d�Zddd
�Zdd�Z
dS)�	WheelFilez�A ZipFile derivative class that also reads SHA-256 hashes from
    .dist-info/RECORD and checks any read files against those.
    �rc
Cs�tj�|�}t�|�|_|�d�r,|jdkr:td�|���t	j
||||dd�d�|j�d��|_|jd|_
t�|_i|_|dk�r�d	|j|j
<d	|j|j
d
<d	|j|j
d<z|�|j
�}Wn$tk
r�td�|j
���YnX|��t|�D]�}|\}}}	|�sq�|�d
�\}
}zt�|
�Wn$tk
�rLtd�|
���YnX|
��dk�rjtd�|
���|
t|�d��f|j|<q�W5QRXdS)Nz.whlzBad wheel filename {!r}T)�compression�
allowZip64z{}.dist-infoZnameverz/RECORDr+)NNz.jwsz.p7szMissing {} file�=zUnsupported hash algorithm: {}>�md5�sha1z4Weak hash algorithm ({}) is not permitted by PEP 427�ascii)r#�path�basename�
WHEEL_INFO_RE�matchZparsed_filename�endswithr�formatr�__init__�groupZdist_info_path�record_pathr�_file_hashes�_file_sizes�open�KeyErrorr�split�hashlib�new�
ValueError�lowerr	�encode)�self�file�moder,r3�recordrr2Zhash_sum�size�	algorithmrrrr81sH

���zWheelFile.__init__Ncs�d�����fdd�	}tt|t�r(|jn|��|dkr\��d�s\�|jkr\td�t�����t	�
||||��|dkr���d�s�|j�\}��dk	r�t�|���j
|��_
�S)NcsR|dkr�j}�|�n
�||���|�|rN����krNtd�t�����dS)NzHash mismatch for file '{}')�_eof�update�digestrr7r)�newdata�eof�ZefZef_nameZ
expected_hashZrunning_hashZupdate_crc_origrr�_update_crc^s


z#WheelFile.open.<locals>._update_crcr+�/zNo hash found for file '{}')N)r
�
isinstancer�filenamer6r;rr7rrr=r@rArQ)rEZname_or_inforG�pwdrQrJrrPrr=]s�
zWheelFile.openc	Cs�t�d|j|�g}t�|�D]�\}}}|��t|�D]r}tj�tj�	||��}tj�
|�r8tj�||��tjj
d�}||jkr�q8|�d�r�|�||f�q8|�||�q8q|��|D]\}}|�||�q�dS)Nz#creating '%s' and adding '%s' to itrRz
.dist-info)�logger�inforTr#�walk�sort�sortedr2�normpath�join�isfile�relpath�replace�sepr:r6�append�write)	rE�base_dirZdeferred�root�dirnames�	filenames�namer2�arcnamerrr�write_filesxs 

zWheelFile.write_filesc	Cs~t|d��}t�|���}|��}W5QRXt|p4|t|j�d�}t�	|j
�t�|j
�Bd>|_|ph|j
|_|�|||�dS)N�rb��	date_time�)r=r#�fstat�fileno�readrr)�st_mtime�stat�S_IMODE�st_mode�S_IFMT�
external_attrr,�
compress_type�writestr)rErTrhrw�f�st�data�zinforrrrb�szWheelFile.writecCsrt�||||�t|t�r |jn|}t�d|�||jkrn|�|�}|j	t
t|����f|j
|<t|�|j|<dS)Nzadding '%s')rrxrSrrTrVrWr:�_default_algorithmrgrrrMr;�lenr<)rE�zinfo_or_arcname�bytesrw�fname�hash_rrrrx�s�

zWheelFile.writestrcs��jdk	r��jdkr��jr�t�}tj|dddd�}|��fdd��j��D��|�t	�j
�ddf�tt�j
�t
�d	�}�j|_d
|_��|t|����t���dS)N�w�,�"�
)�	delimiterZ	quotecharZlineterminatorc3s.|]&\}\}}||d|�j|fVqdS)r.N)r<)rr�rJr��rErr�	<genexpr>�s

�
�z"WheelFile.close.<locals>.<genexpr>rrki�)rrGr;rr�writerZ	writerows�itemsZwriterowr7r:rrr)r,rwrvrxr
�getvaluer�close)rEr{r�r|rr�rr��s�zWheelFile.close)r+N)NN)N)�__name__�
__module__�__qualname__�__doc__r@Zsha256r}rr8r=rirbrxr�rrrrr**s,




r*)N)%�
__future__rrr@�os.pathr#�rerr�sysr&�collectionsr�	distutilsrrV�zipfilerrrZ	wheel.clirZ
wheel.utilr	r
rrr
r�version_info�iorr�compile�VERBOSEr4r)r*rrrr�<module>s, 

�