docs: def ProcessFingerprint(self, responses):
      """Store the fingerprint response."""
      if not responses.success:
        # Its better to raise rather than merely logging since it will make it to
        # the flow's protobuf and users can inspect the reason this flow failed.
        raise flow.FlowError("Could not fingerprint file: %s" % responses.status)
  
      response = responses.First()
      if response.pathspec.path:
        pathspec = response.pathspec
      else:
        pathspec = self.args.pathspec
  
      self.state.urn = pathspec.AFF4Path(self.client_urn)
  
      hash_obj = response.hash
  
      if data_store.AFF4Enabled():
        with aff4.FACTORY.Create(
            self.state.urn, aff4_grr.VFSFile, mode="w", token=self.token) as fd:
          fd.Set(fd.Schema.HASH, hash_obj)
  
      if data_store.RelationalDBEnabled():
        path_info = rdf_objects.PathInfo.FromPathSpec(pathspec)
        path_info.hash_entry = response.hash
  
        data_store.REL_DB.WritePathInfos(self.client_id, [path_info])
  
      self.ReceiveFileFingerprint(
          self.state.urn, hash_obj, request_data=responses.request_data)