          logger.info("%s alignment(s) were removed from alignments file", del_count)
          self.alignments.save()
  
          if self.type == "faces":
              self.rename_faces()
  
      def remove_frames(self, item):
          """ Process to remove frames from an alignments file """
          if item in self.items:
              return 0
 
</s> remove     def remove_frames(self, item):
 </s> add     def remove_frames(self, frame): </s> remove         if item in self.items:
 </s> add         if frame in self.items:
            logger.trace("Not deleting frame: '%s'", frame) </s> remove         del self.alignments.data[item]
 </s> add         logger.debug("Deleting frame: '%s'", frame)
        del self.alignments.data[frame] </s> remove     def remove_faces(self, item):
 </s> add     def remove_faces(self): </s> remove         if self.faces_count_matches(item):
 </s> add         face_hashes = list(self.items.items.keys())
        if not face_hashes:
            logger.error("No face hashes. This would remove all faces from your alignments file.")
            rename = Rename(self.alignments, None, self.items)
            rename.process()
          logger.info("%s alignment(s) were removed from alignments file", del_count)
          self.alignments.save()
  
          if self.type == "faces":
            rename = Rename(self.alignments, None, self.items)
            rename.process()
  
      def remove_frames(self, item):
          """ Process to remove frames from an alignments file """
          if item in self.items:
              return 0
keep keep keep keep replace keep keep keep keep keep
 Add Face Hashes to Alignments (#550)

* Convert main scripts to use face hashes

* Alignment tool: Use hashes, add logging, add face rename function

* More logging. Update Manual tool to work with hashing 
tools/lib_alignments/jobs.py