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.opt-1.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)Z	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)�compressionZ
allowZip64z{}.dist-infoZnameverz/RECORDr*)NNz.jwsz.p7szMissing {} file�=zUnsupported hash algorithm: {}>�sha1�md5z4Weak 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+r1�recordrr0Zhash_sum�size�	algorithmrrrr61sH

���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 '{}')Z_eof�update�digestrr5r)�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�filenamer4r9rr5rrr;r>r?rN)rCZname_or_inforE�pwdrNrHrrMrr;]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 itrOz
.dist-info)�logger�inforQr#�walk�sort�sortedr0�normpath�join�isfile�relpath�replace�sepr8r4�append�write)	rC�base_dirZdeferred�rootZdirnames�	filenames�namer0�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�Z	date_time�)r;r#�fstat�fileno�readrr(�st_mtime�stat�S_IMODE�st_mode�S_IFMT�
external_attrr+�
compress_type�writestr)rCrQrdrr�f�st�data�zinforrrr_�szWheelFile.writecCsrt�||||�t|t�r |jn|}t�d|�||jkrn|�|�}|j	t
t|����f|j
|<t|�|j|<dS)Nzadding '%s')rrsrPrrQrSrTr8�_default_algorithmrcrrrJr9�lenr:)rCZzinfo_or_arcname�bytesrr�fname�hash_rrrrs�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{rHr|�rCrr�	<genexpr>�s

�
�z"WheelFile.close.<locals>.<genexpr>rrgi�)rrEr9rr�writerZ	writerows�itemsZwriterowr5r8rrr(r+rrrqrsr
�getvaluer�close)rCrvr�rwrr�rr��s�zWheelFile.close)r*N)NN)N)�__name__�
__module__�__qualname__�__doc__r>Zsha256rxrr6r;rer_rsr�rrrrr)*s,




r))N)%Z
__future__rrr>Zos.pathr#�rerm�sysr&�collectionsr�	distutilsrrSZzipfilerrrZ	wheel.clirZ
wheel.utilr	r
rrr
r�version_info�iorr�compile�VERBOSEr2r(r)rrrr�<module>s, 

�