XylotrechusZ
U
ʗRe� � @ s� d Z ddlZddlmZ ddlmZ ddlmZ ddlm Z m
Z
ddlmZ ddl
mZ d Ze�e�Ze
eeeef d
�dd�Ze
eed
�dd�Ze
eed�dd�Ze
eed�dd�Zeeedf d�dd�Zeedf edd�dd�ZdS )z0Support functions for working with wheel files.
� N)�Message)�Parser)�Tuple)�
BadZipFile�ZipFile)�canonicalize_name)�UnsupportedWheel)� r )� wheel_zip�name�returnc
C sj z t | |�}t| |�}t|�}W n6 tk
rV } ztd�|t|����W 5 d}~X Y nX t||� ||fS )z�Extract information from the provided wheel, ensuring it meets basic
standards.
Returns the name of the .dist-info directory and the parsed WHEEL metadata.
z{} has an invalid wheel, {}N)�wheel_dist_info_dir�wheel_metadata�
wheel_versionr �format�str�check_compatibility)r
r �info_dir�metadata�version�e� r ��/builddir/build/BUILDROOT/alt-python38-pip-22.2.1-2.el8.x86_64/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/utils/wheel.py�parse_wheel s
&
r )�sourcer r c C s� dd� | � � D �}dd� |D �}|s,td��t|�dkrLtd�d�|����|d }t|�}t|�}|�|�s~td
�||���|S )z�Returns the name of the contained .dist-info directory.
Raises AssertionError or UnsupportedWheel if not found, >1 found, or
it doesn't match the provided name.
c S s h | ]}|� d d�d �qS )�/r r )�split)�.0�pr r r � <setcomp>- s z&wheel_dist_info_dir.<locals>.<setcomp>c S s g | ]}|� d �r|�qS )z
.dist-info)�endswith)r �sr r r �
<listcomp>/ s
z'wheel_dist_info_dir.<locals>.<listcomp>z.dist-info directory not foundr z)multiple .dist-info directories found: {}z, r z2.dist-info directory {!r} does not start with {!r})�namelistr �lenr �joinr �
startswith)r r �subdirs� info_dirsr �
info_dir_name�canonical_namer r r r
&