          # Manual tool and legacy alignments will not have a mask
          self.aligned = None
  
          if alignment.get("mask", None) is not None:
              self.mask = dict()
              for name, mask_dict in alignment["mask"].items():
                  self.mask[name] = Mask()
                  self.mask[name].from_dict(mask_dict)
          if image is not None and image.any():
              self._image_to_face(image)
 
</s> remove         self.aligned = None
 </s> add         self._aligned = None </s> remove             self.thumbnail = alignment.get("thumb", None)
 </s> add             self.thumbnail = alignment.get("thumb") </s> remove         self.landmarks_xy = landmarks.copy()
 </s> add         self._landmarks_xy = landmarks.copy() </s> remove         self.x = alignment["x"]
        self.w = alignment["w"]
        self.y = alignment["y"]
        self.h = alignment["h"]
        self.landmarks_xy = np.array(alignment["landmarks_xy"], dtype="float32")
        self.mask = dict()
 </s> add         self.left = alignment["x"]
        self.width = alignment["w"]
        self.top = alignment["y"]
        self.height = alignment["h"]
        self._landmarks_xy = np.array(alignment["landmarks_xy"], dtype="float32")
        self.mask = {} </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)
            self.mask = {}
          # Manual tool and legacy alignments will not have a mask
          self.aligned = None
  
          if alignment.get("mask", None) is not None:
            self.mask = {}
              for name, mask_dict in alignment["mask"].items():
                  self.mask[name] = Mask()
                  self.mask[name].from_dict(mask_dict)
          if image is not None and image.any():
              self._image_to_face(image)
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