          self._threshold = 0.0
          self._sub_crop_size = 0
          self._sub_crop_slices: Dict[Literal["in", "out"], List[slice]] = {}
          self.set_blur_and_threshold()
          logger.trace("Initialized: %s", self.__class__.__name__)
  
      @property
      def mask(self):
          """ numpy.ndarray: The mask at the size of :attr:`stored_size` with any requested blurring,
          threshold amount and centering applied."""
 
</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.""" </s> remove         if self._threshold != 0.0 or self._blur["kernel"] != 0:
 </s> add         if self._threshold != 0.0 or self._blur_kernel != 0: </s> remove         self._blur = dict()
        self._blur_kernel = 0
 </s> add         self._blur_type: Optional[Literal["gaussian", "normalized"]] = None
        self._blur_passes: int = 0
        self._blur_kernel: Union[float, int] = 0 </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:
        logger.trace("Initialized: %s", self.__class__.__name__)  # type: ignore
          self._threshold = 0.0
          self._sub_crop_size = 0
          self._sub_crop_slices: Dict[Literal["in", "out"], List[slice]] = {}
          self.set_blur_and_threshold()
        logger.trace("Initialized: %s", self.__class__.__name__)  # type: ignore
  
      @property
      def mask(self):
          """ numpy.ndarray: The mask at the size of :attr:`stored_size` with any requested blurring,
          threshold amount and centering applied."""
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