HEX
Server: Apache
System: Linux srv1.prosuiteplus.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: prosuiteplus (1001)
PHP: 8.3.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/wheel/__pycache__/wheelfile.cpython-38.pyc
U

�a�c��@s�ddlmZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZ
ddlmZmZmZddlmZddlmZmZmZmZmZmZe�dej�Zd
d	d
�ZGdd�de�ZdS)�)�print_functionN)�OrderedDict)�log)�ZIP_DEFLATED�ZipInfo�ZipFile)�
WheelError)�urlsafe_b64decode�
as_unicode�native�urlsafe_b64encode�as_bytes�StringIOz�^(?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	timestamp�r�1/usr/lib/python3/dist-packages/wheel/wheelfile.py�get_zipinfo_datetimesrc@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|��|D]�}|�d
�}|�dd�\}}}	|r�|�d�\}
}zt�|
�Wn$tk
�rVtd�|
���YnX|
��dk�rttd�|
���|
t|�d��f|j|<q�W5QRXdS)Nz.whlzBad wheel filename {!r}T)�compressionZ
allowZip64z{}.dist-infoZnameverz/RECORDr)NNz.jwsz.p7szMissing {} filezutf-8�,��=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�KeyError�decode�rsplit�split�hashlib�new�
ValueError�lowerr	�encode)�self�file�moderr$�record�liner#Zhash_sum�size�	algorithmrrrr)&sH

���zWheelFile.__init__Ncs�d�����fdd�	}t�||||��tt|t�r8|jn|��|dkr���d�s��|jkrltd�	t
�����|j�\}��dk	r�t�|���j
|��_
�S)NcsR|dkr�j}�|�n
�||���|�|rN����krNtd�t�����dS)NzHash mismatch for file '{}')Z_eof�update�digestrr(r)�newdata�eof�ZefZef_nameZ
expected_hashZrunning_hashZupdate_crc_origrr�_update_crcRs


z#WheelFile.open.<locals>._update_crcr�/zNo hash found for file '{}')N)rr.r
�
isinstancer�filenamer'r,rr(rr3r4rD)r8Zname_or_infor:�pwdrDr>rrCrr.Qs�

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 itrEz
.dist-info)�logger�inforGr�walk�sort�sortedr#�normpath�join�isfile�relpath�replace�sepr+r'�append�write)	r8Zbase_dirZdeferred�rootZdirnames�	filenames�namer#�arcnamerrr�write_filesls 

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)r8rGrYrg�f�st�data�zinforrrrU�szWheelFile.writecCsrt�||||�t|t�r |jn|}t�d|�||jkrn|�|�}|j	t
t|����f|j
|<t|�|j|<dS)Nzadding '%s')rrhrFrrGrIrJr+�_default_algorithmrXrrr@r,�lenr-)r8Zzinfo_or_arcname�bytesrg�fname�hash_rrrrh�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�wr�"�
)Z	delimiterZ	quotecharZlineterminatorc3s.|]&\}\}}||d|�j|fVqdS)rN)r-)�.0rpr>rq�r8rr�	<genexpr>�s

�
�z"WheelFile.close.<locals>.<genexpr>�r\i�)�fpr:r,r�csv�writerZ	writerows�itemsZwriterowr(r+rrrrrgrfrhr
�getvaluer�close)r8rkr{rlrrvrr~�s�zWheelFile.close)rN)NN)N)�__name__�
__module__�__qualname__�__doc__r3Zsha256rmrr)r.rZrUrhr~rrrrrs+




r)N) Z
__future__rrzr3�os.pathr�rerbr�collectionsrZ	distutilsrrIZzipfilerrrZ	wheel.clirZ
wheel.utilr	r
rrr
r�compile�VERBOSEr%rrrrrr�<module>s" �