code: def check_signature_supported(func, warn=False):
      
      function_name = func.__name__
      sig_params = get_signature_params(func)
  
      has_kwargs_param = False
      has_kwonly_param = False
      for keyword_name, parameter in sig_params:
          if parameter.kind == Parameter.VAR_KEYWORD:
              has_kwargs_param = True
          if parameter.kind == Parameter.KEYWORD_ONLY:
              has_kwonly_param = True
  
      if has_kwargs_param:
          message = ("The function {} has a **kwargs argument, which is "
                     "currently not supported.".format(function_name))
          if warn:
              logger.warning(message)
          else:
              raise Exception(message)
  
      if has_kwonly_param:
          message = ("The function {} has a keyword only argument "
                     "(defined after * or *args), which is currently "
                     "not supported.".format(function_name))
          if warn:
              logger.warning(message)
          else:
              raise Exception(message)
docs: Check if we support the signature of this function.
  
      We currently do not allow remote functions to have **kwargs. We also do not
      support keyword arguments in conjunction with a *args argument.
  
      Args:
          func: The function whose signature should be checked.
          warn: If this is true, a warning will be printed if the signature is
              not supported. If it is false, an exception will be raised if the
              signature is not supported.
  
      Raises:
          Exception: An exception is raised if the signature is not supported.