U ja1@sJdZddlZddlmZmZmZddlmZddlm Z GdddZ dS)z`Represents a wheel file and provides access to the various parts of the name that have meaning. N)DictIterableList)Tag)InvalidWheelFilenamec@seZdZdZedejZeddddZ e eddd Z e e e d d d Ze e ee e fe d ddZee ed ddZdS)Wheelz A wheel filez^(?P(?P.+?)-(?P.*?)) ((-(?P\d[^-]*?))?-(?P.+?)-(?P.+?)-(?P.+?) \.whl|\.dist-info)$N)filenamereturncsj|}|st|d|_|ddd_|ddd_|d_|d d_ |d  d_ |d  d_ fd d j D_ d S)zX :raises InvalidWheelFilename: when the filename is invalid for a wheel z is not a valid wheel filename.name_-verbuildpyver.abiplatcs0h|](}jD]}jD]}t|||qqqS)abisplatsr).0xyzselfrr/private/var/folders/k6/_7fsz4ts3b78x3b3xwrxjh_c8s8xv7/T/pip-unpacked-wheel-bug3gbve/pip/_internal/models/wheel.py *s z!Wheel.__init__..N) wheel_file_rematchrrgroupreplacer version build_tagsplit pyversionsrr file_tags)rr wheel_inforrr__init__s   zWheel.__init__)r cCstdd|jDS)z4Return the wheel's tags as a sorted list of strings.css|]}t|VqdSN)strrtagrrr 1sz0Wheel.get_formatted_file_tags..)sortedr&rrrrget_formatted_file_tags/szWheel.get_formatted_file_tags)tagsr cstfdd|jDS)aReturn 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. c3s |]}|kr|VqdSr))indexr+r0rrr-@sz*Wheel.support_index_min..minr&rr0rr2rsupport_index_min3s zWheel.support_index_min)r0tag_to_priorityr cstfdd|jDS)aReturn the priority of the most preferred tag that one of the wheel's file tag combinations achieves in the given list of supported tags using the given tag_to_priority mapping, where lower priorities are more-preferred. This is used in place of support_index_min in some cases in order to avoid an expensive linear scan of a large list of tags. :param tags: the PEP 425 tags to check the wheel against. :param tag_to_priority: a mapping from tag to priority of that tag, where lower is more preferred. :raises ValueError: If none of the wheel's file tags match one of the supported tags. c3s|]}|kr|VqdSr)rr+r7rrr-Ssz0Wheel.find_most_preferred_tag..r3)rr0r7rr8rfind_most_preferred_tagBs zWheel.find_most_preferred_tagcCs|j| S)zReturn whether the wheel is compatible with one of the given tags. :param tags: the PEP 425 tags to check the wheel against. )r& isdisjointr5rrr supportedWszWheel.supported)__name__ __module__ __qualname____doc__recompileVERBOSErr*r(rr/rintr6rr9rboolr;rrrrr s  r) r?r@typingrrrpip._vendor.packaging.tagsrpip._internal.exceptionsrrrrrrs