def _get_func_args(func, func_args, func_kwargs) -> Dict[Text, Any]:
  """Gets the names and values of the arguments of `func`."""
  argspec = _getfullargspec(func)
  defaults = argspec.defaults or []
  default_args = argspec.args[-len(defaults):]

  # First, populate with defaults, then override with caller args.
  result: Dict[Text, Any] = dict()
  result.update(zip(default_args, defaults))
  result.update(zip(argspec.args, func_args))
  result.update(func_kwargs)
  return result
Gets the names and values of the arguments of `func`.
language/canine/tensor_contracts.py