def diff(self, other): pmd = MetadataDiff() a = set(self.items.keys()) b = set(other.items.keys()) # Check package lists if a != b: pmd.missing_items = a - b pmd.added_items = b - a # Check attributes of items for pkg in a.intersection(b): pkg_a = self.items[pkg] pkg_b = other.items[pkg] pkg_diff = pkg_a.diff(pkg_b) if pkg_diff: pmd.changed_items.add(pkg) pmd.items_diffs[pkg] = pkg_diff if pmd: return pmd return None
def pprint(self, chksum_to_name_dicts=None): msg = "" if self.revisions: msg += " Different revisions:\n" msg += " 1. repomd:\n" msg += " %s\n" % self.revisions[0] msg += " 2. repomd:\n" msg += " %s\n" % self.revisions[1] msg += " ----------------------------------------\n" if self.tags: msg += " Different tags:\n" msg += " 1. repomd:\n" msg += pprint.pformat(self.tags[0], indent=6) msg += "\n 2. repomd:\n" msg += pprint.pformat(self.tags[1], indent=6) msg += "\n ----------------------------------------\n" msg += MetadataDiff.pprint(self, chksum_to_name_dicts) return msg
def __nonzero__(self): if MetadataDiff.__nonzero__(self): return True return bool(self.tags) or bool(self.revisions)
def __init__(self, diff): MetadataDiff.__init__(self) if diff: self.__dict__.update(diff.__dict__) self.tags = None # (1st_tags, 2nd_tags) self.revisions = None # (1st_revision, 2nd_revision)