  
  import cv2
  import numpy as np
  
  from ._base import Aligner, logger
  
  
  class Align(Aligner):
      """ Perform transformation to align and get landmarks """
      def __init__(self, **kwargs):
 
</s> remove from ._base import Aligner, logger
 </s> add from ._base import Aligner, AlignerBatch, logger

if TYPE_CHECKING:
    from lib.align import DetectedFace </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:
from ._base import Aligner, AlignerBatch, logger

if TYPE_CHECKING:
    from lib.align.detected_face import DetectedFace
  
  import cv2
  import numpy as np
  
from ._base import Aligner, AlignerBatch, logger

if TYPE_CHECKING:
    from lib.align.detected_face import DetectedFace
  
  
  class Align(Aligner):
      """ Perform transformation to align and get landmarks """
      def __init__(self, **kwargs):
keep keep keep keep 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/cv2_dnn.py