[New-bugs-announce] [issue39720] Signature.bind TypeErrors could be more helpful

Frazer McLean report at bugs.python.org
Fri Feb 21 17:41:33 EST 2020


New submission from Frazer McLean <frazer at frazermclean.co.uk>:

Signature.bind does not tell you if a missing argument is keyword-only for example. I created the following snippet to examine the differences:

    import inspect
    
    def run(f):
        try:
            f()
        except TypeError as exc:
            print(exc.args[0])
        else:
            raise RuntimeError('Expected to raise!')
        sig = inspect.signature(f)
        try:
            sig.bind()
        except TypeError as exc:
            print(exc.args[0])
        else:
            raise RuntimeError('Expected to raise!')
        print()
    
    @run
    def f1(pos_only, /): ...
    
    @run
    def f2(pos_or_kw): ...
    
    @run
    def f3(*, kw_only): ...

Output on current 3.9 master:

    f1() missing 1 required positional argument: 'pos_only'
    missing a required argument: 'pos_only'
    
    f2() missing 1 required positional argument: 'pos_or_kw'
    missing a required argument: 'pos_or_kw'
    
    f3() missing 1 required keyword-only argument: 'kw_only'
    missing a required argument: 'kw_only'

I am willing to create a PR so that the TypeError for f3 says "missing a required keyword-only argument: 'kw_only'", if this would be accepted.

----------
components: Library (Lib)
messages: 362439
nosy: RazerM
priority: normal
severity: normal
status: open
title: Signature.bind TypeErrors could be more helpful
type: enhancement

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue39720>
_______________________________________


More information about the New-bugs-announce mailing list