          if is_zoomed:
              aligned = AlignedFace(face.landmarks_xy,
                                    centering="face",
                                    size=min(self._globals.frame_display_dims))
              landmark = aligned.landmarks[landmark_index]  # pylint:disable=unsubscriptable-object
              landmark += (shift_x, shift_y)
              matrix = aligned.adjusted_matrix
              matrix = cv2.invertAffineTransform(matrix)
              if landmark.ndim == 1:
                  landmark = np.reshape(landmark, (1, 1, 2))
 
</s> remove         logger.trace("Returning: %s", roi)
 </s> add         logger.trace("Returning: %s", roi)  # type: ignore </s> remove         face.x += shift_x
        face.y += shift_y
        face.landmarks_xy += (shift_x, shift_y)
 </s> add         face.left += shift_x
        face.top += shift_y
        face._landmarks_xy += (shift_x, shift_y) </s> remove             logger.trace("Loading aligned face: (size: %s, dtype: %s)", size, dtype)
            self.aligned = AlignedFace(self.landmarks_xy,
                                       image=image,
                                       centering=centering,
                                       size=size,
                                       coverage_ratio=1.0,
                                       dtype=dtype,
                                       is_aligned=False)
 </s> add             logger.trace("Loading aligned face: (size: %s, dtype: %s)",  # type: ignore
                         size, dtype)
            self._aligned = AlignedFace(self.landmarks_xy,
                                        image=image,
                                        centering=centering,
                                        size=size,
                                        coverage_ratio=coverage_ratio,
                                        dtype=dtype,
                                        is_aligned=is_aligned,
                                        is_legacy=is_aligned and is_legacy) </s> remove         face = DetectedFace(x=0, w=width, y=0, h=height)
 </s> add         face = DetectedFace(left=0, width=width, top=0, height=height) </s> remove                 output = "{}_{}{}".format(frame_name, str(face_idx), ".png")
 </s> add                 output = f"{frame_name}_{face_idx}.png"
            landmark = aligned.landmarks[landmark_index]
          if is_zoomed:
              aligned = AlignedFace(face.landmarks_xy,
                                    centering="face",
                                    size=min(self._globals.frame_display_dims))
            landmark = aligned.landmarks[landmark_index]
              landmark += (shift_x, shift_y)
              matrix = aligned.adjusted_matrix
              matrix = cv2.invertAffineTransform(matrix)
              if landmark.ndim == 1:
                  landmark = np.reshape(landmark, (1, 1, 2))
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 
tools/manual/detected_faces.py