count keyword only arguments as part of the total
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 @@
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 @@
"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;
}