code: def Process(cls,
                host_data,
                os_name=None,
                cpe=None,
                labels=None,
                exclude_checks=None,
                restrict_checks=None):
      
      # All the conditions that apply to this host.
      artifacts = list(iterkeys(host_data))
      check_ids = cls.FindChecks(artifacts, os_name, cpe, labels)
      conditions = list(cls.Conditions(artifacts, os_name, cpe, labels))
      for check_id in check_ids:
        # skip if check in list of excluded checks
        if exclude_checks and check_id in exclude_checks:
          continue
        if restrict_checks and check_id not in restrict_checks:
          continue
        try:
          chk = cls.checks[check_id]
          yield chk.Parse(conditions, host_data)
        except ProcessingError as e:
          logging.warning("Check ID %s raised: %s", check_id, e)
docs: Runs checks over all host data.
  
      Args:
        host_data: The data collected from a host, mapped to artifact name.
        os_name: 0+ OS names.
        cpe: 0+ CPE identifiers.
        labels: 0+ GRR labels.
        exclude_checks: A list of check ids not to run. A check id in this list
                        will not get run even if included in restrict_checks.
        restrict_checks: A list of check ids that may be run, if appropriate.
  
      Yields:
        A CheckResult message for each check that was performed.