                  logger.trace("average_distance: %s", average_distance)  # type: ignore
                  self._cache.average_distance = average_distance
          return self._cache.average_distance
  
      @classmethod
      def _padding_from_coverage(cls, size: int, coverage_ratio: float) -> Dict[CenteringType, int]:
          """ Return the image padding for a face from coverage_ratio set against a
              pre-padded training image.
  
          Parameters
 
</s> remove         self._active = not disable and (max_scale > 0.0 or min_scale > 0.0 or distance > 0.0)
        self._counts: Dict[str, int] = dict(min_scale=0, max_scale=0, distance=0, roll=0)
 </s> add         self._active = not disable and (feature_filter or
                                        max_scale > 0.0 or
                                        min_scale > 0.0 or
                                        distance > 0.0 or
                                        roll > 0.0)
        self._counts: Dict[str, int] = dict(features=0,
                                            min_scale=0,
                                            max_scale=0,
                                            distance=0,
                                            roll=0)
    @property
    def relative_eye_mouth_position(self) -> float:
        """ float: Value representing the relative position of the lowest eye/eye-brow point to the
        highest mouth point. Positive values indicate that eyes/eyebrows are aligned above the
        mouth, negative values indicate that eyes/eyebrows are misaligned below the mouth. """
        with self._cache.lock("relative_eye_mouth_position"):
            if not self._cache.relative_eye_mouth_position:
                lowest_eyes = np.max(self.normalized_landmarks[np.r_[17:27, 36:48], 1])
                highest_mouth = np.min(self.normalized_landmarks[48:68, 1])
                position = highest_mouth - lowest_eyes
                logger.trace("lowest_eyes: %s, highest_mouth: %s, "  # type: ignore
                             "relative_eye_mouth_position: %s", lowest_eyes, highest_mouth,
                             position)
                self._cache.relative_eye_mouth_position = position
        return self._cache.relative_eye_mouth_position

                  logger.trace("average_distance: %s", average_distance)  # type: ignore
                  self._cache.average_distance = average_distance
          return self._cache.average_distance
  
    @property
    def relative_eye_mouth_position(self) -> float:
        """ float: Value representing the relative position of the lowest eye/eye-brow point to the
        highest mouth point. Positive values indicate that eyes/eyebrows are aligned above the
        mouth, negative values indicate that eyes/eyebrows are misaligned below the mouth. """
        with self._cache.lock("relative_eye_mouth_position"):
            if not self._cache.relative_eye_mouth_position:
                lowest_eyes = np.max(self.normalized_landmarks[np.r_[17:27, 36:48], 1])
                highest_mouth = np.min(self.normalized_landmarks[48:68, 1])
                position = highest_mouth - lowest_eyes
                logger.trace("lowest_eyes: %s, highest_mouth: %s, "  # type: ignore
                             "relative_eye_mouth_position: %s", lowest_eyes, highest_mouth,
                             position)
                self._cache.relative_eye_mouth_position = position
        return self._cache.relative_eye_mouth_position

      @classmethod
      def _padding_from_coverage(cls, size: int, coverage_ratio: float) -> Dict[CenteringType, int]:
          """ Return the image padding for a face from coverage_ratio set against a
              pre-padded training image.
  
          Parameters
keep keep keep add keep keep keep keep keep keep
 Aligner - Add feature position filter 
lib/align/aligned_face.py