a
lj
@ sJ d Z ddlZddlmZmZmZ ddlmZ ddlm Z G dd dZ
dS )z`Represents a wheel file and provides access to the various parts of the
name that have meaning.
N)DictIterableList)Tag)InvalidWheelFilenamec @ s e Zd ZdZedejZeddddZ e
e ddd Ze
e e
d
ddZe
e eee
f e
d
ddZee ed
ddZdS )WheelzA wheel filez^(?P(?P.+?)-(?P.*?))
((-(?P\d[^-]*?))?-(?P.+?)-(?P.+?)-(?P.+?)
\.whl|\.dist-info)$N)filenamereturnc s j |}|st| d| _|ddd _|ddd _|d _|d d _
|d d _|d
d _ fdd j
D _
d
S )zX
:raises InvalidWheelFilename: when the filename is invalid for a wheel
z is not a valid wheel filename.name_-ZverZbuildZpyver.ZabiZplatc s0 h | ](} j D ]} jD ]}t|||qqqS )abisplatsr ).0xyzselfr >/usr/lib/python3.9/site-packages/pip/_internal/models/wheel.py ( s z!Wheel.__init__..N)
wheel_file_rematchr r groupreplacer
versionZ build_tagsplitZ
pyversionsr r file_tags)r r Z
wheel_infor r r __init__ s
zWheel.__init__)r c C s t dd | jD S )z4Return the wheel's tags as a sorted list of strings.c s s | ]}t |V qd S N)strr tagr r r . z0Wheel.get_formatted_file_tags..)sortedr r r r r get_formatted_file_tags, s zWheel.get_formatted_file_tags)tagsr c s t fdd| jD S )a Return the lowest index that one of the wheel's file_tag combinations
achieves in the given list of supported tags.
For example, if there are 8 supported tags and one of the file tags
is first in the list, then return 0.
:param tags: the PEP 425 tags to check the wheel against, in order
with most preferred first.
:raises ValueError: If none of the wheel's file tags match one of
the supported tags.
c 3 s | ]}| v r |V qd S r! )indexr# r) r r r% = r&