          custom_tf = os.path.realpath(os.path.expanduser(custom_tf))
          if not os.path.isfile(custom_tf):
              self.output.error("{} not found".format(custom_tf))
          elif os.path.splitext(custom_tf)[1] != ".whl":
              self.output.error("{} is not a valid pip wheel".format(custom_tf))
          elif custom_tf:
              self.required_packages.append(custom_tf)
  
      def set_config(self):
          """ Set the backend in the faceswap config file """
 
</s> remove             self.output.error("{} not found".format(custom_tf))
 </s> add             self.output.error(f"{custom_tf} not found") </s> remove             msg = "{} disabled".format(self.tabname.title())
 </s> add             msg = f"{self.tabname.title()} disabled" </s> remove             msg = "Waiting for {}...".format(self.tabname)
 </s> add             msg = f"Waiting for {self.tabname}..." </s> remove                 print("'{}' is not a valid selection. Please try again".format(selection))
 </s> add                 print(f"'{selection}' is not a valid selection. Please try again") </s> remove         base_config = super(_GlobalPooling2D, self).get_config()
 </s> add         base_config = super().get_config()
            self.output.error(f"{custom_tf} is not a valid pip wheel")
          custom_tf = os.path.realpath(os.path.expanduser(custom_tf))
          if not os.path.isfile(custom_tf):
              self.output.error("{} not found".format(custom_tf))
          elif os.path.splitext(custom_tf)[1] != ".whl":
            self.output.error(f"{custom_tf} is not a valid pip wheel")
          elif custom_tf:
              self.required_packages.append(custom_tf)
  
      def set_config(self):
          """ Set the backend in the faceswap config file """
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