code: def _compare_records(src, sink, strict=False):
      # type: (MutableMapping[Text, Any], MutableMapping[Text, Any], bool) -> bool
      
  
      def _rec_fields(rec):  # type: (MutableMapping[Text, Any]) -> MutableMapping[Text, Any]
          out = {}
          for field in rec["fields"]:
              name = shortname(field["name"])
              out[name] = field["type"]
          return out
  
      srcfields = _rec_fields(src)
      sinkfields = _rec_fields(sink)
      for key in six.iterkeys(sinkfields):
          if (not can_assign_src_to_sink(
                  srcfields.get(key, "null"), sinkfields.get(key, "null"), strict)
                  and sinkfields.get(key) is not None):
              _logger.info("Record comparison failure for %s and %s\n"
                           "Did not match fields for %s: %s and %s",
                           src["name"], sink["name"], key, srcfields.get(key),
                           sinkfields.get(key))
              return False
      return True
docs: Compare two records, ensuring they have compatible fields.
  
      This handles normalizing record names, which will be relative to workflow
      step, so that they can be compared.