HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.109.1.lve.el8.x86_64 #1 SMP Thu Mar 5 20:23:46 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/wheel/__pycache__/wheelfile.cpython-310.pyc
o

�N�g� �@sddlmZddlZddlZddlZddlZddlZddlZddl	m
Z
mZddlm
Z
mZmZddlmZmZmZddlmZddlmZmZmZeroddlmZmZmZdd	lmZeeej efZ!Gd
d�deee�Z"e�#dej$�Z%d
Z&dddd�Z'Gdd�de�Z(dS)�)�annotationsN)�StringIO�
TextIOWrapper)�IO�
TYPE_CHECKING�Literal)�ZIP_DEFLATED�ZipFile�ZipInfo)�
WheelError)�log�urlsafe_b64decode�urlsafe_b64encode)�Protocol�Sized�Union)�Bufferc@seZdZdS)�SizedBufferN)�__name__�
__module__�__qualname__�rr�C/opt/saltstack/salt/lib/python3.10/site-packages/wheel/wheelfile.pyrsrz�^(?P<namever>(?P<name>[^\s-]+?)-(?P<ver>[^\s-]+?))(-(?P<build>\d[^\s-]*))?
     -(?P<pyver>[^\s-]+?)-(?P<abi>[^\s-]+?)-(?P<plat>\S+)\.whl$i���	timestamp�float | NonecCs6ttj�d|p
t����}t|t�}t�|�dd�S)N�SOURCE_DATE_EPOCHr�)�int�os�environ�get�time�max�MINIMUM_TIMESTAMP�gmtime)rrrr�get_zipinfo_datetime$s
r%c@sfeZdZdZejZdefd(d	d
�Z		d)d*dd�Z	d+dd�Z
		d,d-dd �Z	d.d/d$d%�Zd&d'�Z
dS)0�	WheelFilez�A ZipFile derivative class that also reads SHA-256 hashes from
    .dist-info/RECORD and checks any read files against those.
    �r�file�StrPath�mode�Literal['r', 'w', 'x', 'a']�compressionrc
Cs�tj�|�}t�|�|_|�d�r|jdurtd|����tj	||||dd�d�
|j�d��|_|jd|_
i|_i|_|dkr�d	|j|j
<d	|j|j
d
<d	|j|j
d<z|�|j
�}Wntyptd|j
�d
��d�w|�Vt�t|ddd��D]B}|\}}}	|s�q~|�d�\}
}zt�|
�Wnty�td|
���d�w|
��dvr�td|
�d���|
t|�d��f|j|<q~Wd�dS1s�wYdSdS)Nz.whlzBad wheel filename T)r,Z
allowZip64z{}.dist-infoZnameverz/RECORDr'�NNz.jwsz.p7szMissing z file��utf-8)�newline�encoding�=zUnsupported hash algorithm: >�md5�sha1zWeak hash algorithm (z) is not permitted by PEP 427�ascii)r�path�basename�
WHEEL_INFO_RE�matchZparsed_filename�endswithrr	�__init__�format�groupZdist_info_path�record_path�_file_hashes�_file_sizes�open�KeyError�csv�readerr�split�hashlib�new�
ValueError�lowerr
�encode)�selfr(r*r,r7�record�liner6Zhash_sum�size�	algorithmrrrr;3s^
���
���
���"��zWheelFile.__init__N�name_or_info�
str | ZipInfo�Literal['r', 'w']�pwd�bytes | None�return�	IO[bytes]cs�d�����fdd�}t|t�r|jn|�|dkr+��d�s+�|jvr+td	��d
���t�||||��|dkrS��d�sS|j�\}��durSt�	|���j
|��_
�S)N�newdata�bytesrU�Nonecs@�j}�|���|�|r����krtd��d���dSdS)NzHash mismatch for file '�')�_eof�update�digestr)rW�eof�ZefZef_nameZ
expected_hashZrunning_hashZupdate_crc_origrr�_update_crcss
�z#WheelFile.open.<locals>._update_crcr'�/zNo hash found for file 'rZ)rWrXrUrY)�
isinstancer
�filenamer:r?rr	rArFrGr`)rKrPr*rSr`rOrr_rrAms��

zWheelFile.open�base_dir�strc	Cs�t�d|j�d|�d��g}t�|�D]G\}}}|��t|�D]9}tj�tj�	||��}tj�
|�rZtj�||��tjj
d�}||jkrGq!|�d�rT|�||f�q!|�||�q!q|��|D]
\}}|�||�qbdS)Nz
creating 'z' and adding 'z' to itraz
.dist-info)r�inforcr�walk�sort�sortedr6�normpath�join�isfile�relpath�replace�sepr>r:�append�write)	rKrdZdeferred�root�dirnames�	filenames�namer6�arcnamerrr�write_files�s&

���zWheelFile.write_filesrcrv�
str | None�
compress_type�
int | NonerYcCs�t|d��}t�|���}|��}Wd�n1swYt|p$|t|j�d�}t�	|j
�t�|j
�Bd>|_|p>|j
|_|�|||�dS)N�rb�Z	date_time�)rAr�fstat�fileno�readr
r%�st_mtime�stat�S_IMODE�st_mode�S_IFMT�
external_attrr,ry�writestr)rKrcrvry�f�st�dataZzinforrrrq�s
��zWheelFile.write�zinfo_or_arcnamer��SizedBuffer | strcCs�t|t�rt|t�d�}|j|_dtjBd>|_t|t�r"|�	d�}t
�||||�t|t�r2|jn|}t
�d|�d��||jkr_|�|�}|jt|����d�f|j|<t|�|j|<dSdS)Nr|i�r}r/zadding 'rZr5)rbrer
r%r,ryr��S_IFREGr�rJr	r�rcrrfr>�_default_algorithmrurr]�decoder?�lenr@)rKr�r�ry�fname�hash_rrrr��s*
�

��


��zWheelFile.writestrcs��jdur<�jdkr<�jr<t�}tj|dddd�}|��fdd��j��D��|�t	�j
�ddf����j
|���t
���dS)	N�w�,�"�
)�	delimiterZ	quotecharZlineterminatorc3s0�|]\}\}}||d|�j|fVqdS)r2N)r@)�.0r�rOr��rKrr�	<genexpr>�s
�
�
�z"WheelFile.close.<locals>.<genexpr>r.)�fpr*r?rrC�writerZ	writerows�itemsZwriterowr<r>r��getvaluer	�close)rKr�r�rr�rr��s
��zWheelFile.close)r(r)r*r+r,r)r'N)rPrQr*rRrSrTrUrV)rdrer-)rcrervrxryrzrUrY�N)r�rQr�r�ryrz)rrr�__doc__rF�sha256r�rr;rArwrqr�r�rrrrr&,s �=�
"��r&r�)rr))Z
__future__rrCrFZos.pathr�rer�r!�iorr�typingrrr�zipfilerr	r
Z	wheel.clirZ
wheel.utilrr
rrrrZtyping_extensionsrre�PathLiker)r�compile�VERBOSEr8r#r%r&rrrr�<module>s0�