          for phase in self._current_phase:
              plugin_type, idx = self._get_plugin_type_and_index(phase)
              attr = getattr(self, f"_{plugin_type}")
              retval.append(attr[idx] if idx is not None else attr)
          logger.trace("Active plugins: %s", retval)
          return retval
  
      @staticmethod
      def _set_flow(detector, aligner, masker):
          """ Set the flow list based on the input plugins """
 
</s> remove     def _set_flow(detector, aligner, masker):
 </s> add     def _set_flow(detector: str, aligner: str, masker: List[str]) -> List[str]: </s> remove         logger.trace("All Plugins: %s", retval)
 </s> add         logger.trace("All Plugins: %s", retval)  # type: ignore </s> remove     def _active_plugins(self):
 </s> add     def _active_plugins(self) -> List["PluginExtractor"]: </s> remove         logger.trace(retval)
 </s> add         logger.trace(retval)  # type: ignore </s> remove     def _all_plugins(self):
 </s> add     def _all_plugins(self) -> List["PluginExtractor"]:
        logger.trace("Active plugins: %s", retval)  # type: ignore
          for phase in self._current_phase:
              plugin_type, idx = self._get_plugin_type_and_index(phase)
              attr = getattr(self, f"_{plugin_type}")
              retval.append(attr[idx] if idx is not None else attr)
        logger.trace("Active plugins: %s", retval)  # type: ignore
          return retval
  
      @staticmethod
      def _set_flow(detector, aligner, masker):
          """ Set the flow list based on the input plugins """
keep keep keep keep replace keep keep keep keep keep
 extract: Add batch processing mode 
plugins/extract/pipeline.py