+class Repo(object):
+ """Object representing a repo listed in the release file.
+
+ Includes eq, hash, and ne methods so set comparisons work
+ """
+
+ def __init__(self, repo=None, ref=None, version=None):
+ self.repo = repo
+ self.ref = ref
+ self.version = version
+
+ def __repr__(self):
+ if self.version:
+ return "%s %s %s" % (self.repo, self.ref, self.version)
+ elif self.ref:
+ return "%s %s" % (self.repo, self.ref)
+ return "%s" % self.repo
+
+ def __eq__(self, obj):
+ if isinstance(obj, Repo):
+ return ((self.repo == obj.repo) and
+ (self.ref == obj.ref) and
+ (self.version == obj.version))
+ return False
+
+ def __ne__(self, obj):
+ return (not self.__eq__(obj))
+
+ def __hash__(self):
+ return hash(self.__repr__())
+
+