Support Python 3.8+ functions with positional-only arguments.
Review Request #10918 — Created Feb. 25, 2020 and submitted
Python 3.8 added syntax for positional-only arguments, which is not
compatible with prior releases. This involved changes to the
parameters and function signatures.
It unfortunately did not implement this new support in
inspect.getfullargspec(), meaning we finally needed to move fully over
inspect.Signaturesupport. This involved a fair amount of work
in the inspection and formatting code for functions. It also required
that we call into an internal function in the
inspectmodule, which is
needed in order to retain some state in the signature that is otherwise
not available publicly.
The end result is that we can now spy on functions with positional-only
arguments in Python 3.8+.
Unit tests pass on Python 2.7 and 3.5-3.8.
Ran the full Djblets and Review Board test suites on all supported
versions of Python without errors.