          logger.trace("%s: %s", qname, retval)
          return retval
  
      @property
      def passes(self):
          """ int: Returns the total number of passes the extractor needs to make.
  
          This is calculated on several factors (vram available, plugin choice,
          :attr:`multiprocess` etc.). It is useful for iterating over the pipeline
          and handling accordingly.
 
</s> remove         logger.trace("%s: %s", qname, retval)
 </s> add         logger.trace("%s: %s", qname, retval)  # type: ignore </s> remove     def final_pass(self):
 </s> add     def final_pass(self) -> bool: </s> remove         logger.trace("%s: %s", qname, retval)
 </s> add         logger.trace("%s: %s", qname, retval)  # type: ignore </s> remove     def _all_plugins(self):
 </s> add     def _all_plugins(self) -> List["PluginExtractor"]: </s> remove     def _get_plugin_type_and_index(flow_phase):
 </s> add     def _get_plugin_type_and_index(flow_phase: str) -> Tuple[str, Optional[int]]:
    def passes(self) -> int:
          logger.trace("%s: %s", qname, retval)
          return retval
  
      @property
    def passes(self) -> int:
          """ int: Returns the total number of passes the extractor needs to make.
  
          This is calculated on several factors (vram available, plugin choice,
          :attr:`multiprocess` etc.). It is useful for iterating over the pipeline
          and handling accordingly.
keep keep keep keep replace keep keep keep keep keep
 extract: Add batch processing mode 
plugins/extract/pipeline.py