          cudnn_checkfiles = getattr(self, f"_get_checkfiles_{self._os}")()
          cudnn_checkfile = next((hdr for hdr in cudnn_checkfiles if os.path.isfile(hdr)), None)
          logger.debug("cudnn checkfiles: %s", cudnn_checkfile)
          if not cudnn_checkfile:
              return
          found = 0
          with open(cudnn_checkfile, "r", encoding="utf8") as ofile:
              for line in ofile:
                  if line.lower().startswith("#define cudnn_major"):
                      major = line[line.rfind(" ") + 1:].strip()
 
</s> remove     def _cudnn_check(self):
        """ Check Linux or Windows cuDNN Version from cudnn.h and add to :attr:`cudnn_version`. """
 </s> add     def _cudnn_check_files(self) -> bool:
        """ Check header files for cuDNN version """ </s> remove         if found != 3:  # Full version could not be determined
            return
 </s> add         if found != 3:  # Full version not determined
            return False
 </s> remove                     line = proc.stdout.readline().decode(self._env.encoding, errors="replace")
 </s> add                     lines = proc.stdout.readline() </s> remove             found_faces = cast(List[np.ndarray], ([face if not found.any() else found
                                                   for face, found in zip(batch.prediction,
                                                                          found_faces)]))
 </s> add             found_faces = T.cast(list[np.ndarray], ([face if not found.any() else found
                                                     for face, found in zip(batch.prediction,
                                                                            found_faces)])) </s> remove         seen: Dict[str, List[int]] = {}
 </s> add         seen: dict[str, list[int]] = {}
            return False

          cudnn_checkfiles = getattr(self, f"_get_checkfiles_{self._os}")()
          cudnn_checkfile = next((hdr for hdr in cudnn_checkfiles if os.path.isfile(hdr)), None)
          logger.debug("cudnn checkfiles: %s", cudnn_checkfile)
          if not cudnn_checkfile:
            return False

          found = 0
          with open(cudnn_checkfile, "r", encoding="utf8") as ofile:
              for line in ofile:
                  if line.lower().startswith("#define cudnn_major"):
                      major = line[line.rfind(" ") + 1:].strip()
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 
setup.py