          """
          if self._normalize_method is None:
              return faces
          logger.trace("Normalizing faces")
          meth = getattr(self, "_normalize_{}".format(self._normalize_method.lower()))
          faces = [meth(face) for face in faces]
          logger.trace("Normalized faces")
          return faces
  
      @staticmethod
 
</s> remove         retval = all("thumb" in face
 </s> add         retval = all(face.get("thumb") </s> remove         masks = dict()
 </s> add         masks = {} </s> remove         return self._data.get(frame_name, dict()).get("faces", [])
 </s> add         return self._data.get(frame_name, {}).get("faces", []) </s> remove         retval = len(self._data.get(frame_name, dict()).get("faces", []))
 </s> add         retval = len(self._data.get(frame_name, {}).get("faces", [])) </s> remove         reference_groups = dict()
 </s> add         reference_groups = {}
        meth = getattr(self, f"_normalize_{self._normalize_method.lower()}")
          """
          if self._normalize_method is None:
              return faces
          logger.trace("Normalizing faces")
        meth = getattr(self, f"_normalize_{self._normalize_method.lower()}")
          faces = [meth(face) for face in faces]
          logger.trace("Normalized faces")
          return faces
  
      @staticmethod
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 
plugins/extract/align/_base.py