          str
              The frame name of any frames in alignments with no matching file
          """
          self.output_message = "Missing frames that are in alignments file"
          frames = set(item["frame_fullname"] for item in self._items)
          for frame in tqdm(self._alignments.data.keys(), desc=self.output_message, leave=False):
              if frame not in frames:
                  logger.debug("Returning: '%s'", frame)
                  yield frame
  
 
</s> remove         for item in tqdm(cast(List[Tuple[str, "PNGHeaderSourceDict"]], self._items),
 </s> add         for item in tqdm(cast(List[Tuple[str, "PNGHeaderDict"]], self._items), </s> remove             retval = (item[0], item[1]["face_index"])
 </s> add             retval = (item[0], src["face_index"]) </s> remove             if not self._alignments.frame_has_multiple_faces(item["source_filename"]):
 </s> add             src = item[1]["source"]
            if not self._alignments.frame_has_multiple_faces(src["source_filename"]): </s> remove             x for x in filelist
 </s> add             x for x in srcs </s> remove         for face in cast(Union[List[Tuple[str, "PNGHeaderDict"]],
                               List[Tuple[str, "PNGHeaderSourceDict"]]],
                         self.file_list_sorted):
            src: "PNGHeaderSourceDict" = cast(
                "PNGHeaderDict",
                face[1])["source"] if self._with_alignments else cast("PNGHeaderSourceDict",
                                                                      face[1])
 </s> add         for face in cast(List[Tuple[str, "PNGHeaderDict"]], self.file_list_sorted):
            src = face[1]["source"]
        frames = set(item["frame_fullname"] for item in cast(List[Dict[str, str]], self._items))
          str
              The frame name of any frames in alignments with no matching file
          """
          self.output_message = "Missing frames that are in alignments file"
        frames = set(item["frame_fullname"] for item in cast(List[Dict[str, str]], self._items))
          for frame in tqdm(self._alignments.data.keys(), desc=self.output_message, leave=False):
              if frame not in frames:
                  logger.debug("Returning: '%s'", frame)
                  yield frame
  
keep keep keep keep replace keep keep keep keep keep
 Alignments Tool updates
  - Copy info back to alignments file from faces 
tools/alignments/jobs.py