Get exact function call keyword arguments in order

As a fun coincidence, a wrapper I posted elsewhere gets close to the solution here. Use a decorator that uses functools.wraps to maintain the signature, and you can then write a solution using *args and **kwargs.