[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