code: def check(self, strict=False):
          
          self.set_metadata_version()
  
          # XXX should check the versions (if the file was loaded)
          missing, warnings = [], []
  
          for attr in ('Name', 'Version'):  # required by PEP 345
              if attr not in self:
                  missing.append(attr)
  
          if strict and missing != []:
              msg = 'missing required metadata: %s' % ', '.join(missing)
              raise MetadataMissingError(msg)
  
          for attr in ('Home-page', 'Author'):
              if attr not in self:
                  missing.append(attr)
  
          # checking metadata 1.2 (XXX needs to check 1.1, 1.0)
          if self['Metadata-Version'] != '1.2':
              return missing, warnings
  
          scheme = get_scheme(self.scheme)
  
          def are_valid_constraints(value):
              for v in value:
                  if not scheme.is_valid_matcher(v.split(';')[0]):
                      return False
              return True
  
          for fields, controller in ((_PREDICATE_FIELDS, are_valid_constraints),
                                     (_VERSIONS_FIELDS,
                                      scheme.is_valid_constraint_list),
                                     (_VERSION_FIELDS,
                                      scheme.is_valid_version)):
              for field in fields:
                  value = self.get(field, None)
                  if value is not None and not controller(value):
                      warnings.append('Wrong value for %r: %s' % (field, value))
  
          return missing, warnings
docs: Check if the metadata is compliant. If strict is True then raise if
          no Name or Version are provided