mirror of https://github.com/pypa/pip
Merge pull request #7976 from uranusjr/installed-candidate-equal
New Resolver: Implement equality on candidate classes
This commit is contained in:
commit
8cca170ceb
|
@ -288,6 +288,17 @@ class AlreadyInstalledCandidate(Candidate):
|
||||||
distribution=self.dist,
|
distribution=self.dist,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
# type: (Any) -> bool
|
||||||
|
if isinstance(other, self.__class__):
|
||||||
|
return self.name == other.name and self.version == other.version
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Needed for Python 2, which does not implement this by default
|
||||||
|
def __ne__(self, other):
|
||||||
|
# type: (Any) -> bool
|
||||||
|
return not self.__eq__(other)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
# type: () -> str
|
# type: () -> str
|
||||||
|
@ -351,6 +362,17 @@ class ExtrasCandidate(Candidate):
|
||||||
extras=self.extras,
|
extras=self.extras,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
# type: (Any) -> bool
|
||||||
|
if isinstance(other, self.__class__):
|
||||||
|
return self.base == other.base and self.extras == other.extras
|
||||||
|
return False
|
||||||
|
|
||||||
|
# Needed for Python 2, which does not implement this by default
|
||||||
|
def __ne__(self, other):
|
||||||
|
# type: (Any) -> bool
|
||||||
|
return not self.__eq__(other)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
# type: () -> str
|
# type: () -> str
|
||||||
|
@ -404,6 +426,10 @@ class RequiresPythonCandidate(Candidate):
|
||||||
version_info = sys.version_info[:3]
|
version_info = sys.version_info[:3]
|
||||||
self._version = Version(".".join(str(c) for c in version_info))
|
self._version = Version(".".join(str(c) for c in version_info))
|
||||||
|
|
||||||
|
# We don't need to implement __eq__() and __ne__() since there is always
|
||||||
|
# only one RequiresPythonCandidate in a resolution, i.e. the host Python.
|
||||||
|
# The built-in object.__eq__() and object.__ne__() do exactly what we want.
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def name(self):
|
def name(self):
|
||||||
# type: () -> str
|
# type: () -> str
|
||||||
|
|
Loading…
Reference in New Issue