                       "mask: %s)", self.x, self.w, self.y, self.h, self.landmarks_xy, self.mask)
  
      def _image_to_face(self, image):
          """ set self.image to be the cropped face from detected bounding box """
          logger.trace("Cropping face from image")
          self.image = image[self.top: self.bottom,
                             self.left: self.right]
  
      # <<< Aligned Face methods and properties >>> #
      def load_aligned(self, image, size=256, dtype=None, centering="head", force=False):
 
</s> remove     def _image_to_face(self, image):
 </s> add     def _image_to_face(self, image: np.ndarray) -> None: </s> remove         logger.trace("Created from png exif header: (x: %s, w: %s, y: %s. h: %s, landmarks: %s, "
                     "mask: %s)", self.x, self.w, self.y, self.h, self.landmarks_xy, self.mask)
 </s> add         logger.trace("Created from png exif header: (left: %s, width: %s, top: %s "  # type: ignore
                     " height: %s, andmarks: %s, mask: %s)", self.left, self.width, self.top,
                     self.height, self.landmarks_xy, self.mask) </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         logger.trace("Created from alignment: (x: %s, w: %s, y: %s. h: %s, "
                     "landmarks: %s, mask: %s)",
                     self.x, self.w, self.y, self.h, self.landmarks_xy, self.mask)
 </s> add         logger.trace("Created from alignment: (left: %s, width: %s, top: %s, "  # type: ignore
                     "height: %s, landmarks: %s, mask: %s)", self.left, self.width, self.top,
                     self.height, self.landmarks_xy, self.mask) </s> remove     def to_png_meta(self):
 </s> add     def to_png_meta(self) -> PNGHeaderAlignmentsDict:
        logger.trace("Cropping face from image")  # type: ignore
                       "mask: %s)", self.x, self.w, self.y, self.h, self.landmarks_xy, self.mask)
  
      def _image_to_face(self, image):
          """ set self.image to be the cropped face from detected bounding box """
        logger.trace("Cropping face from image")  # type: ignore
          self.image = image[self.top: self.bottom,
                             self.left: self.right]
  
      # <<< Aligned Face methods and properties >>> #
      def load_aligned(self, image, size=256, dtype=None, centering="head", force=False):
keep keep keep keep 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 
lib/align/detected_face.py