          """
          logger.trace("Caching closest matches")  # type:ignore
          dst_landmarks = list(landmarks.items())
          dst_points = np.array([lm[1] for lm in dst_landmarks])
          batch_closest_matches: List[Tuple[str, ...]] = []
  
          for filename, src_points in zip(filenames, batch_src_points):
              closest = (np.mean(np.square(src_points - dst_points), axis=(1, 2))).argsort()[:10]
              closest_matches = tuple(dst_landmarks[i][0] for i in closest)
              self._nearest_landmarks[os.path.basename(filename)] = closest_matches
 
</s> remove         lm_side: Literal["a", "b"] = "a" if self._side == "b" else "b"
 </s> add         lm_side: T.Literal["a", "b"] = "a" if self._side == "b" else "b" </s> remove         self._required_packages: List[Tuple[str, List[Tuple[str, str]]]] = []
        self._missing_packages: List[Tuple[str, List[Tuple[str, str]]]] = []
        self._conda_missing_packages: List[Tuple[str, ...]] = []
 </s> add         self._required_packages: list[tuple[str, list[tuple[str, str]]]] = []
        self._missing_packages: list[tuple[str, list[tuple[str, str]]]] = []
        self._conda_missing_packages: list[tuple[str, ...]] = [] </s> remove         self._conda_required_packages: List[Tuple[str, ...]] = [("tk", )]
        if self._env.os_version[0] == "Linux":
            # TODO Put these kind of dependencies somewhere more visible or remove when not needed
            # conda-forge scipy requires GLIBCXX_3.4.30. Some Linux install do not have the
            # specific version, so we install it just in case.
            # Ref: https://forum.faceswap.dev/viewtopic.php?f=7&t=2247
            self._conda_required_packages.append(("gcc=12.1.0", "conda-forge"))

 </s> add         self._conda_required_packages: list[tuple[str, ...]] = [("tk", ), ("git", )]
        self._update_backend_specific_conda() </s> remove     def prerequisites(self) -> List[Tuple[str, List[Tuple[str, str]]]]:
 </s> add     def prerequisites(self) -> list[tuple[str, list[tuple[str, str]]]]: </s> remove         bins: List[List[str]] = [[] for _ in range(num_bins)]
 </s> add         bins: list[list[str]] = [[] for _ in range(num_bins)]
        batch_closest_matches: list[tuple[str, ...]] = []
          """
          logger.trace("Caching closest matches")  # type:ignore
          dst_landmarks = list(landmarks.items())
          dst_points = np.array([lm[1] for lm in dst_landmarks])
        batch_closest_matches: list[tuple[str, ...]] = []
  
          for filename, src_points in zip(filenames, batch_src_points):
              closest = (np.mean(np.square(src_points - dst_points), axis=(1, 2))).argsort()[:10]
              closest_matches = tuple(dst_landmarks[i][0] for i in closest)
              self._nearest_landmarks[os.path.basename(filename)] = closest_matches
keep keep keep keep 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 
lib/training/generator.py