  
              d_align.setdefault(align_fname, {}).setdefault(source_name, []).append(full_info)
  
          alignments = self._sort_alignments(d_align)
          self._save_alignments(alignments)
          if skip_count > 1:
              logger.warning("%s of %s files skipped that do not contain valid alignment data",
                             skip_count, len(self._filelist))
              logger.warning("Run the process in verbose mode to see which files were skipped")
  
      @classmethod
      def _get_alignments_filename(cls, source_data: dict) -> str:
          """ Obtain the name of the alignments file from the source information contained within the
          PNG metadata.
 
</s> remove     def _get_filenames(self) -> List[str]:
        """ Obtain the full path to all filenames in the specified faces folder.

        Only png files will be returned, any other files will be ignored. An error is output if
        the returned filelist is not valid

        Returns
        -------
        list
            Full path list to face png files
        """
        err = None
        if not self._faces_dir:
            err = "A faces folder must be provided."
        elif not os.path.isdir(self._faces_dir):
            err = f"The Faces location '{self._faces_dir}' does not exit"
        else:
            filelist = [os.path.join(self._faces_dir, fname)
                        for fname in os.listdir(self._faces_dir)
                        if os.path.splitext(fname.lower())[1] == ".png"]
        if not err and not filelist:
            err = "Faces folder should contain Faceswap extracted PNG files"
        if err:
            logger.error(err)
            sys.exit(0)
        logger.debug("Collected %s png images from folder '%s'", len(filelist), self._faces_dir)
        return filelist

 </s> add  </s> remove         alignment = metadata["itxt"]["alignments"]
 </s> add         alignment = metadata["alignments"] </s> remove             full_info = (f_idx, alignment, filename, meta["itxt"]["source"])
 </s> add             full_info = (f_idx, alignment, filename, meta["source"]) </s> remove     def _save_alignments(self, all_alignments: dict) -> None:
 </s> add     def _save_alignments(self,
                         all_alignments: Dict[str, Dict[str, "AlignmentDict"]],
                         versions: Dict[str, float]) -> None:
        self._save_alignments(alignments, versions)
  
              d_align.setdefault(align_fname, {}).setdefault(source_name, []).append(full_info)
  
          alignments = self._sort_alignments(d_align)
        self._save_alignments(alignments, versions)
        self._save_alignments(alignments, versions)
        self._save_alignments(alignments, versions)
        self._save_alignments(alignments, versions)
        self._save_alignments(alignments, versions)
  
      @classmethod
      def _get_alignments_filename(cls, source_data: dict) -> str:
          """ Obtain the name of the alignments file from the source information contained within the
          PNG metadata.
keep keep keep keep replace replace replace replace replace keep keep keep keep keep
 alignments tool - Remove-face - Minor update 
tools/alignments/jobs_faces.py