  
              filter_out=True: Remove faces that match in the hash list
              filter_out=False: Remove faces that are not in the hash list
          """
          hashset = set(hashlist)
          for filename, frame in self.data.items():
              for idx, face in reversed(list(enumerate(frame))):
                  if ((filter_out and face.get("hash", None) in hashset) or
                          (not filter_out and face.get("hash", None) not in hashset)):
                      logger.verbose("Filtering out face: (filename: %s, index: %s)", filename, idx)
                      del frame[idx]
                  else:
 
</s> remove                     del frame[idx]
 </s> add                     del val["faces"][idx] </s> remove             filter_out=True: Remove faces that match in the hash list
            filter_out=False: Remove faces that are not in the hash list
 </s> add         Parameters
        ----------
        hash_list: list
            List of SHA1 hashes in `str` format to use as a filter against :attr:`data`
        filter_out: bool, optional
            ``True`` if faces should be removed from :attr:`data` when there is a corresponding
            match in the given hash_list. ``False`` if faces should be kept in :attr:`data` when
            there is a corresponding match in the given hash_list, but removed if there is no
            match. Default: ``False`` </s> remove     def filter_hashes(self, hashlist, filter_out=False):
        """ Filter in or out faces that match the hash list
 </s> add     def filter_hashes(self, hash_list, filter_out=False):
        """ Remove faces from :attr:`data` based on a given hash list. </s> remove     def update_face(self, frame, idx, alignment):
        """ Replace a face for given frame and index """
        logger.debug("Updating face %s for frame '%s'", idx, frame)
        self.data[frame][idx] = alignment
 </s> add     def update_face(self, frame_name, face_index, face):
        """ Update the face for the given frame_name at the given face index in :attr:`data`.

        Parameters
        ----------
        frame_name: str
            The frame name to update the face for. This should be the base name of the frame, not
            the full path
        face_index: int
            The index number of the face within the given frame_name to update
        face: dict
            The face information to update to the given frame_name at the given face_index,
            correctly formatted for storing in :attr:`data`
        """
        logger.debug("Updating face %s for frame_name '%s'", face_index, frame_name)
        self._data[frame_name]["faces"][face_index] = face </s> remove         """ Return :attr:`_hashes_to_frame`. Generate it if it does not exist.
            The dict is of each face_hash with their parent frame name(s) and their index
            in the frame
 </s> add         """ dict: The SHA1 hash of the face mapped to the frame(s) and face index within the frame
        that the hash corresponds to. The structure of the dictionary is:

        {**SHA1_hash** (`str`): {**filename** (`str`): **face_index** (`int`)}}.

        Notes
        -----
        The first time this property is referenced, the dictionary will be created and cached.
        Subsequent references will be made to this cached dictionary.
        hashset = set(hash_list)
        for filename, val in self._data.items():
            for idx, face in reversed(list(enumerate(val["faces"]))):
  
              filter_out=True: Remove faces that match in the hash list
              filter_out=False: Remove faces that are not in the hash list
          """
        hashset = set(hash_list)
        for filename, val in self._data.items():
            for idx, face in reversed(list(enumerate(val["faces"]))):
        hashset = set(hash_list)
        for filename, val in self._data.items():
            for idx, face in reversed(list(enumerate(val["faces"]))):
        hashset = set(hash_list)
        for filename, val in self._data.items():
            for idx, face in reversed(list(enumerate(val["faces"]))):
                  if ((filter_out and face.get("hash", None) in hashset) or
                          (not filter_out and face.get("hash", None) not in hashset)):
                      logger.verbose("Filtering out face: (filename: %s, index: %s)", filename, idx)
                      del frame[idx]
                  else:
keep keep keep keep replace replace replace keep 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 
lib/alignments.py