code: def compare(self, a, b, zone):
          '''
          Compare zone data between 2 sources.
  
          Note: only things supported by both sources will be considered
          '''
          self.log.info('compare: a=%s, b=%s, zone=%s', a, b, zone)
  
          try:
              a = [self.providers[source] for source in a]
              b = [self.providers[source] for source in b]
          except KeyError as e:
              raise Exception('Unknown source: {}'.format(e.args[0]))
  
          sub_zones = self.configured_sub_zones(zone)
          za = Zone(zone, sub_zones)
          for source in a:
              source.populate(za)
  
          zb = Zone(zone, sub_zones)
          for source in b:
              source.populate(zb)
  
          return zb.changes(za, _AggregateTarget(a + b)f compare(self, a, b, zone):
          '''
          Compare zone data between 2 sources.
  
          Note: only things supported by both sources will be considered
          '''
          self.log.info('compare: a=%s, b=%s, zone=%s', a, b, zone)
  
          try:
              a = [self.providers[source] for source in a]
              b = [self.providers[source] for source in b]
          except KeyError as e:
              raise Exception('Unknown source: {}'.format(e.args[0]))
  
          sub_zones = self.configured_sub_zones(zone)
          za = Zone(zone, sub_zones)
          for source in a:
              source.populate(za)
  
          zb = Zone(zone, sub_zones)
          for source in b:
              source.populate(zb)
  
          return zb.changes(za, _AggregateTarget(a + b))
docs: Compare zone data between 2 sources.
  
          Note: only things supported by both sources will be considered