                  self._alignments.backup()
                  self._alignments.save()
              if self._input_is_faces:
                  self._faces_saver.close()
          else:
              self._extractor_input_thread.join()
              self._saver.close()
  
          if self._counts["skip"] != 0:
              logger.warning("%s face(s) skipped due to not existing in the alignments file",
                             self._counts["skip"])
 
</s> remove             self._extractor_input_thread.join()
 </s> add  </s> remove     def add_queue(self, name, maxsize=0):
        """ Add a queue to the manager

            Adds an event "shutdown" to the queue that can be used to indicate
            to a process that any activity on the queue should cease """

        logger.debug("QueueManager adding: (name: '%s', maxsize: %s)", name, maxsize)
        if name in self.queues.keys():
 </s> add     def add_queue(self, name, maxsize=0, create_new=False):
        """ Add a queue to the manager.

        Adds an event "shutdown" to the queue that can be used to indicate to a process that any
        activity on the queue should cease.

        Parameters
        ----------
        name: str
            The name of the queue to create
        maxsize: int, optional
            The maximum queue size. Set to `0` for unlimited. Default: `0`
        create_new: bool, optional
            If a queue of the given name exists, and this value is ``False``, then an error is
            raised preventing the creation of duplicate queues. If this value is ``True`` and
            the given name exists then an integer is appended to the end of the queue name and
            incremented until the given name is unique. Default: ``False``

        Returns
        -------
        str
            The final generated name for the queue
        """
        logger.debug("QueueManager adding: (name: '%s', maxsize: %s, create_new: %s)",
                     name, maxsize, create_new)
        if not create_new and name in self.queues: </s> remove         self._queue = queue_manager.get_queue(name=self.__class__.__name__, maxsize=queue_size)
 </s> add         queue_name = queue_manager.add_queue(name=self.__class__.__name__,
                                             maxsize=queue_size,
                                             create_new=True)
        self._queue = queue_manager.get_queue(queue_name) </s> remove         for q_name in self.queues.keys():
 </s> add         for q_name in self.queues:
        self._extractor_input_thread.join()
        if self._saver is not None:
                  self._alignments.backup()
                  self._alignments.save()
              if self._input_is_faces:
                  self._faces_saver.close()
        self._extractor_input_thread.join()
        if self._saver is not None:
        self._extractor_input_thread.join()
        if self._saver is not None:
              self._saver.close()
  
          if self._counts["skip"] != 0:
              logger.warning("%s face(s) skipped due to not existing in the alignments file",
                             self._counts["skip"])
keep keep keep keep replace replace keep keep keep keep keep
 bugfix: lib.image ImageIO. Ensure unique queues are created 
tools/mask/mask.py