Current File : //proc/self/root/lib/python3/dist-packages/wheel/__pycache__/wheelfile.cpython-312.pyc
�

C�e����ddlmZddlZddlZddlZddlZddlZddlZddl	m
Z
mZddlm
Z
mZmZddlmZddlmZmZmZej,dej.�ZdZdd	�ZGd
�de�Zy)
�)�annotationsN)�StringIO�
TextIOWrapper)�ZIP_DEFLATED�ZipFile�ZipInfo)�
WheelError)�log�urlsafe_b64decode�urlsafe_b64encodez�^(?P<namever>(?P<name>[^\s-]+?)-(?P<ver>[^\s-]+?))(-(?P<build>\d[^\s-]*))?
     -(?P<pyver>[^\s-]+?)-(?P<abi>[^\s-]+?)-(?P<plat>\S+)\.whl$i��c���ttjjd|xst	j���}t|t�}t	j|�ddS)N�SOURCE_DATE_EPOCHr�)�int�os�environ�get�time�max�MINIMUM_TIMESTAMP�gmtime)�	timestamps �1/usr/lib/python3/dist-packages/wheel/wheelfile.py�get_zipinfo_datetimersL���B�J�J�N�N�#6�	�8P�T�Y�Y�[�Q�R�I��I�0�1�I��;�;�y�!�!�A�&�&�c�X�eZdZdZej
Zdefd�Zd
d�Z	d�Z
dd�Zdd�Zd	�Z
y)
�	WheelFilez�A ZipFile derivative class that also reads SHA-256 hashes from
    .dist-info/RECORD and checks any read files against those.
    �rc��tjj|�}tj	|�|_|j
d�r|j
�td|����tj||||d��dj|j
jd��|_|jdz|_
i|_i|_|dk(�r(d	|j|j<d	|j|jd
z<d	|j|jdz<	|j!|j�}|5t%j&t)|dd���D]�}|\}}}	|s�|j+d�\}
}	t-j.|
�|
j3�dvrtdj|
���|
t5|j7d��f|j|<��	ddd�yy#t"$rtd|j�d
��d�wxYw#t0$rtd|
���d�wxYw#1swYyxYw)Nz.whlzBad wheel filename T)�compression�
allowZip64z{}.dist-info�nameverz/RECORDr�NNz.jwsz.p7szMissing z file��utf-8)�newline�encoding�=zUnsupported hash algorithm: >�md5�sha1z4Weak hash algorithm ({}) is not permitted by PEP 427�ascii)r�path�basename�
WHEEL_INFO_RE�match�parsed_filename�endswithr	r�__init__�format�group�dist_info_path�record_path�_file_hashes�_file_sizes�open�KeyError�csv�readerr�split�hashlib�new�
ValueError�lowerr�encode)�self�file�moder r-�record�liner,�hash_sum�size�	algorithms           rr2zWheelFile.__init__(sS���7�7�#�#�D�)��,�2�2�8�<���� � ��(�D�,@�,@�,H��2�8�,�?�@�@�����t�T�{�t�T�,�3�3�� � �&�&�y�1�
��� �.�.��:����������3�;�2<�D���d�.�.�/�;E�D���d�.�.��7�8�;E�D���d�.�.��7�8�
O����4�#3�#3�4���
��J�J�!�&�"�w�G���D�,0�(�D�(�D�#� �*2�.�.��*=�'�I�x�$����I�.�!���(�O�;�(�"�"(�&��"3���"�)�(�/�/�'�*B�C�/�D�%�%�d�+�+�
�
����
O� �8�D�,<�,<�+=�U�!C�D�$�N�
O��&�$�(�:�9�+�F��#�$�$��
�
�s2�(G?�AI�H&�AI�?$H#�&H?�?I�INc�����	�
�����	�
fd�}t|t�r|jn|�|dk(r.�jd�s�|jvrtd��d���t
j||||��|dk(rN�jd�s=|j�\}���)tj|��	�j|c�
�_
�S)Nc����j}�|��j|�|r#�j��k7rtd��d���yy)NzHash mismatch for file '�')�_eof�update�digestr	)�newdata�eof�ef�ef_name�
expected_hash�running_hash�update_crc_origs  �����r�_update_crcz#WheelFile.open.<locals>._update_crc^sQ����'�'�C��G�$�����(��|�*�*�,�
�=� �#;�G�9�A�!F�G�G�>�srr�/zNo hash found for file 'rM)�
isinstancer�filenamer1r7r	rr9r>r?rX)rC�name_or_inforE�pwdrXrJrSrTrUrVrWs      @@@@@rr9zWheelFile.open]s����	H�	H�&0��g�%F�L�!�!�L�	�
�C�K��$�$�S�)��t�0�0�0��7��y��B�C�C�
�\�\�$��d�C�
8���3�;�w�/�/��4�'+�'8�'8��'A�$�I�}��(� '�{�{�9�5��24�.�.�+�/�����	rc��tjd|j�d|�d��g}tj|�D�]\}}}|j�t
|�D]�}tjjtjj||��}tjj|�s�`tjj||�jtjjd�}||jk(r��|jd�r|j!||f���|j#||�����|j�|D]\}}|j#||��y)Nz
creating 'z' and adding 'z' to itrYz
.dist-info)r
�infor[r�walk�sort�sortedr,�normpath�join�isfile�relpath�replace�sepr6r1�append�write)	rC�base_dir�deferred�root�dirnames�	filenames�namer,�arcnames	         r�write_fileszWheelFile.write_fileszs(�����:�d�m�m�_�N�8�*�G�L�M���)+����):�
	2�%�D�(�I�
�M�M�O��y�)�	
2���w�w�'�'������T�4�(@�A���7�7�>�>�$�'� �g�g�o�o�d�H�=�E�E�b�g�g�k�k�SV�W�G��$�"2�"2�2�����|�4� ����w��8��
�
�4��1�	
2�	
	2�	�
�
��%�	&�M�D�'��J�J�t�W�%�	&rc���t|d�5}tj|j��}|j	�}ddd�t|xs|t
j���}tj|j�tj|j�zdz|_|xs|j|_|j||�y#1swY��xYw)N�rb��	date_time�)r9r�fstat�fileno�readrr�st_mtime�stat�S_IMODE�st_mode�S_IFMT�
external_attrr �
compress_type�writestr)rCr[rqr��f�st�data�zinfos        rrjzWheelFile.write�s���
�(�D�
!�	�Q����!�(�(�*�%�B��6�6�8�D�	����x�+?����+L�
�� $�|�|�B�J�J�7�$�+�+�b�j�j�:Q�Q�VX�X���+�?�t�/?�/?����
�
�e�T�=�1�	�	�s�4C�C&c�z�t|t�rAt|t���}|j|_dtjzdz|_t|t�r|jd�}tj||||�t|t�r|jn|}tjd|�d��||jk7rk|j!|�}|j"t%|j'��j)d�f|j*|<t-|�|j.|<yy)Nrui�rwr%zadding 'rMr+)rZ�strrrr r�r|�S_IFREGr�rBrr�r[r
r_r6�_default_algorithmrprrP�decoder7�lenr8)rC�zinfo_or_arcnamer�r��fname�hash_s      rr�zWheelFile.writestr�s���&��,�&� �,@�,B� ��.2�-=�-=��*�.3�d�l�l�.B�r�-I��*��d�C� ��;�;�w�'�D�����/��}�E��*�G�4�
�%�%�!�	�
	���8�E�7�!�$�%��D�$�$�$��+�+�D�1�E��
�
�!�%�,�,�.�1�8�8��A�(�D���e�$�'*�$�i�D���U�#�
%rc�����j���jdk(r��jr�t�}t	j
|ddd��}|j
�fd��jj�D��|jt�j�ddf��j�j|j��tj��y)N�w�,�"�
)�	delimiter�	quotechar�lineterminatorc3�Z�K�|]"\}\}}||dz|z�j|f���$y�w)r(N)r8)�.0r�rJr�rCs    �r�	<genexpr>z"WheelFile.close.<locals>.<genexpr>�s=������1��1�	�5��I��O�e�3�T�5E�5E�e�5L�M��s�(+r$)�fprEr7rr;�writer�	writerows�items�writerowr3r6r��getvaluer�close)rCr�r�s`  rr�zWheelFile.close�s�����7�7��4�9�9��#3��8I�8I��:�D��Z�Z���s�SW�X�F�����59�5F�5F�5L�5L�5N��
�
�O�O�V�D�$4�$4�5�r�2�>�?��M�M�$�*�*�D�M�M�O�<��
�
�d�r)rNr#�N)�__name__�
__module__�__qualname__�__doc__r>�sha256r�rr2r9rrrjr�r��rrrr!s7���!����"%�<�3�j�:&�,
2�0�4rrr�)�
__future__rr;r>�os.pathr�rer|r�iorr�zipfilerrr�	wheel.clir	�
wheel.utilr
rr�compile�VERBOSEr.rrrr�rr�<module>r�sf��"�
���	���&�2�2� �@�@���
�
�C��J�J��
�
��'�c��cr