未验证 提交 8cca170c 编写于 作者: P Pradyun Gedam 提交者: GitHub

Merge pull request #7976 from uranusjr/installed-candidate-equal

New Resolver: Implement equality on candidate classes
......@@ -288,6 +288,17 @@ class AlreadyInstalledCandidate(Candidate):
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
def name(self):
# type: () -> str
......@@ -351,6 +362,17 @@ class ExtrasCandidate(Candidate):
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
def name(self):
# type: () -> str
......@@ -404,6 +426,10 @@ class RequiresPythonCandidate(Candidate):
version_info = sys.version_info[:3]
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
def name(self):
# type: () -> str
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册