  
      @staticmethod
      def to_detected_face(left, top, right, bottom):
          """ Return a :class:`~lib.align.DetectedFace` object for the bounding box """
          return DetectedFace(x=int(round(left)),
                              w=int(round(right - left)),
                              y=int(round(top)),
                              h=int(round(bottom - top)))
  
      # <<< PROTECTED ACCESS METHODS >>> #
      # <<< PREDICT WRAPPER >>> #
      def _predict(self, batch):
          """ Wrap models predict function in rotations """
 
</s> remove         logger.trace("Cropping face from image")
 </s> add         logger.trace("Cropping face from image")  # type: ignore </s> remove     def load_aligned(self, image, size=256, dtype=None, centering="head", force=False):
 </s> add     def load_aligned(self,
                     image: Optional[np.ndarray],
                     size: int = 256,
                     dtype: Optional[str] = None,
                     centering: "CenteringType" = "head",
                     coverage_ratio: float = 1.0,
                     force: bool = False,
                     is_aligned: bool = False,
                     is_legacy: bool = False) -> None: </s> remove         face.landmarks_xy = ((face.landmarks_xy - center) * scale) + center
 </s> add         face._landmarks_xy = ((face.landmarks_xy - center) * scale) + center </s> remove         logger.trace("Returning: %s", roi)
 </s> add         logger.trace("Returning: %s", roi)  # type: ignore </s> remove     def original_roi(self):
 </s> add     def original_roi(self) -> np.ndarray:
        return DetectedFace(left=int(round(left)),
                            width=int(round(right - left)),
                            top=int(round(top)),
                            height=int(round(bottom - top)))
  
      @staticmethod
      def to_detected_face(left, top, right, bottom):
          """ Return a :class:`~lib.align.DetectedFace` object for the bounding box """
        return DetectedFace(left=int(round(left)),
                            width=int(round(right - left)),
                            top=int(round(top)),
                            height=int(round(bottom - top)))
        return DetectedFace(left=int(round(left)),
                            width=int(round(right - left)),
                            top=int(round(top)),
                            height=int(round(bottom - top)))
        return DetectedFace(left=int(round(left)),
                            width=int(round(right - left)),
                            top=int(round(top)),
                            height=int(round(bottom - top)))
        return DetectedFace(left=int(round(left)),
                            width=int(round(right - left)),
                            top=int(round(top)),
                            height=int(round(bottom - top)))
  
      # <<< PROTECTED ACCESS METHODS >>> #
      # <<< PREDICT WRAPPER >>> #
      def _predict(self, batch):
          """ Wrap models predict function in rotations """
keep keep keep keep replace replace replace replace keep keep keep keep keep
 lib.align updates:
  - alignments.py
    - Add typed dicts for imported alignments
    - Explicitly check for presence of thumb value in alignments dict
    - linting
  - detected_face.py
    - Typing
    - Linting
    - Legacy support for pre-aligned face
    - Update dependencies to new property names 
plugins/extract/detect/_base.py