code: def get_kwargs(func):
      
      #if argspec.keywords is None:
      import utool as ut
      argspec = inspect.getargspec(func)
      if argspec.defaults is not None:
          num_args = len(argspec.args)
          num_keys = len(argspec.defaults)
          keys = ut.take(argspec.args, range(num_args - num_keys, num_args))
      else:
          keys = []
      is_arbitrary = argspec.keywords is not None
      RECURSIVE = False
      if RECURSIVE and argspec.keywords is not None:
          pass
          # TODO: look inside function at the functions that the kwargs object is being
          # passed to
      return keys, is_arbitrary
docs: Args:
          func (function):
  
      Returns:
          tuple: keys, is_arbitrary
              keys (list): kwargs keys
              is_arbitrary (bool): has generic **kwargs
  
      CommandLine:
          python -m utool.util_inspect --test-get_kwargs
  
      Ignore:
          def func1(a, b, c):
              pass
          def func2(a, b, c, *args):
              pass
          def func3(a, b, c, *args, **kwargs):
              pass
          def func4(a, b=1, c=2):
              pass
          def func5(a, b=1, c=2, *args):
              pass
          def func6(a, b=1, c=2, **kwargs):
              pass
          def func7(a, b=1, c=2, *args, **kwargs):
              pass
          for func in [locals()['func' + str(x)] for x in range(1, 8)]:
              print(inspect.getargspec(func))
  
      Example:
          >>> # DISABLE_DOCTEST
          >>> from utool.util_inspect import *  # NOQA
          >>> # build test data
          >>> func = '?'
          >>> result = get_kwargs(func)
          >>> # verify results
          >>> print(result)