          if self.is_conda:
              self.output.info("Running in Conda")
          if self.is_virtualenv:
              self.output.info("Running in a Virtual Environment")
          self.output.info("Encoding: {}".format(self.encoding))
  
      def check_pip(self):
          """ Check installed pip version """
          if self.updater:
              return
 
</s> remove         installed_packages = dict()
        chk = Popen("\"{}\" -m pip freeze".format(sys.executable),
                    shell=True, stdout=PIPE)
        installed = chk.communicate()[0].decode(self.encoding).splitlines()
 </s> add         installed_packages = {}
        with Popen(f"\"{sys.executable}\" -m pip freeze", shell=True, stdout=PIPE) as chk:
            installed = chk.communicate()[0].decode(self.encoding).splitlines() </s> remove         self.output.info("Installed Python: {0} {1}".format(self.py_version[0],
                                                            self.py_version[1]))
 </s> add         self.output.info(f"Installed Python: {self.py_version[0]} {self.py_version[1]}") </s> remove         self.output.info("Installed pip: {}".format(pip_version))
 </s> add         self.output.info(f"Installed pip: {pip_version}") </s> remove             self.output.error("{} is not a valid pip wheel".format(custom_tf))
 </s> add             self.output.error(f"{custom_tf} is not a valid pip wheel") </s> remove         self.output.info("Setup in %s %s" % (self.os_version[0], self.os_version[1]))
 </s> add         self.output.info(f"Setup in {self.os_version[0]} {self.os_version[1]}")
        self.output.info(f"Encoding: {self.encoding}")
          if self.is_conda:
              self.output.info("Running in Conda")
          if self.is_virtualenv:
              self.output.info("Running in a Virtual Environment")
        self.output.info(f"Encoding: {self.encoding}")
  
      def check_pip(self):
          """ Check installed pip version """
          if self.updater:
              return
keep keep keep keep replace keep keep keep keep keep
 Update code to support Tensorflow versions up to 2.8 (#1213)

* Update maximum tf version in setup + requirements

* - bump max version of tf version in launcher
- standardise tf version check

* update keras get_custom_objects  for tf>2.6

* bugfix: force black text in GUI file dialogs (linux)

* dssim loss - Move to stock tf.ssim function

* Update optimizer imports for compatibility

* fix logging for tf2.8

* Fix GUI graphing for TF2.8

* update tests

* bump requirements.txt versions

* Remove limit on nvidia-ml-py

* Graphing bugfixes
  - Prevent live graph from displaying if data not yet available

* bugfix: Live graph. Collect loss labels correctly

* fix: live graph - swallow inconsistent loss errors

* Bugfix: Prevent live graph from clearing during training

* Fix graphing for AMD 
setup.py