parameters: (fn, name, accept_all=False)
docstring: Checks if a callable accepts a given keyword argument.
  
      For Python 2, checks if there is an argument with the given name.
  
      For Python 3, checks if there is an argument with the given name, and
      also whether this argument can be called with a keyword (i.e. if it is
      not a positional-only argument).
  
      # Arguments
          fn: Callable to inspect.
          name: Check if `fn` can be called with `name` as a keyword argument.
          accept_all: What to return if there is no parameter called `name`
                      but the function accepts a `**kwargs` argument.
  
      # Returns
          bool, whether `fn` accepts a `name` keyword argument.
docstring_summary: Checks if a callable accepts a given keyword argument.
docstring_tokens: Checks if a callable accepts a given keyword argument .
function: def has_arg(fn, name, accept_all=False):
      """Checks if a callable accepts a given keyword argument.
  
      For Python 2, checks if there is an argument with the given name.
  
      For Python 3, checks if there is an argument with the given name, and
      also whether this argument can be called with a keyword (i.e. if it is
      not a positional-only argument).
  
      # Arguments
          fn: Callable to inspect.
          name: Check if `fn` can be called with `name` as a keyword argument.
          accept_all: What to return if there is no parameter called `name`
                      but the function accepts a `**kwargs` argument.
  
      # Returns
          bool, whether `fn` accepts a `name` keyword argument.
      """
      if sys.version_info < (3,):
          arg_spec = inspect.getargspec(fn)
          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(fn)
          if accept_all and arg_spec.varkw is not None:
              return True
          return (name in arg_spec.args or
                  name in arg_spec.kwonlyargs)
      else:
          signature = inspect.signature(fn)
          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))
function_tokens: def has_arg ( fn , name , accept_all = False ) : if sys . version_info < ( 3 , ) : arg_spec = inspect . getargspec ( fn ) 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 ( fn ) if accept_all and arg_spec . varkw is not None : return True return ( name in arg_spec . args or name in arg_spec . kwonlyargs ) else : signature = inspect . signature ( fn ) 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 ) )