  ===========
  
  .. toctree::
  
     lib.convert
     lib.faces_detect
     lib.image
     lib.serializer
 
</s> remove         """ Write the serialized alignments file """
 </s> add         """ Write the contents of :attr:`data` to a serialized ``.fsa`` file at the location
        :attr:`file`. """ </s> remove         """ Backup copy of old alignments """
 </s> add         """ Create a backup copy of the alignments :attr:`file`.

        Creates a copy of the serialized alignments :attr:`file` appending a
        timestamp onto the end of the file name and storing in the same folder as
        the original :attr:`file`.
        """ </s> remove         if not os.path.isfile(self.file):
 </s> add         if not os.path.isfile(self._file): </s> remove         src = self.file
 </s> add         src = self._file </s> remove     def frame_exists(self, frame):
        """ return path of images that have faces """
        retval = frame in self.data.keys()
        logger.trace("'%s': %s", frame, retval)
 </s> add     def frame_exists(self, frame_name):
        """ Check whether a given frame_name exists within the alignments :attr:`data`.

        Parameters
        ----------
        frame_name: str
            The frame name to check. This should be the base name of the frame, not the full path

        Returns
        -------
        bool
            ``True`` if the given frame_name exists within the alignments :attr:`data`
            otherwise ``False``
        """
        retval = frame_name in self._data.keys()
        logger.trace("'%s': %s", frame_name, retval)
   lib.alignments
  ===========
  
  .. toctree::
  
   lib.alignments
     lib.convert
     lib.faces_detect
     lib.image
     lib.serializer
keep keep keep add keep keep keep keep
 lib.alignments - Slight update (#978)

* lib.alignments update:
  - Minor structure change (faces to nested dictionary)
  - Refactor internal and external methods
  - Documentation 
docs/full/lib.rst