      elif extension == ".p":
          retval = _PickleSerializer()
      elif extension == ".npy":
          retval = _NPYSerializer()
      elif extension == ".fsc":
          retval = _CompressedSerializer()
      elif extension in (".yaml", ".yml") and yaml is not None:
          retval = _YAMLSerializer()
      elif extension in (".yaml", ".yml") and yaml is None:
          logger.warning("You must have PyYAML installed to use YAML as the serializer.\n"
 
</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     @staticmethod
    def get_serializer(filename):
        """ Set the serializer to be used for loading and
            saving alignments

            If a filename with a valid extension is passed in
            this will be used as the serializer, otherwise the
            compressed pickle will be used """
        logger.debug("Getting serializer: (filename: '%s')", filename)
        extension = os.path.splitext(filename)[1]
        if extension in (".json", ".p", ".yaml", ".yml"):
            logger.debug("Serializer set from filename extension: '%s'", extension)
            retval = get_serializer_from_filename(filename)
        else:
            logger.debug("Returning default Pickle serializer")
            retval = get_serializer("compressed")
        logger.verbose("Using '%s' serializer for alignments", retval.file_extension)
        return retval

 </s> add  </s> remove     def get_dest_format(self):
        """ Set the destination format for Alignments """
        dest_format = None
        if hasattr(self.args, 'alignment_format') and self.args.alignment_format:
            dest_format = self.args.alignment_format
        logger.debug(dest_format)
        return dest_format

 </s> add  </s> remove             logger.debug("File extension set from filename: '%s'", extension)
            location = os.path.join(str(folder), filename)
        else:
            location = os.path.join(str(folder),
                                    "{}.{}".format(filename,
                                                   self.serializer.file_extension))
 </s> add             # Reformat legacy alignments file
            filename = self.update_file_format(folder, filename)
            logger.debug("Updated legacy alignments. New filename: '%s'", filename)
        elif not extension:
            filename = "{}.{}".format(filename, self.serializer.file_extension)
    elif extension == ".fsa":
      elif extension == ".p":
          retval = _PickleSerializer()
      elif extension == ".npy":
          retval = _NPYSerializer()
    elif extension == ".fsa":
          retval = _CompressedSerializer()
      elif extension in (".yaml", ".yml") and yaml is not None:
          retval = _YAMLSerializer()
      elif extension in (".yaml", ".yml") and yaml is None:
          logger.warning("You must have PyYAML installed to use YAML as the serializer.\n"
keep keep keep keep 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 
lib/serializer.py