          self._affine_matrix = self._adjust_affine_matrix(mask.shape[0], affine_matrix)
          self._interpolator = interpolator
          self.replace_mask(mask)
  
      def replace_mask(self, mask):
          """ Replace the existing :attr:`_mask` with the given mask.
  
          Parameters
          ----------
          mask: numpy.ndarray
 
</s> remove         mask: numpy.ndarray
 </s> add         mask: :class:`numpy.ndarray` </s> remove         logger.trace("mask shape: %s, mask dtype: %s, mask min: %s, mask max: %s, "
 </s> add         logger.trace("mask shape: %s, mask dtype: %s, mask min: %s, mask max: %s, "  # type: ignore </s> remove     def get_full_frame_mask(self, width, height):
 </s> add     def get_full_frame_mask(self, width: int, height: int) -> np.ndarray: </s> remove         mask: numpy.ndarray
 </s> add         mask: :class:`numpy.ndarray` </s> remove         affine_matrix: numpy.ndarray
 </s> add         affine_matrix: :class:`numpy.ndarray`
    def replace_mask(self, mask: np.ndarray) -> None:
          self._affine_matrix = self._adjust_affine_matrix(mask.shape[0], affine_matrix)
          self._interpolator = interpolator
          self.replace_mask(mask)
  
    def replace_mask(self, mask: np.ndarray) -> None:
          """ Replace the existing :attr:`_mask` with the given mask.
  
          Parameters
          ----------
          mask: numpy.ndarray
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