      from typing import Literal
  
  if TYPE_CHECKING:
      import numpy as np
      from lib.align.detected_face import DetectedFace
      from plugins.extract._base import Extractor as PluginExtractor
      from plugins.extract.detect._base import Detector
      from plugins.extract.align._base import Aligner
      from plugins.extract.mask._base import Masker
      from plugins.extract.recognition._base import Identity
 
</s> remove from lib.align import AlignedFace
 </s> add from lib.align import AlignedFace, DetectedFace
from lib.image import read_image_meta </s> remove from lib.face_filter import FaceFilter as FilterFunc
 </s> add  </s> remove if sys.version_info < (3, 8):
    from typing_extensions import get_args, Literal
else:
    from typing import get_args, Literal

 </s> add 
    from lib.align.alignments import PNGHeaderSourceDict
      from typing import Literal
  
  if TYPE_CHECKING:
      import numpy as np
    from lib.align.alignments import PNGHeaderSourceDict
      from lib.align.detected_face import DetectedFace
      from plugins.extract._base import Extractor as PluginExtractor
      from plugins.extract.detect._base import Detector
      from plugins.extract.align._base import Aligner
      from plugins.extract.mask._base import Masker
      from plugins.extract.recognition._base import Identity
keep keep keep add keep 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/pipeline.py