          This could be quicker if parellizing in threads, however, Windows (at least) does not seem
          to like this and has a tendency to throw permission errors, so this remains single threaded
          for now.
          """
          filelist = cast(List[Tuple[str, "PNGHeaderSourceDict"]], self._items.file_list_sorted)
          items = cast(Dict[str, List[int]], self._items.items)
          to_update = [  # Items whose face index has changed
              x for x in filelist
              if x[1]["face_index"] != items[x[1]["source_filename"]].index(x[1]["face_index"])]
  
 
</s> remove             x for x in filelist
 </s> add             x for x in srcs </s> remove         filelist = cast(List[Tuple[str, "PNGHeaderSourceDict"]], self._faces.file_list_sorted)
        rename_mappings = sorted([(face[0], face[1]["original_filename"])
 </s> add         filelist = cast(List[Tuple[str, "PNGHeaderDict"]], self._faces.file_list_sorted)
        rename_mappings = sorted([(face[0], face[1]["source"]["original_filename"]) </s> remove                                   if face[0] != face[1]["original_filename"]],
 </s> add                                   if face[0] != face[1]["source"]["original_filename"]],
          This could be quicker if parellizing in threads, however, Windows (at least) does not seem
          to like this and has a tendency to throw permission errors, so this remains single threaded
          for now.
          """

          items = cast(Dict[str, List[int]], self._items.items)
          to_update = [  # Items whose face index has changed
              x for x in filelist
              if x[1]["face_index"] != items[x[1]["source_filename"]].index(x[1]["face_index"])]
  
keep keep keep keep replace keep keep keep keep keep
 Alignments Tool updates
  - Copy info back to alignments file from faces 
tools/alignments/jobs_faces.py