view env/lib/python3.9/site-packages/pip/_internal/models/ @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
line wrap: on
line source

"""Represents a wheel file and provides access to the various parts of the
name that have meaning.
import re

from pip._vendor.packaging.tags import Tag

from pip._internal.exceptions import InvalidWheelFilename
from pip._internal.utils.typing import MYPY_CHECK_RUNNING

    from typing import List

class Wheel:
    """A wheel file"""

    wheel_file_re = re.compile(

    def __init__(self, filename):
        # type: (str) -> None
        :raises InvalidWheelFilename: when the filename is invalid for a wheel
        wheel_info = self.wheel_file_re.match(filename)
        if not wheel_info:
            raise InvalidWheelFilename(
                f"{filename} is not a valid wheel filename."
        self.filename = filename ='name').replace('_', '-')
        # we'll assume "_" means "-" due to wheel naming scheme
        # (
        self.version ='ver').replace('_', '-')
        self.build_tag ='build')
        self.pyversions ='pyver').split('.')
        self.abis ='abi').split('.')
        self.plats ='plat').split('.')

        # All the tag combinations from this file
        self.file_tags = {
            Tag(x, y, z) for x in self.pyversions
            for y in self.abis for z in self.plats

    def get_formatted_file_tags(self):
        # type: () -> List[str]
        """Return the wheel's tags as a sorted list of strings."""
        return sorted(str(tag) for tag in self.file_tags)

    def support_index_min(self, tags):
        # type: (List[Tag]) -> int
        """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.
        return min(tags.index(tag) for tag in self.file_tags if tag in tags)

    def supported(self, tags):
        # type: (List[Tag]) -> bool
        """Return whether the wheel is compatible with one of the given tags.

        :param tags: the PEP 425 tags to check the wheel against.
        return not self.file_tags.isdisjoint(tags)