Format argument signatures using inspect.Signature on Python 3.x.

Review Request #10632 — Created July 19, 2019 and submitted — Latest diff uploaded

Information

kgb
master
128b945...

Reviewers

kgb

Historically, inspect.formatargspec() was used to generate Python code
representing function signatures, but modern versions of Python 3.x
provide better support for this through an inspect.Signature object.
This can be populated with information about the function (parameters,
annotations, etc.), and a string can be computed from that.

Internally, inspect.formatargspec() now uses this, but emits a
deprecation warning.

We now use inspect.Signature when available, and feed in parameters
the same way that inspect.formatargspec() does, while avoiding its
deprecation warning. Down the road, we'd be able to use this to support
type annotations as well.

Unit tests pass on Python 2.7, 3.5, 3.6, and 3.7.