summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2010-03-21 21:16:24 (GMT)
committerBenjamin Peterson <benjamin@python.org>2010-03-21 21:16:24 (GMT)
commitafcee8b78d92a02263ce1eb1015d0933d3e4e377 (patch)
tree28e7e2bdf79e2725682e86df05abfe009894bbac
parentf3b7a25a218b76a8b31e49e592e3bda9ca2e1f13 (diff)
downloadcpython-afcee8b78d92a02263ce1eb1015d0933d3e4e377.zip
cpython-afcee8b78d92a02263ce1eb1015d0933d3e4e377.tar.gz
cpython-afcee8b78d92a02263ce1eb1015d0933d3e4e377.tar.bz2
count keyword only arguments as part of the total
-rw-r--r--Lib/test/test_extcall.py6
-rw-r--r--Python/ceval.c4
2 files changed, 8 insertions, 2 deletions
diff --git a/Lib/test/test_extcall.py b/Lib/test/test_extcall.py
index a5af50b..cf882a5 100644
--- a/Lib/test/test_extcall.py
+++ b/Lib/test/test_extcall.py
@@ -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
diff --git a/Python/ceval.c b/Python/ceval.c
index 22c6155..0bd785b 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -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;
}