          max_size = minimum_dimension * self._max_scale
          min_size = minimum_dimension * self._min_scale
          retval: List[DetectedFace] = []
          for idx, face in enumerate(faces):
              test = AlignedFace(landmarks=face.landmarks_xy, centering="face")
              if self._min_scale > 0.0 or self._max_scale > 0.0:
                  roi = test.original_roi
                  size = ((roi[1][0] - roi[0][0]) ** 2 + (roi[1][1] - roi[0][1]) ** 2) ** 0.5
                  if self._min_scale > 0.0 and size < min_size:
                      self._counts["min_scale"] += 1
                      if self._save_output:
                          retval.append(face)
                          sub_folders[idx] = "_align_filt_min_scale"
                      continue
                  if self._max_scale > 0.0 and size > max_size:
                      self._counts["max_scale"] += 1
                      if self._save_output:
                          retval.append(face)
                          sub_folders[idx] = "_align_filt_max_scale"
                      continue
              if 0.0 < self._distance < test.average_distance:
                  self._counts["distance"] += 1
                  if self._save_output:
                      retval.append(face)
                      sub_folders[idx] = "_align_filt_distance"
                  continue
 
</s> remove         max_size = minimum_dimension * self._max_scale
        min_size = minimum_dimension * self._min_scale
 </s> add  </s> remove                      save_output)
 </s> add                      roll, save_output) </s> remove         self._counts: Dict[str, int] = dict(min_scale=0, max_scale=0, distance=0)
 </s> add         self._counts: Dict[str, int] = dict(min_scale=0, max_scale=0, distance=0, roll=0)
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
          max_size = minimum_dimension * self._max_scale
          min_size = minimum_dimension * self._min_scale
          retval: List[DetectedFace] = []
          for idx, face in enumerate(faces):
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
            aligned = AlignedFace(landmarks=face.landmarks_xy, centering="face")

            min_max = self._scale_test(aligned, minimum_dimension)
            if min_max in ("min", "max"):
                self._counts[f"{min_max}_scale"] += 1
                if self._save_output:
                    retval.append(face)
                    sub_folders[idx] = f"_align_filt_{min_max}_scale"
                continue

            if 0.0 < self._distance < aligned.average_distance:
                  self._counts["distance"] += 1
                  if self._save_output:
                      retval.append(face)
                      sub_folders[idx] = "_align_filt_distance"
                  continue
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 Extract: Add roll filter to aligner filters 
plugins/extract/align/_base.py