          """ Run the job to read faces from a folder to create alignments file(s). """
          logger.info("[CREATE ALIGNMENTS FROM FACES]")  # Tidy up cli output
          skip_count = 0
          d_align: Dict[str, Dict[str, List[Tuple[int, "AlignmentFileDict", str, dict]]]] = {}
          for filename, meta in tqdm(read_image_meta_batch(self._filelist),
                                     desc="Generating Alignments",
                                     total=len(self._filelist),
                                     leave=False):
  
              if "itxt" not in meta or "alignments" not in meta["itxt"]:
 
</s> remove         skip_count = 0
 </s> add         all_versions: Dict[str, List[float]] = {} </s> remove                                    total=len(self._filelist),
 </s> add                                    total=len(filelist), </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             if "itxt" not in meta or "alignments" not in meta["itxt"]:
                logger.verbose("skipping invalid file: '%s'", filename)  # type:ignore
                skip_count += 1
                continue

            align_fname = self._get_alignments_filename(meta["itxt"]["source"])
 </s> add             align_fname = self._get_alignments_filename(meta["source"]) </s> remove                          ) -> Dict[str, Dict[str, List["AlignmentFileDict"]]]:
 </s> add                          ) -> Dict[str, Dict[str, "AlignmentDict"]]:
        filelist = cast(List[Tuple[str, "PNGHeaderDict"]], self._faces.file_list_sorted)
        for filename, meta in tqdm(filelist,
          """ Run the job to read faces from a folder to create alignments file(s). """
          logger.info("[CREATE ALIGNMENTS FROM FACES]")  # Tidy up cli output
          skip_count = 0
          d_align: Dict[str, Dict[str, List[Tuple[int, "AlignmentFileDict", str, dict]]]] = {}
        filelist = cast(List[Tuple[str, "PNGHeaderDict"]], self._faces.file_list_sorted)
        for filename, meta in tqdm(filelist,
                                     desc="Generating Alignments",
                                     total=len(self._filelist),
                                     leave=False):
  
              if "itxt" not in meta or "alignments" not in meta["itxt"]:
keep keep keep keep replace keep keep keep keep keep
 alignments tool - Remove-face - Minor update 
tools/alignments/jobs_faces.py