                  items = [items]
              for item in items:
                  logger.trace("Patch queue got: '%s'", item["filename"])
                  try:
                      image = self.patch_image(item)
                  except Exception as err:  # pylint: disable=broad-except
                      # Log error and output original frame
                      logger.error("Failed to convert image: '%s'. Reason: %s",
                                   item["filename"], str(err))
                      image = item["image"]
 
</s> remove                     # raise an error on numeric datatypes so return 0
 </s> add                     # raise an error on numeric data types so return 0 </s> remove         # Signal that this process has finished
        if completion_queue is not None:
            completion_queue.put(1)
 </s> add  </s> remove         """ Update config with selected values """
 </s> add         """ Update :attr:`config` with the currently selected values from the GUI. """ </s> remove             while idx < self.sample_size:
                logger.debug("Predicting face %s of %s", idx + 1, self.sample_size)
                items = self.predictor.out_queue.get()
 </s> add             while idx < self._sample_size:
                logger.debug("Predicting face %s of %s", idx + 1, self._sample_size)
                items = self._predictor.out_queue.get() </s> remove                 self.args.scaling,
                disable_logging=disable_logging)(configfile=self.configfile, config=config)
        logger.debug("Loaded plugins: %s", self.adjustments)

    def process(self, in_queue, out_queue, completion_queue=None):
        """ Process items from the queue """
        logger.debug("Starting convert process. (in_queue: %s, out_queue: %s, completion_queue: "
                     "%s)", in_queue, out_queue, completion_queue)
 </s> add                 self._args.scaling,
                disable_logging=disable_logging)(configfile=self._configfile, config=config)
        logger.debug("Loaded plugins: %s", self._adjustments)

    def process(self, in_queue, out_queue):
        """ Main convert process.

        Takes items from the in queue, runs the relevant adjustments, patches faces to final frame
        and outputs patched frame to the out queue.

        Parameters
        ----------
        in_queue: :class:`queue.Queue`
            The output from :class:`scripts.convert.Predictor`. Contains detected faces from the
            Faceswap model as well as the frame to be patched.
        out_queue: :class:`queue.Queue`
            The queue to place patched frames into for writing by one of Faceswap's
            :mod:`plugins.convert.writer` plugins.
        """
        logger.debug("Starting convert process. (in_queue: %s, out_queue: %s)",
                     in_queue, out_queue)
                    image = self._patch_image(item)
                  items = [items]
              for item in items:
                  logger.trace("Patch queue got: '%s'", item["filename"])
                  try:
                    image = self._patch_image(item)
                  except Exception as err:  # pylint: disable=broad-except
                      # Log error and output original frame
                      logger.error("Failed to convert image: '%s'. Reason: %s",
                                   item["filename"], str(err))
                      image = item["image"]
keep keep keep keep replace keep keep keep keep keep
 Smart Masks to Convert (#957)

- scripts.convert - Use Smart Masks for Convert
    * Make on-the-fly conversion an explicit option

- Move BlurMask to lib.faces_detect

- tools.preview - Fix for smart masks
    * Subclass from tk.Tk
    * Options to lib.gui.control_helper
    *variable cleanup

- lib.logger - Demote more tensorflow deprecation messages

- Documentation:
    * lib.faces_detect.BlurMask
    * plugins.convert.mask
    * lib.convert
    * scripts.convert
    * scripts.fsmedia
    * tools.preview 
lib/convert.py