      -------
      bool
          Whether `func` accepts a `name` keyword argument.
      """
      if sys.version_info < (3,):
          arg_spec = inspect.getargspec(func)
          if accept_all and arg_spec.keywords is not None:
              return True
          return (name in arg_spec.args)
      elif sys.version_info < (3, 3):
          arg_spec = inspect.getfullargspec(func)
          if accept_all and arg_spec.varkw is not None:
              return True
          return (name in arg_spec.args or
                  name in arg_spec.kwonlyargs)
 
</s> remove     else:
        signature = inspect.signature(func)
        parameter = signature.parameters.get(name)
        if parameter is None:
            if accept_all:
                for param in signature.parameters.values():
                    if param.kind == inspect.Parameter.VAR_KEYWORD:
                        return True
            return False
        return (parameter.kind in (inspect.Parameter.POSITIONAL_OR_KEYWORD,
                                   inspect.Parameter.KEYWORD_ONLY))
 </s> add     signature = inspect.signature(func)
    parameter = signature.parameters.get(name)
    if parameter is None:
        if accept_all:
            for param in signature.parameters.values():
                if param.kind == inspect.Parameter.VAR_KEYWORD:
                    return True
        return False
    return (parameter.kind in (inspect.Parameter.POSITIONAL_OR_KEYWORD,
                               inspect.Parameter.KEYWORD_ONLY)) </s> remove         windows_update = (self.os_version[0].lower() == "windows" and
                          self.backend == "amd" and (3, 8) <= sys.version_info < (3, 9))
 </s> add  </s> remove         if not linux_update and not windows_update:
 </s> add         if not linux_update: </s> remove         if self.backend == "amd" and sys.version_info >= (3, 9):
            logger.error("The AMD version of Faceswap cannot be installed on versions of Python "
                         "higher than 3.8")
            sys.exit(1)
 </s> add  </s> remove         if get_backend() == "amd" and model.no_amd:
            valid = [k for k, v in _MODEL_MAPPING.items() if not v.no_amd]
            raise FaceswapError(f"'{arch}' is not compatible with the AMD backend. Choose one of "
                                f"{valid}.")

 </s> add 
    if sys.version_info < (3, 3):
      -------
      bool
          Whether `func` accepts a `name` keyword argument.
      """
    if sys.version_info < (3, 3):
    if sys.version_info < (3, 3):
    if sys.version_info < (3, 3):
    if sys.version_info < (3, 3):
    if sys.version_info < (3, 3):
    if sys.version_info < (3, 3):
          arg_spec = inspect.getfullargspec(func)
          if accept_all and arg_spec.varkw is not None:
              return True
          return (name in arg_spec.args or
                  name in arg_spec.kwonlyargs)
keep keep keep keep replace replace replace replace replace replace keep keep keep keep keep
 Remove plaidML support (#1325)

* Remove PlaidML reference from readme files

* Remove AMD option from installers

* remove amd requirements and update setup.py

* remove plaidml test from CI workflow

* gpustats: remove plaidml backend

* plaid removals:
  - faceswap.py - python version check
  - setup.cfg - plaidml typing ignore
  - lib.keras_utils - All plaid code
  - lib.launcher.py - All plaidml checks and configuration

* remove tf2.2 specific code from GUI event reader

* lib.model - remove all plaidml implementations

* plugins.extract - remove plaidml code

* plugins.train remove plaidml code

* lib.convert - remove plaidml code

* tools.model: remove plaidml code

* Remove plaidML tests from unit tests

* remove plaidml_utils and docsting cleanups

* Remove plaidML refs from configs

* fix keras imports 
tests/utils.py