| | from pip._vendor.packaging.version import parse as parse_version |
| |
|
| | from pip._internal.utils.models import KeyBasedCompareMixin |
| | from pip._internal.utils.typing import MYPY_CHECK_RUNNING |
| |
|
| | if MYPY_CHECK_RUNNING: |
| | from pip._vendor.packaging.version import _BaseVersion |
| | from pip._internal.models.link import Link |
| |
|
| |
|
| | class InstallationCandidate(KeyBasedCompareMixin): |
| | """Represents a potential "candidate" for installation. |
| | """ |
| |
|
| | __slots__ = ["name", "version", "link"] |
| |
|
| | def __init__(self, name, version, link): |
| | |
| | self.name = name |
| | self.version = parse_version(version) |
| | self.link = link |
| |
|
| | super(InstallationCandidate, self).__init__( |
| | key=(self.name, self.version, self.link), |
| | defining_class=InstallationCandidate |
| | ) |
| |
|
| | def __repr__(self): |
| | |
| | return "<InstallationCandidate({!r}, {!r}, {!r})>".format( |
| | self.name, self.version, self.link, |
| | ) |
| |
|
| | def __str__(self): |
| | |
| | return '{!r} candidate (version {} at {})'.format( |
| | self.name, self.version, self.link, |
| | ) |
| |
|