// If any keyword arguments weren"t passed, we fill them using the
// defaults of the original function
if grads.DEFAULT in bound_args.arguments.values():
// Build a mapping from names to defaults
args = quoting.parse_function(func).body[0].args
defaults = {}
After Change
// Fill in any missing kwargs with the defaults from the template
args = quoting.parse_function(template_).body[0].args
kwargs = dict(zip(*map(reversed, [args.args, args.defaults])))
kwargs.update(dict(zip(args.kwonlyargs, args.kw_defaults)))
for arg, val in kwargs.items():
if arg.id not in bound_args.arguments:
bound_args.arguments[arg.id] = val