          logger.trace("stored mask shape: %s", mask.shape)
          return mask
  
      @property
      def original_roi(self):
          """ :class: `numpy.ndarray`: The original region of interest of the mask in the
          source frame. """
          points = np.array([[0, 0],
                             [0, self.stored_size - 1],
                             [self.stored_size - 1, self.stored_size - 1],
 
</s> remove         logger.trace("Returning: %s", roi)
 </s> add         logger.trace("Returning: %s", roi)  # type: ignore </s> remove         logger.trace("stored mask shape: %s", mask.shape)
 </s> add         logger.trace("stored mask shape: %s", mask.shape)  # type: ignore </s> remove     def stored_mask(self):
 </s> add     def stored_mask(self) -> np.ndarray: </s> remove         affine_matrix: numpy,ndarray
 </s> add         affine_matrix: :class:`numpy,ndarray`
    def original_roi(self) -> np.ndarray:
          logger.trace("stored mask shape: %s", mask.shape)
          return mask
  
      @property
    def original_roi(self) -> np.ndarray:
          """ :class: `numpy.ndarray`: The original region of interest of the mask in the
          source frame. """
          points = np.array([[0, 0],
                             [0, self.stored_size - 1],
                             [self.stored_size - 1, self.stored_size - 1],
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