          >>>     else:
          >>>         extract_media.set_image(image)
          >>>         extractor.input_queue.put(extract_media)
          """
          retval = 1 if self._is_parallel else len(self._flow)
          logger.trace(retval)
          return retval
  
      @property
      def final_pass(self):
 
</s> remove         retval = self._is_parallel or self.phase == self._final_phase
 </s> add         retval = self._phase_index == len(self._phases) - 1 </s> remove 
        if self._is_parallel:
            for phase in self._flow:
                self._launch_plugin(phase)
        else:
            self._launch_plugin(self.phase)
 </s> add         for phase in self._current_phase:
            self._launch_plugin(phase) </s> remove             self.phase = self._next_phase
            logger.debug("Switching to %s phase", self.phase)
 </s> add             self._phase_index += 1
            logger.debug("Switching to phase: %s", self._current_phase) </s> remove         logger.debug("Running Detection. Phase: '%s'", self.phase)
 </s> add         logger.debug("Running Detection. Phase: '%s'", self._current_phase) </s> remove         if self.passes == 1:
            retval = self._all_plugins
        else:
            retval = [getattr(self, "_{}".format(self.phase))]
 </s> add         retval = []
        for phase in self._current_phase:
            plugin_type, idx = self._get_plugin_type_and_index(phase)
            attr = getattr(self, "_{}".format(plugin_type))
            retval.append(attr[idx] if idx is not None else attr)
        retval = len(self._phases)
        logger.trace(retval)
        return retval

    @property
    def phase_text(self):
        """ str: The plugins that are running in the current phase, formatted for info text
        output. """
        plugin_types = set(self._get_plugin_type_and_index(phase)[0]
                           for phase in self._current_phase)
        retval = ", ".join(plugin_type.title() for plugin_type in list(plugin_types))
          >>>     else:
          >>>         extract_media.set_image(image)
          >>>         extractor.input_queue.put(extract_media)
          """
        retval = len(self._phases)
        logger.trace(retval)
        return retval

    @property
    def phase_text(self):
        """ str: The plugins that are running in the current phase, formatted for info text
        output. """
        plugin_types = set(self._get_plugin_type_and_index(phase)[0]
                           for phase in self._current_phase)
        retval = ", ".join(plugin_type.title() for plugin_type in list(plugin_types))
          logger.trace(retval)
          return retval
  
      @property
      def final_pass(self):
keep keep keep keep replace keep keep keep keep keep
 Extract - Better VRAM Allocation in Extraction Pipeline 
plugins/extract/pipeline.py