�
�S�g� � �\ � d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl m
Z
mZ d dlm
Z
mZmZ d dlmZmZmZ d dlmZ d dlmZmZmZ er1d dlmZmZmZ d d lmZ eeej@ e f Z! G d
� deee� Z" ejF dejH � Z%d
Z&ddd�Z' G d� de� Z(y)� )�annotationsN)�StringIO�
TextIOWrapper)�IO�
TYPE_CHECKING�Literal)�ZIP_DEFLATED�ZipFile�ZipInfo)�
WheelError)�log�urlsafe_b64decode�urlsafe_b64encode)�Protocol�Sized�Union)�Bufferc � � e Zd Zy)�SizedBufferN)�__name__�
__module__�__qualname__� � �/build/snapcraft-certbot-29b1212f749eeba2f1dece1adfe9a83a/parts/certbot/install/lib/python3.12/site-packages/wheel/wheelfile.pyr r s � r r z�^(?P<namever>(?P<name>[^\s-]+?)-(?P<ver>[^\s-]+?))(-(?P<build>\d[^\s-]*))?
-(?P<pyver>[^\s-]+?)-(?P<abi>[^\s-]+?)-(?P<plat>\S+)\.whl$i ��c �� � t t j j d| xs t j � � � } t | t � } t j | � dd S )N�SOURCE_DATE_EPOCHr � )�int�os�environ�get�time�max�MINIMUM_TIMESTAMP�gmtime)� timestamps r �get_zipinfo_datetimer( $ sL � � �B�J�J�N�N�#6� �8P�T�Y�Y�[�Q�R�I��I�0�1�I��;�;�y�!�!�A�&�&r c � � e Zd ZdZej
Zdef d
d�Z d dd�Z d
d�Z
d dd�Z d dd�Zd � 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 � � t j j |� }t j |� | _ |j
d� r| j
�t d|��� �t j | |||d�� dj | j
j d� � | _ | j dz | _
i | _ i | _ |dk( �rd | j | j < |