          logger.info("[CHECK %s]", self._type.upper())
          items_output = self._compile_output()
          self._output_results(items_output)
  
      def _validate(self) -> None:
          """ Check that the selected type is valid for selected task and job """
          if self._job == "missing-frames" and self._output == "move":
 
</s> remove         return cast(Union[List[Dict[str, str]], List[Dict[str, "PNGHeaderSourceDict"]]],
 </s> add         return cast(Union[List[Dict[str, str]], List[Tuple[str, "PNGHeaderDict"]]], </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 = len(cast(Dict[str, Union[List[int], List[float]]], meta["pts_time"]))
 </s> add             retval = None </s> remove         self._faces = Faces(arguments.faces_dir, with_alignments=True)
 </s> add         self._faces = Faces(arguments.faces_dir)
        if self._type == "faces":
            filelist = cast(List[Tuple[str, "PNGHeaderDict"]], self._items)
            check_update = FaceToFile(self._alignments, [val[1] for val in filelist])
            if check_update():
                self._alignments.save()

          logger.info("[CHECK %s]", self._type.upper())
          items_output = self._compile_output()
        if self._type == "faces":
            filelist = cast(List[Tuple[str, "PNGHeaderDict"]], self._items)
            check_update = FaceToFile(self._alignments, [val[1] for val in filelist])
            if check_update():
                self._alignments.save()

          self._output_results(items_output)
  
      def _validate(self) -> None:
          """ Check that the selected type is valid for selected task and job """
          if self._job == "missing-frames" and self._output == "move":
keep add keep keep keep keep keep
 Alignments Tool updates
  - Copy info back to alignments file from faces 
tools/alignments/jobs.py