          method = None if method is None or method.lower() == "none" else method
          self._normalize_method = method
  
      # << QUEUE METHODS >>> #
      def get_batch(self, queue):
          """ Get items for inputting into the aligner from the queue in batches
  
          Items are returned from the ``queue`` in batches of
          :attr:`~plugins.extract._base.Extractor.batchsize`
  
 
</s> remove         self._normalize_method = method
 </s> add         self._normalize_method = cast(Optional[Literal["clahe", "hist", "mean"]], method) </s> remove         self._faces_per_filename = {}  # Tracking for recompiling face batches
        self._rollover = None  # Items that are rolled over from the previous batch in get_batch
        self._output_faces = []
        self._additional_keys = []
 </s> add         self._faces_per_filename: Dict[str, int] = {}  # Tracking for recompiling batches
        self._rollover: Optional[ExtractMedia] = None  # batch rollover items
        self._output_faces: List[DetectedFace] = []
        self._filter = AlignedFilter(min_scale=self.config["aligner_min_scale"],
                                     max_scale=self.config["aligner_max_scale"],
                                     distance=self.config["aligner_distance"]) </s> remove     def _normalize_faces(self, faces):
 </s> add     def _normalize_faces(self, faces: List[np.ndarray]) -> List[np.ndarray]: </s> remove     def _collect_item(self, queue):
        """ Collect the item from the :attr:`_rollover` dict or from the queue
            Add face count per frame to self._faces_per_filename for joining
            batches back up in finalize """
 </s> add     def _collect_item(self, queue: "Queue") -> Union[Literal["EOF"], ExtractMedia]:
        """ Collect the item from the :attr:`_rollover` dict or from the queue. Add face count per
        frame to self._faces_per_filename for joining batches back up in finalize

        Parameters
        ----------
        queue: :class:`queue.Queue`
            The input queue to the aligner. Should contain
            :class:`~plugins.extract.pipeline.ExtractMedia` objects

        Returns
        -------
        :class:`~plugins.extract.pipeline.ExtractMedia` or EOF
            The next extract media object, or EOF if pipe has ended
        """ </s> remove             logger.trace("Getting from _rollover: (filename: `%s`, faces: %s)",
 </s> add             logger.trace("Getting from _rollover: (filename: `%s`, faces: %s)",  # type:ignore
    def get_batch(self, queue: "Queue") -> Tuple[bool, AlignerBatch]:
          method = None if method is None or method.lower() == "none" else method
          self._normalize_method = method
  
      # << QUEUE METHODS >>> #
    def get_batch(self, queue: "Queue") -> Tuple[bool, AlignerBatch]:
          """ Get items for inputting into the aligner from the queue in batches
  
          Items are returned from the ``queue`` in batches of
          :attr:`~plugins.extract._base.Extractor.batchsize`
  
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/_base.py