  
  import numpy as np
  from tensorflow.python.framework import errors_impl as tf_errors  # pylint:disable=no-name-in-module  # noqa
  
  from lib.align import AlignedFace
  from lib.utils import FaceswapError, get_backend
  from plugins.extract._base import BatchType, Extractor, ExtractorBatch
  from plugins.extract.pipeline import ExtractMedia
  
  if TYPE_CHECKING:
 
</s> remove if sys.version_info < (3, 8):
    from typing_extensions import get_args, Literal
else:
    from typing import get_args, Literal

 </s> add  </s> remove from lib.face_filter import FaceFilter as FilterFunc
 </s> add 
from lib.align import AlignedFace, DetectedFace
from lib.image import read_image_meta
  
  import numpy as np
  from tensorflow.python.framework import errors_impl as tf_errors  # pylint:disable=no-name-in-module  # noqa
  
from lib.align import AlignedFace, DetectedFace
from lib.image import read_image_meta
  from lib.utils import FaceswapError, get_backend
  from plugins.extract._base import BatchType, Extractor, ExtractorBatch
  from plugins.extract.pipeline import ExtractMedia
  
  if TYPE_CHECKING:
keep keep keep keep replace keep keep keep keep keep
 Update Face Filter
  - Remove old face filter
  - plugins.extract.pipeline: Expose plugins directly
  - Change `is_aligned` from plugin level to ExtractMedia level
  - Allow extract pipeline to take faceswap aligned images
  - Add ability for recognition plugins to accept aligned faces as input
  - Add face filter to recognition plugin
  - Move extractor pipeline IO ops to own class 
plugins/extract/recognition/_base.py