code: def has_arg(fn, arg_name):
      """Checks if a callable accepts a given keyword argument.
  
      Args:
          fn: callable to inspect
          arg_name: string, keyword argument name to check
  
      Returns:
          bool, whether `fn` accepts a `arg_name` keyword argument.
      """
      if sys.version_info < (3,):
          if isinstance(fn, types.FunctionType) or isinstance(
              fn, types.MethodType
          ):
              arg_spec = inspect.getargspec(fn)
          else:
              try:
                  arg_spec = inspect.getargspec(fn.__call__)
              except AttributeError:
                  return False
          return arg_name in arg_spec.args
      elif sys.version_info < (3, 6):
          arg_spec = inspect.getfullargspec(fn)
          return (
              arg_name in arg_spec.args
              or arg_name in arg_spec.kwonlyargs
          )
      else:
          try:
              signature = inspect.signature(fn)
          except ValueError:
              # handling Cython
              signature = inspect.signature(fn.__call__)
          parameter = signature.parameters.get(arg_name)
          if parameter is None:
              return False
          return parameter.kind in (
              inspect.Parameter.POSITIONAL_OR_KEYWORD,
              inspect.Parameter.KEYWORD_ONLY,
          )
  
imports: import sys
  import inspect
  import types
label_desc: Use image node_id 1 for calling a global function with example usage: has_arg(fn, arg_name) and returns: unknown, unknown, unknown, False, False