New submission from Frazer McLean <fra...@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 <rep...@bugs.python.org> <https://bugs.python.org/issue39720> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com