          logger.trace("Active plugins: %s", retval)
          return retval
  
      @staticmethod
      def _set_flow(detector, aligner, masker):
          """ Set the flow list based on the input plugins """
          logger.debug("detector: %s, aligner: %s, masker: %s", detector, aligner, masker)
          retval = []
          if detector is not None and detector.lower() != "none":
              retval.append("detect")
 
</s> remove         logger.trace("Active plugins: %s", retval)
 </s> add         logger.trace("Active plugins: %s", retval)  # type: ignore </s> remove     def __init__(self, detector, aligner, masker, configfile=None, multiprocess=False,
                 exclude_gpus=None, rotate_images=None, min_size=20, normalize_method=None,
                 re_feed=0, image_is_aligned=False):
 </s> add     def __init__(self,
                 detector: str,
                 aligner: str,
                 masker: Union[str, List[str]],
                 configfile: Optional[str] = None,
                 multiprocess: bool = False,
                 exclude_gpus: Optional[List[int]] = None,
                 rotate_images: Optional[List[int]] = None,
                 min_size: int = 20,
                 normalize_method: Optional[str] = None,
                 re_feed: int = 0,
                 image_is_aligned: bool = False) -> None: </s> remove     def _load_align(self, aligner, configfile, normalize_method, re_feed):
 </s> add     def _load_align(self,
                    aligner: str,
                    configfile: Optional[str],
                    normalize_method: Optional[str],
                    re_feed: int) -> Optional["Aligner"]: </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"]:
    def _set_flow(detector: str, aligner: str, masker: List[str]) -> List[str]:
          logger.trace("Active plugins: %s", retval)
          return retval
  
      @staticmethod
    def _set_flow(detector: str, aligner: str, masker: List[str]) -> List[str]:
          """ Set the flow list based on the input plugins """
          logger.debug("detector: %s, aligner: %s, masker: %s", detector, aligner, masker)
          retval = []
          if detector is not None and detector.lower() != "none":
              retval.append("detect")
keep keep keep keep replace keep keep keep keep keep
 extract: Add batch processing mode 
plugins/extract/pipeline.py