"""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 if MYPY_CHECK_RUNNING: from typing import List class Wheel(object): """A wheel file""" wheel_file_re = re.compile( r"""^(?P<namever>(?P<name>.+?)-(?P<ver>.*?)) ((-(?P<build>\d[^-]*?))?-(?P<pyver>.+?)-(?P<abi>.+?)-(?P<plat>.+?) \.whl|\.dist-info)$""", re.VERBOSE ) 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( "{} is not a valid wheel filename.".format(filename) ) self.filename = filename self.name = wheel_info.group('name').replace('_', '-') # we'll assume "_" means "-" due to wheel naming scheme # (https://github.com/pypa/pip/issues/1150) self.version = wheel_info.group('ver').replace('_', '-') self.build_tag = wheel_info.group('build') self.pyversions = wheel_info.group('pyver').split('.') self.abis = wheel_info.group('abi').split('.') self.plats = wheel_info.group('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)
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
.__init__.pyo.40009 | File | 244 B | 0644 |
|
.candidate.pyo.40009 | File | 1.79 KB | 0644 |
|
.format_control.pyo.40009 | File | 3.59 KB | 0644 |
|
.index.pyo.40009 | File | 1.45 KB | 0644 |
|
.scheme.pyo.40009 | File | 1.12 KB | 0644 |
|
.search_scope.pyo.40009 | File | 4 KB | 0644 |
|
.selection_prefs.pyo.40009 | File | 1.89 KB | 0644 |
|
.target_python.pyo.40009 | File | 3.99 KB | 0644 |
|
.wheel.pyo.40009 | File | 3.86 KB | 0644 |
|
__init__.py | File | 63 B | 0644 |
|
__init__.pyc | File | 244 B | 0644 |
|
__init__.pyo | File | 244 B | 0644 |
|
candidate.py | File | 1.17 KB | 0644 |
|
candidate.pyc | File | 1.79 KB | 0644 |
|
candidate.pyo | File | 1.79 KB | 0644 |
|
direct_url.py | File | 6.74 KB | 0644 |
|
direct_url.pyc | File | 8.8 KB | 0644 |
|
direct_url.pyo | File | 8.76 KB | 0644 |
|
format_control.py | File | 2.76 KB | 0644 |
|
format_control.pyc | File | 3.59 KB | 0644 |
|
format_control.pyo | File | 3.59 KB | 0644 |
|
index.py | File | 1.13 KB | 0644 |
|
index.pyc | File | 1.45 KB | 0644 |
|
index.pyo | File | 1.45 KB | 0644 |
|
link.py | File | 7.29 KB | 0644 |
|
link.pyc | File | 9.26 KB | 0644 |
|
link.pyo | File | 9.1 KB | 0644 |
|
scheme.py | File | 778 B | 0644 |
|
scheme.pyc | File | 1.12 KB | 0644 |
|
scheme.pyo | File | 1.12 KB | 0644 |
|
search_scope.py | File | 4.64 KB | 0644 |
|
search_scope.pyc | File | 4 KB | 0644 |
|
search_scope.pyo | File | 4 KB | 0644 |
|
selection_prefs.py | File | 2 KB | 0644 |
|
selection_prefs.pyc | File | 1.89 KB | 0644 |
|
selection_prefs.pyo | File | 1.89 KB | 0644 |
|
target_python.py | File | 3.94 KB | 0644 |
|
target_python.pyc | File | 3.99 KB | 0644 |
|
target_python.pyo | File | 3.99 KB | 0644 |
|
wheel.py | File | 2.71 KB | 0644 |
|
wheel.pyc | File | 3.86 KB | 0644 |
|
wheel.pyo | File | 3.86 KB | 0644 |
|