• 
      

    Support Python 3.8+ functions with positional-only arguments.

    Review Request #10918 — Created Feb. 25, 2020 and submitted — Latest diff uploaded

    Information

    kgb
    master

    Reviewers

    kgb

    Python 3.8 added syntax for positional-only arguments, which is not
    compatible with prior releases. This involved changes to the CodeType
    parameters and function signatures.

    It unfortunately did not implement this new support in
    inspect.getfullargspec(), meaning we finally needed to move fully over
    to the inspect.Signature support. 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 inspect module, 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.

    Commits

    Files