      plugins.extract.detect._base : Detector parent class for extraction plugins.
      plugins.extract.mask._base : Masker parent class for extraction plugins.
      """
  
      def __init__(self, git_model_id=None, model_filename=None,
                   configfile=None, instance=0, normalize_method=None, re_feed=0, **kwargs):
          logger.debug("Initializing %s: (normalize_method: %s, re_feed: %s)",
                       self.__class__.__name__, normalize_method, re_feed)
          super().__init__(git_model_id,
                           model_filename,
                           configfile=configfile,
 
</s> remove                  min_size: int = 20,
                 normalize_method: Optional[str] = None,
 </s> add                  min_size: int = 0,
                 normalize_method:  Optional[Literal["none", "clahe", "hist", "mean"]] = None, </s> remove     def __init__(self, **kwargs):
 </s> add     def __init__(self, **kwargs) -> None: </s> remove     def __init__(self, **kwargs):
 </s> add     def __init__(self, **kwargs) -> None: </s> remove from ._base import Aligner, logger
 </s> add from ._base import Aligner, AlignerBatch, logger

if TYPE_CHECKING:
    from lib.align.detected_face import DetectedFace </s> remove         batch : dict
            The final ``dict`` from the `plugin` process. It must contain the `keys`:
            ``detected_faces``, ``landmarks``, ``filename``
 </s> add         batch : :class:`AlignerBatch`
            The final batch item from the `plugin` process.
    def __init__(self,
                 git_model_id: Optional[int] = None,
                 model_filename: Optional[str] = None,
                 configfile: Optional[str] = None,
                 instance: int = 0,
                 normalize_method: Optional[Literal["none", "clahe", "hist", "mean"]] = None,
                 re_feed: int = 0, **kwargs) -> None:
      plugins.extract.detect._base : Detector parent class for extraction plugins.
      plugins.extract.mask._base : Masker parent class for extraction plugins.
      """
  
    def __init__(self,
                 git_model_id: Optional[int] = None,
                 model_filename: Optional[str] = None,
                 configfile: Optional[str] = None,
                 instance: int = 0,
                 normalize_method: Optional[Literal["none", "clahe", "hist", "mean"]] = None,
                 re_feed: int = 0, **kwargs) -> None:
    def __init__(self,
                 git_model_id: Optional[int] = None,
                 model_filename: Optional[str] = None,
                 configfile: Optional[str] = None,
                 instance: int = 0,
                 normalize_method: Optional[Literal["none", "clahe", "hist", "mean"]] = None,
                 re_feed: int = 0, **kwargs) -> None:
          logger.debug("Initializing %s: (normalize_method: %s, re_feed: %s)",
                       self.__class__.__name__, normalize_method, re_feed)
          super().__init__(git_model_id,
                           model_filename,
                           configfile=configfile,
keep keep keep keep replace replace keep keep keep keep keep
 Extract updates:
  - Default CPU detector to MTCNN
  - add basic Aligner false positive filters
  - Typing: align + plugins
  - Use specific AlignerBatch class for alignment
  - 
plugins/extract/align/_base.py