              The frame that pose is to be annotated on to
          face: :class:`lib.align.AlignedFace`
              The aligned face loaded for head centering
          """
          center = np.int32((face.aligned.size / 2, face.aligned.size / 2)).reshape(1, 2)
          center = np.rint(face.aligned.transform_points(center, invert=True)).astype("int32")
          points = face.aligned.pose.xyz_2d * face.aligned.size
          points = np.rint(face.aligned.transform_points(points, invert=True)).astype("int32")
          cv2.line(image, tuple(center), tuple(points[1]), (0, 255, 0), 2)
          cv2.line(image, tuple(center), tuple(points[0]), (255, 0, 0), 2)
 
</s> remove             y_center = (face.top + face.bottom) / 2.0 - face.h * 0.12
            scale = (face.w + face.h) * self.reference_scale
 </s> add             y_center = (face.top + face.bottom) / 2.0 - face.height * 0.12
            scale = (face.width + face.height) * self.reference_scale </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_size = (face.w ** 2 + face.h ** 2) ** 0.5
 </s> add                 face_size = (face.width ** 2 + face.height ** 2) ** 0.5 </s> remove             size = ((roi[1][0] - roi[0][0]) ** 2 +  # pylint:disable=unsubscriptable-object
                    (roi[1][1] - roi[0][1]) ** 2) ** 0.5  # pylint:disable=unsubscriptable-object
 </s> add             size = ((roi[1][0] - roi[0][0]) ** 2 + (roi[1][1] - roi[0][1]) ** 2) ** 0.5 </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()
        center = np.array((face.aligned.size / 2,
                           face.aligned.size / 2)).astype("int32").reshape(1, 2)
              The frame that pose is to be annotated on to
          face: :class:`lib.align.AlignedFace`
              The aligned face loaded for head centering
          """
        center = np.array((face.aligned.size / 2,
                           face.aligned.size / 2)).astype("int32").reshape(1, 2)
          center = np.rint(face.aligned.transform_points(center, invert=True)).astype("int32")
          points = face.aligned.pose.xyz_2d * face.aligned.size
          points = np.rint(face.aligned.transform_points(points, invert=True)).astype("int32")
          cv2.line(image, tuple(center), tuple(points[1]), (0, 255, 0), 2)
          cv2.line(image, tuple(center), tuple(points[0]), (255, 0, 0), 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/alignments/jobs.py