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
Example #2
0
 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
Example #3
0
 def __nonzero__(self):
     if MetadataDiff.__nonzero__(self):
         return True
     return bool(self.tags) or bool(self.revisions)
Example #4
0
 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)