      >>> new_mask = BlurMask("gaussian", mask, 3, is_ratio=False, passes=1).blurred
      >>> print(new_mask.shape)
      (128, 128, 1)
      """
      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()
          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__)
 
</s> remove         logger.trace("Initialized %s", self.__class__.__name__)
 </s> add         logger.trace("Initialized %s", self.__class__.__name__)  # type: ignore </s> remove     def __init__(self, image=None, x=None, w=None, y=None, h=None, landmarks_xy=None, mask=None,
                 filename=None):
        logger.trace("Initializing %s: (image: %s, x: %s, w: %s, y: %s, h:%s, landmarks_xy: %s, "
                     "mask: %s, filename: %s)",
 </s> add     def __init__(self,
                 image: Optional[np.ndarray] = None,
                 left: Optional[int] = None,
                 width: Optional[int] = None,
                 top: Optional[int] = None,
                 height: Optional[int] = None,
                 landmarks_xy: Optional[np.ndarray] = None,
                 mask: Optional[Dict[str, "Mask"]] = None,
                 filename: Optional[str] = None) -> None:
        logger.trace("Initializing %s: (image: %s, left: %s, width: %s, top: %s, "  # type: ignore
                     "height: %s, landmarks_xy: %s, mask: %s, filename: %s)", </s> remove                      image.shape if image is not None and image.any() else image,
                     x, w, y, h, landmarks_xy,
                     {k: v.shape for k, v in mask} if mask is not None else mask,
                     filename)
 </s> add                      image.shape if image is not None and image.any() else image, left, width, top,
                     height, landmarks_xy, mask, filename) </s> remove     def __init__(self, storage_size=128, storage_centering="face"):
        logger.trace("Initializing: %s (storage_size: %s, storage_centering: %s)",
 </s> add     def __init__(self,
                 storage_size: int = 128,
                 storage_centering: "CenteringType" = "face") -> None:
        logger.trace("Initializing: %s (storage_size: %s, storage_centering: %s)",  # type: ignore </s> remove     def blurred(self):
 </s> add     def blurred(self) -> np.ndarray:
    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
      >>> new_mask = BlurMask("gaussian", mask, 3, is_ratio=False, passes=1).blurred
      >>> print(new_mask.shape)
      (128, 128, 1)
      """
    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
    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
    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
    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
    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
          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__)
keep keep keep keep replace replace replace replace 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