          self._mask = mask
          self._passes = passes
          kernel_size = self._get_kernel_size(kernel, is_ratio)
          self._kernel_size = self._get_kernel_tuple(kernel_size)
          logger.trace("Initialized %s", self.__class__.__name__)
  
      @property
      def blurred(self):
          """ :class:`numpy.ndarray`: The final mask with blurring applied. """
          func = self._func_mapping[self._blur_type]
 
</s> remove     def blurred(self):
 </s> add     def blurred(self) -> np.ndarray: </s> remove     def __init__(self, blur_type, mask, kernel, is_ratio=False, passes=1):
        logger.trace("Initializing %s: (blur_type: '%s', mask_shape: %s, kernel: %s, "
                     "is_ratio: %s, passes: %s)", self.__class__.__name__, blur_type, mask.shape,
                     kernel, is_ratio, passes)
        self._blur_type = blur_type.lower()
 </s> add     def __init__(self,
                 blur_type: Literal["gaussian", "normalized"],
                 mask: np.ndarray,
                 kernel: Union[int, float],
                 is_ratio: bool = False,
                 passes: int = 1) -> None:
        logger.trace("Initializing %s: (blur_type: '%s', mask_shape: %s, "  # type: ignore
                     "kernel: %s, is_ratio: %s, passes: %s)", self.__class__.__name__, blur_type,
                     mask.shape, kernel, is_ratio, passes)
        self._blur_type = blur_type </s> remove         self.aligned = None
        logger.trace("Initialized %s", self.__class__.__name__)
 </s> add         self._aligned: Optional[AlignedFace] = None
        logger.trace("Initialized %s", self.__class__.__name__)  # type: ignore </s> remove     def mask(self):
        """ numpy.ndarray: The mask at the size of :attr:`stored_size` with any requested blurring,
        threshold amount and centering applied."""
 </s> add     def mask(self) -> np.ndarray:
        """ :class:`numpy.ndarray`: The mask at the size of :attr:`stored_size` with any requested
        blurring, threshold amount and centering applied."""
        logger.trace("Initialized %s", self.__class__.__name__)  # type: ignore
          self._mask = mask
          self._passes = passes
          kernel_size = self._get_kernel_size(kernel, is_ratio)
          self._kernel_size = self._get_kernel_tuple(kernel_size)
        logger.trace("Initialized %s", self.__class__.__name__)  # type: ignore
  
      @property
      def blurred(self):
          """ :class:`numpy.ndarray`: The final mask with blurring applied. """
          func = self._func_mapping[self._blur_type]
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