                                "filetypes": "video",
                                "group": "data",
                                "help": "Directory containing source frames "
                                        "that faces were extracted from."})
          argument_list.append({"opts": ("-fmt", "--alignment_format"),
                                "type": str,
                                "choices": ("json", "pickle", "yaml"),
                                "group": "data",
                                "help": "The file format to save the alignment "
                                        "data in. Defaults to same as source."})
          argument_list.append({
              "opts": ("-o", "--output"),
              "action": Radio,
              "type": str,
              "choices": ("console", "file", "move"),
 
</s> remove                         "missing-frames", "legacy", "leftover-faces", "multi-faces", "no-faces",
 </s> add                         "missing-frames", "leftover-faces", "multi-faces", "no-faces", </s> remove                     "\nL|'legacy': This updates legacy alignments to the latest format by "
                    "rotating the landmarks and bounding boxes and adding face_hashes." +
                    frames_and_faces_dir +
 </s> add  </s> remove     def check_legacy(self):
        """ Legacy rotated alignments will not have the correct x, y
            positions. Faces without hashes won't process.
            Check for these and generate a warning and exit """
        rotated = self.alignments.get_legacy_rotation()
        hashes = self.alignments.get_legacy_no_hashes()
        if rotated or hashes:
            logger.error("Legacy alignments found. Sort cannot continue. You should run legacy "
                         "tool to update the file prior to running sort: 'python tools.py "
                         "alignments -j legacy -a <alignments_file> -fr <frames_folder> -fc "
                         "<faces_folder>'")
            exit(0)

 </s> add  </s> remove     def set_dfl(self, destination_format):
        """ Set the alignments for dfl alignments """
        logger.debug("Alignments are DFL format")
        self.file = "dfl"
        self.set_destination_format(destination_format)

    def set_destination_format(self, destination_format):
        """ Standardize the destination format to the correct extension """
        extensions = {".json": "json",
                      ".p": "pickle",
                      ".yml": "yaml",
                      ".yaml": "yaml"}
        dst_fmt = None
        file_ext = os.path.splitext(self.file)[1].lower()
        logger.debug("File extension: '%s'", file_ext)

        if destination_format is not None:
            dst_fmt = destination_format
        elif self.file == "dfl":
            dst_fmt = "json"
        elif file_ext in extensions.keys():
            dst_fmt = extensions[file_ext]
        else:
            logger.error("'%s' is not a supported serializer. Exiting", file_ext)
            exit(0)

        logger.verbose("Destination format set to '%s'", dst_fmt)

        self.serializer = self.get_serializer("", dst_fmt)
        filename = os.path.splitext(self.file)[0]
        self.file = "{}.{}".format(filename, self.serializer.file_extension)
        logger.debug("Destination file: '%s'", self.file)

 </s> add  </s> remove             logger.info("Using extracted pngs for alignments")
 </s> add             logger.info("Using extracted DFL faces for alignments")
                                "filetypes": "video",
                                "group": "data",
                                "help": "Directory containing source frames "
                                        "that faces were extracted from."})






          argument_list.append({
              "opts": ("-o", "--output"),
              "action": Radio,
              "type": str,
              "choices": ("console", "file", "move"),
keep keep keep keep replace replace replace replace replace replace keep keep keep keep keep
 Legacy alignments update

- Remove legacy update hashes
- Remove legacy job from alignment-tools
- Remove legacy landmark rotation
- Add rotate face method to plugins/extract/detect
- Update travis test for new alignments extension
- Alignments format to .fsa
- Remove serializer option from alignments-tool
- Auto update legacy format alignment files to new format 
tools/cli.py