code: def get_kwdefaults(func, parse_source=False):
      r
      #import utool as ut
      #with ut.embed_on_exception_context:
      argspec = inspect.getargspec(func)
      kwdefaults = {}
      if argspec.args is None or argspec.defaults is None:
          pass
      else:
          args = argspec.args
          defaults = argspec.defaults
          #kwdefaults = OrderedDict(zip(argspec.args[::-1], argspec.defaults[::-1]))
          kwpos = len(args) - len(defaults)
          kwdefaults = OrderedDict(zip(args[kwpos:], defaults))
      if parse_source and argspec.keywords:
          # TODO parse for kwargs.get/pop
          keyword_defaults = parse_func_kwarg_keys(func, with_vals=True)
          for key, val in keyword_defaults:
              assert key not in kwdefaults, 'parsing error'
              kwdefaults[key] = val
      return kwdefaults
docs: r"""
      Args:
          func (func):
  
      Returns:
          dict:
  
      CommandLine:
          python -m utool.util_inspect get_kwdefaults
  
      Example:
          >>> # ENABLE_DOCTEST
          >>> from utool.util_inspect import *  # NOQA
          >>> import utool as ut
          >>> func = dummy_func
          >>> parse_source = True
          >>> kwdefaults = get_kwdefaults(func, parse_source)
          >>> print('kwdefaults = %s' % (ut.repr4(kwdefaults),))