candidate.py 1001 B

12345678910111213141516171819202122232425262728293031323334
  1. from pip._vendor.packaging.version import parse as parse_version
  2. from pip._internal.models.link import Link
  3. from pip._internal.utils.models import KeyBasedCompareMixin
  4. class InstallationCandidate(KeyBasedCompareMixin):
  5. """Represents a potential "candidate" for installation.
  6. """
  7. __slots__ = ["name", "version", "link"]
  8. def __init__(self, name, version, link):
  9. # type: (str, str, Link) -> None
  10. self.name = name
  11. self.version = parse_version(version)
  12. self.link = link
  13. super().__init__(
  14. key=(self.name, self.version, self.link),
  15. defining_class=InstallationCandidate
  16. )
  17. def __repr__(self):
  18. # type: () -> str
  19. return "<InstallationCandidate({!r}, {!r}, {!r})>".format(
  20. self.name, self.version, self.link,
  21. )
  22. def __str__(self):
  23. # type: () -> str
  24. return '{!r} candidate (version {} at {})'.format(
  25. self.name, self.version, self.link,
  26. )