          return dict(gaussian=cv2.GaussianBlur,  # pylint: disable = no-member
                      normalized=cv2.blur)  # pylint: disable = no-member
  
      @property
      def _kwarg_requirements(self):
          """ dict: :attr:`_blur_type` mapped to cv2 Function required keyword arguments. """
          return dict(gaussian=["ksize", "sigmaX"],
                      normalized=["ksize"])
  
      @property
 
</s> remove     def _func_mapping(self):
 </s> add     def _func_mapping(self) -> Dict[Literal["gaussian", "normalized"], Callable]: </s> remove     def _kwarg_mapping(self):
 </s> add     def _kwarg_mapping(self) -> Dict[str, Union[int, Tuple[int, int]]]: </s> remove         logger.trace("BlurMask kwargs: %s", retval)
 </s> add         logger.trace("BlurMask kwargs: %s", retval)  # type: ignore </s> remove     def _get_kwargs(self):
 </s> add     def _get_kwargs(self) -> Dict[str, Union[int, Tuple[int, int]]]: </s> remove         logger.trace(retval)
 </s> add         logger.trace(retval)  # type: ignore
    def _kwarg_requirements(self) -> Dict[Literal["gaussian", "normalized"], List[str]]:
          return dict(gaussian=cv2.GaussianBlur,  # pylint: disable = no-member
                      normalized=cv2.blur)  # pylint: disable = no-member
  
      @property
    def _kwarg_requirements(self) -> Dict[Literal["gaussian", "normalized"], List[str]]:
          """ dict: :attr:`_blur_type` mapped to cv2 Function required keyword arguments. """
          return dict(gaussian=["ksize", "sigmaX"],
                      normalized=["ksize"])
  
      @property
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