  
          if self.updater:
              return
  
          if not ((3, 7) <= sys.version_info < (3, 10) and self.py_version[1] == "64bit"):
              logger.error("Please run this script with Python version 3.7 to 3.9 64bit and try "
                           "again.")
              sys.exit(1)
  
      def _output_runtime_info(self) -> None:
          """ Output run time info """
 
</s> remove     assert (2, 2) <= tf_version < (2, 11)
 </s> add     assert (2, 10) <= tf_version < (2, 11) </s> remove if sys.version_info[0] < 3:
    raise Exception("This program requires at least python3.7")
if sys.version_info[0] == 3 and sys.version_info[1] < 7:
    raise Exception("This program requires at least python3.7")
 </s> add if sys.version_info < (3, 10):
    raise ValueError("This program requires at least python 3.10") </s> remove from typing import Union
 </s> add # TODO - Remove this monkey patch when TF autograph fixed to handle newer logging lib
def _patched_format(self, record):
    """ Autograph tf-2.10 has a bug with the 3.10 version of logging.PercentStyle._format(). It is
    non-critical but spits out warnings. This is the Python 3.9 version of the function and should
    be removed once fixed """
    return self._fmt % record.__dict__  # pylint:disable=protected-access


setattr(logging.PercentStyle, "_format", _patched_format) </s> remove             "1. Install Docker\n"
            "https://www.docker.com/community-edition\n\n"
            "2. Build Docker Image For Faceswap\n"
            "docker build -t deepfakes-cpu -f Dockerfile.cpu .\n\n"
            "3. Mount faceswap volume and Run it\n"
            "# without GUI\n"
            "docker run -tid -p 8888:8888 \\ \n"
            "\t--hostname deepfakes-cpu --name deepfakes-cpu \\ \n"
            "\t-v %s:/srv \\ \n"
            "\tdeepfakes-cpu\n\n"
            "# with gui. tools.py gui working.\n"
            "## enable local access to X11 server\n"
            "xhost +local:\n"
            "## create container\n"
            "nvidia-docker run -tid -p 8888:8888 \\ \n"
            "\t--hostname deepfakes-cpu --name deepfakes-cpu \\ \n"
            "\t-v %s:/srv \\ \n"
            "\t-v /tmp/.X11-unix:/tmp/.X11-unix \\ \n"
            "\t-e DISPLAY=unix$DISPLAY \\ \n"
            "\t-e AUDIO_GID=`getent group audio | cut -d: -f3` \\ \n"
            "\t-e VIDEO_GID=`getent group video | cut -d: -f3` \\ \n"
            "\t-e GID=`id -g` \\ \n"
            "\t-e UID=`id -u` \\ \n"
            "\tdeepfakes-cpu \n\n"
            "4. Open a new terminal to run faceswap.py in /srv\n"
            "docker exec -it deepfakes-cpu bash", path, path)
        logger.info("That's all you need to do with a docker. Have fun.")
 </s> add             "1. Install Docker from: https://www.docker.com/get-started\n\n"
            "2. Enter the Faceswap folder and build the Docker Image For Faceswap:\n"
            "   docker build -t faceswap-cpu -f Dockerfile.cpu .\n\n"
            "3. Launch and enter the Faceswap container:\n"
            "  a. Headless:\n"
            "     docker run --rm -it -v ./:/srv faceswap-cpu\n\n"
            "  b. GUI:\n"
            "     xhost +local: && \\ \n"
            "     docker run --rm -it \\ \n"
            "     -v ./:/srv \\ \n"
            "     -v /tmp/.X11-unix:/tmp/.X11-unix \\ \n"
            "     -e DISPLAY=${DISPLAY} \\ \n"
            "     faceswap-cpu \n")
        logger.info("That's all you need to do with docker. Have fun.") </s> remove         directml_ver = rocm_ver = (2, 10)
        min_ver = (2, 7)
 </s> add         min_ver = (2, 10)
        if not ((3, 10) <= sys.version_info < (3, 11) and self.py_version[1] == "64bit"):
            logger.error("Please run this script with Python version 3.10 64bit and try "
  
          if self.updater:
              return
  
        if not ((3, 10) <= sys.version_info < (3, 11) and self.py_version[1] == "64bit"):
            logger.error("Please run this script with Python version 3.10 64bit and try "
        if not ((3, 10) <= sys.version_info < (3, 11) and self.py_version[1] == "64bit"):
            logger.error("Please run this script with Python version 3.10 64bit and try "
                           "again.")
              sys.exit(1)
  
      def _output_runtime_info(self) -> None:
          """ Output run time info """
keep keep keep keep 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 
setup.py