  class _Sort():  # pylint:disable=too-few-public-methods
      """ Sorts folders of faces based on input criteria """
      def __init__(self, arguments: Namespace) -> None:
          logger.debug("Initializing %s: arguments: %s", self.__class__.__name__, arguments)
          self._processes = dict(blur=SortBlur,
                                 blur_fft=SortBlur,
                                 distance=SortDistance,
                                 yaw=SortYaw,
                                 pitch=SortPitch,
                                 roll=SortRoll,
                                 size=SortSize,
                                 face=SortFace,
                                 face_cnn=SortFaceCNN,
                                 face_cnn_dissim=SortFaceCNN,
                                 hist=SortHistogram,
                                 hist_dissim=SortHistogram,
                                 color_black=SortColor,
                                 color_gray=SortColor,
                                 color_luma=SortColor,
                                 color_green=SortColor,
                                 color_orange=SortColor)
  
          self._args = self._parse_arguments(arguments)
          self._changes: Dict[str, str] = {}
          self.serializer: Optional[Serializer] = None
  
 
</s> remove         self._changes: Dict[str, str] = {}
        self.serializer: Optional[Serializer] = None
 </s> add         self._changes: dict[str, str] = {}
        self.serializer: Serializer | None = None </s> remove     def __init__(self, alignments: "AlignmentData", arguments: "Namespace") -> None:
 </s> add     def __init__(self, alignments: AlignmentData, arguments: Namespace) -> None: </s> remove         self._mappings: Dict[int, str] = {}
        self._normalized: Dict[str, np.ndarray] = {}
        self._shapes_model: Optional[decomposition.PCA] = None
 </s> add         self._mappings: dict[int, str] = {}
        self._normalized: dict[str, np.ndarray] = {}
        self._shapes_model: decomposition.PCA | None = None </s> remove     def __init__(self, alignments: "AlignmentData", arguments: Namespace) -> None:
 </s> add     def __init__(self, alignments: AlignmentData, arguments: Namespace) -> None: </s> remove     def __init__(self, arguments: "Namespace") -> None:
 </s> add     def __init__(self, arguments: Namespace) -> None:
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
  class _Sort():  # pylint:disable=too-few-public-methods
      """ Sorts folders of faces based on input criteria """
      def __init__(self, arguments: Namespace) -> None:
          logger.debug("Initializing %s: arguments: %s", self.__class__.__name__, arguments)
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
        self._processes = {"blur": SortBlur,
                           "blur_fft": SortBlur,
                           "distance": SortDistance,
                           "yaw": SortYaw,
                           "pitch": SortPitch,
                           "roll": SortRoll,
                           "size": SortSize,
                           "face": SortFace,
                           "face_cnn": SortFaceCNN,
                           "face_cnn_dissim": SortFaceCNN,
                           "hist": SortHistogram,
                           "hist_dissim": SortHistogram,
                           "color_black": SortColor,
                           "color_gray": SortColor,
                           "color_luma": SortColor,
                           "color_green": SortColor,
                           "color_orange": SortColor}
  
          self._args = self._parse_arguments(arguments)
          self._changes: Dict[str, str] = {}
          self.serializer: Optional[Serializer] = None
  
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
 Rebase code (#1326)

* Remove tensorflow_probability requirement

* setup.py - fix progress bars

* requirements.txt: Remove pre python 3.9 packages

* update apple requirements.txt

* update INSTALL.md

* Remove python<3.9 code

* setup.py - fix Windows Installer

* typing: python3.9 compliant

* Update pytest and readthedocs python versions

* typing fixes

* Python Version updates
  - Reduce max version to 3.10
  - Default to 3.10 in installers
  - Remove incompatible 3.11 tests

* Update dependencies

* Downgrade imageio dep for Windows

* typing: merge optional unions and fixes

* Updates
  - min python version 3.10
  - typing to python 3.10 spec
  - remove pre-tf2.10 code
  - Add conda tests

* train: re-enable optimizer saving

* Update dockerfiles

* Update setup.py
  - Apple Conda deps to setup.py
  - Better Cuda + dependency handling

* bugfix: Patch logging to prevent Autograph errors

* Update dockerfiles

* Setup.py - Setup.py - stdout to utf-8

* Add more OSes to github Actions

* suppress mac-os end to end test 
tools/sort/sort.py