          """
          logger.trace("frame_index: %s, face_index %s, pnt_x %s, width %s, pnt_y %s, height %s, "
                       "aligner: %s", frame_index, face_index, pnt_x, width, pnt_y, height, aligner)
          face = self._faces_at_frame_index(frame_index)[face_index]
          face.x = pnt_x
          face.w = width
          face.y = pnt_y
          face.h = height
          face.landmarks_xy = self._extractor.get_landmarks(frame_index, face_index, aligner)
          self._globals.tk_update.set(True)
  
      def landmark(self, frame_index, face_index, landmark_index, shift_x, shift_y, is_zoomed):
          """ Shift a single landmark point for the :class:`~lib.align.DetectedFace` object
          at the given frame and face indices by the given x and y values.
 
</s> remove         face.landmarks_xy = cv2.transform(np.expand_dims(face.landmarks_xy, axis=0),
                                          rot_mat).squeeze()
 </s> add         face._landmarks_xy = cv2.transform(np.expand_dims(face.landmarks_xy, axis=0),
                                           rot_mat).squeeze() </s> remove         face.landmarks_xy = ((face.landmarks_xy - center) * scale) + center
 </s> add         face._landmarks_xy = ((face.landmarks_xy - center) * scale) + center </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         face.x = int(pt_x)
        face.y = int(pt_y)
        face.w = int(width)
        face.h = int(height)
 </s> add         face.left = int(pt_x)
        face.top = int(pt_y)
        face.width = int(width)
        face.height = int(height) </s> remove                      image.shape if image is not None and image.any() else image,
                     x, w, y, h, landmarks_xy,
                     {k: v.shape for k, v in mask} if mask is not None else mask,
                     filename)
 </s> add                      image.shape if image is not None and image.any() else image, left, width, top,
                     height, landmarks_xy, mask, filename)
        face.left = pnt_x
        face.width = width
        face.top = pnt_y
        face.height = height
        face._landmarks_xy = self._extractor.get_landmarks(frame_index, face_index, aligner)
          """
          logger.trace("frame_index: %s, face_index %s, pnt_x %s, width %s, pnt_y %s, height %s, "
                       "aligner: %s", frame_index, face_index, pnt_x, width, pnt_y, height, aligner)
          face = self._faces_at_frame_index(frame_index)[face_index]
        face.left = pnt_x
        face.width = width
        face.top = pnt_y
        face.height = height
        face._landmarks_xy = self._extractor.get_landmarks(frame_index, face_index, aligner)
        face.left = pnt_x
        face.width = width
        face.top = pnt_y
        face.height = height
        face._landmarks_xy = self._extractor.get_landmarks(frame_index, face_index, aligner)
        face.left = pnt_x
        face.width = width
        face.top = pnt_y
        face.height = height
        face._landmarks_xy = self._extractor.get_landmarks(frame_index, face_index, aligner)
        face.left = pnt_x
        face.width = width
        face.top = pnt_y
        face.height = height
        face._landmarks_xy = self._extractor.get_landmarks(frame_index, face_index, aligner)
        face.left = pnt_x
        face.width = width
        face.top = pnt_y
        face.height = height
        face._landmarks_xy = self._extractor.get_landmarks(frame_index, face_index, aligner)
          self._globals.tk_update.set(True)
  
      def landmark(self, frame_index, face_index, landmark_index, shift_x, shift_y, is_zoomed):
          """ Shift a single landmark point for the :class:`~lib.align.DetectedFace` object
          at the given frame and face indices by the given x and y values.
keep keep keep keep replace 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 
tools/manual/detected_faces.py