              self._handle_import_error(msg)
  
          tf_ver = float(".".join(tf.__version__.split(".")[:2]))  # pylint:disable=no-member
          if tf_ver < min_ver:
              msg = ("The minimum supported Tensorflow is version {} but you have version {} "
                     "installed. Please upgrade Tensorflow.".format(min_ver, tf_ver))
              self._handle_import_error(msg)
          if tf_ver > max_ver:
              msg = ("The maximum supported Tensorflow is version {} but you have version {} "
                     "installed. Please downgrade Tensorflow.".format(max_ver, tf_ver))
              self._handle_import_error(msg)
 
</s> remove             msg = ("The maximum supported Tensorflow is version {} but you have version {} "
                   "installed. Please downgrade Tensorflow.".format(max_ver, tf_ver))
 </s> add             msg = (f"The maximum supported Tensorflow is version {max_ver} but you have version "
                   f"{tf_ver} installed. Please downgrade Tensorflow.") </s> remove         tf_ver = float(".".join(tf.__version__.split(".")[:2]))  # pylint:disable=no-member
 </s> add         tf_ver = get_tf_version() </s> remove             tf_ver = "tensorflow-gpu{}".format(tf_ver)
 </s> add             tf_ver = f"tensorflow-gpu{tf_ver}" </s> remove             msg = ("You have requested to train with the '{}' plugin, but a model file for the "
                   "'{}' plugin already exists in the folder '{}'.\nPlease select a different "
                   "model folder.".format(self.name, multiple_models[0], self.model_dir))
 </s> add             msg = (f"You have requested to train with the '{self.name}' plugin, but a model file "
                   f"for the '{multiple_models[0]}' plugin already exists in the folder "
                   f"'{self.model_dir}'.\nPlease select a different model folder.") </s> remove             msg = ("There are multiple plugin types ('{}') stored in the model folder '{}'. This "
                   "is not supported.\nPlease split the model files into their own folders before "
                   "proceeding".format("', '".join(multiple_models), self.model_dir))
 </s> add             ptypes = "', '".join(multiple_models)
            msg = (f"There are multiple plugin types ('{ptypes}') stored in the model folder '"
                   f"{self.model_dir}'. This is not supported.\nPlease split the model files into "
                   "their own folders before proceeding")
            msg = (f"The minimum supported Tensorflow is version {min_ver} but you have version "
                   f"{tf_ver} installed. Please upgrade Tensorflow.")
              self._handle_import_error(msg)
  
          tf_ver = float(".".join(tf.__version__.split(".")[:2]))  # pylint:disable=no-member
          if tf_ver < min_ver:
            msg = (f"The minimum supported Tensorflow is version {min_ver} but you have version "
                   f"{tf_ver} installed. Please upgrade Tensorflow.")
            msg = (f"The minimum supported Tensorflow is version {min_ver} but you have version "
                   f"{tf_ver} installed. Please upgrade Tensorflow.")
              self._handle_import_error(msg)
          if tf_ver > max_ver:
              msg = ("The maximum supported Tensorflow is version {} but you have version {} "
                     "installed. Please downgrade Tensorflow.".format(max_ver, tf_ver))
              self._handle_import_error(msg)
keep keep keep keep replace 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 
lib/cli/launcher.py