          archive_dir = "{}_TF1_Archived".format(self.model_dir)
          if os.path.exists(archive_dir):
              raise FaceswapError("We need to update your model files for use with Tensorflow 2.x, "
                                  "but the archive folder already exists. Please remove the "
                                  "following folder to continue: '{}'".format(archive_dir))
  
          logger.info("Updating legacy models for Tensorflow 2.x")
          logger.info("Your Tensorflow 1.x models will be archived in the following location: '%s'",
                      archive_dir)
          os.rename(self.model_dir, archive_dir)
 
</s> remove         archive_dir = "{}_TF1_Archived".format(self.model_dir)
 </s> add         archive_dir = f"{self.model_dir}_TF1_Archived" </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") </s> remove                 raise FaceswapError(msg)
 </s> add                 raise FaceswapError(msg) from err </s> remove                 raise FaceswapError(msg)
 </s> add                 raise FaceswapError(msg) from err
                                f"following folder to continue: '{archive_dir}'")
          archive_dir = "{}_TF1_Archived".format(self.model_dir)
          if os.path.exists(archive_dir):
              raise FaceswapError("We need to update your model files for use with Tensorflow 2.x, "
                                  "but the archive folder already exists. Please remove the "
                                f"following folder to continue: '{archive_dir}'")
  
          logger.info("Updating legacy models for Tensorflow 2.x")
          logger.info("Your Tensorflow 1.x models will be archived in the following location: '%s'",
                      archive_dir)
          os.rename(self.model_dir, archive_dir)
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 
plugins/train/model/_base.py