Skip to content

Commit

Permalink
Merge pull request pypa#7976 from uranusjr/installed-candidate-equal
Browse files Browse the repository at this point in the history
New Resolver: Implement equality on candidate classes
  • Loading branch information
pradyunsg authored Apr 10, 2020
2 parents 9cbe8fb + 591d476 commit 8cca170
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions src/pip/_internal/resolution/resolvelib/candidates.py
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,17 @@ def __repr__(self):
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
Expand Down Expand Up @@ -351,6 +362,17 @@ def __repr__(self):
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
Expand Down Expand Up @@ -404,6 +426,10 @@ def __init__(self, py_version_info):
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
Expand Down

0 comments on commit 8cca170

Please sign in to comment.