count keyword only arguments as part of the total

This commit is contained in:
Benjamin Peterson 2010-03-21 21:16:24 +00:00
parent f3b7a25a21
commit afcee8b78d
2 changed files with 8 additions and 2 deletions

View File

@ -280,6 +280,12 @@ The number of arguments passed in includes keywords:
Traceback (most recent call last):
...
TypeError: f() takes exactly 1 argument (5 given)
>>> def f(a, *, kw):
... pass
>>> f(6, 4, kw=4)
Traceback (most recent call last):
...
TypeError: f() takes exactly 2 arguments (3 given)
"""
import sys

View File

@ -3078,8 +3078,8 @@ PyEval_EvalCodeEx(PyCodeObject *co, PyObject *globals, PyObject *locals,
"argument%s (%d given)",
co->co_name,
defcount ? "at most" : "exactly",
co->co_argcount,
co->co_argcount == 1 ? "" : "s",
total_args,
total_args == 1 ? "" : "s",
argcount + kwcount);
goto fail;
}