summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2010-06-25 19:30:21 (GMT)
committerBenjamin Peterson <benjamin@python.org>2010-06-25 19:30:21 (GMT)
commit88968ad380752227656e2ab4425315e474e26336 (patch)
tree87d0b51411b7c9910f96629eb1de7072b2a492a2 /Lib
parent5a3ef5b22af607666111c76764db0efffbef82be (diff)
downloadcpython-88968ad380752227656e2ab4425315e474e26336.zip
cpython-88968ad380752227656e2ab4425315e474e26336.tar.gz
cpython-88968ad380752227656e2ab4425315e474e26336.tar.bz2
only take into account positional arguments count in related error messages
Diffstat (limited to 'Lib')
-rw-r--r--Lib/inspect.py2
-rw-r--r--Lib/test/test_extcall.py4
-rw-r--r--Lib/test/test_keywordonlyarg.py8
3 files changed, 11 insertions, 3 deletions
diff --git a/Lib/inspect.py b/Lib/inspect.py
index d6ac4e0..bfb6d00 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -959,7 +959,7 @@ def getcallargs(func, *positional, **named):
else:
arg2value[varargs] = ()
elif 0 < num_args < num_pos:
- raise TypeError('%s() takes %s %d %s (%d given)' % (
+ raise TypeError('%s() takes %s %d positional %s (%d given)' % (
f_name, 'at most' if defaults else 'exactly', num_args,
'arguments' if num_args > 1 else 'argument', num_total))
elif num_args == 0 and num_total:
diff --git a/Lib/test/test_extcall.py b/Lib/test/test_extcall.py
index cf882a5..c31e920 100644
--- a/Lib/test/test_extcall.py
+++ b/Lib/test/test_extcall.py
@@ -279,13 +279,13 @@ The number of arguments passed in includes keywords:
>>> f(6, a=4, *(1, 2, 3))
Traceback (most recent call last):
...
- TypeError: f() takes exactly 1 argument (5 given)
+ TypeError: f() takes exactly 1 positional 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)
+ TypeError: f() takes exactly 1 positional argument (3 given)
"""
import sys
diff --git a/Lib/test/test_keywordonlyarg.py b/Lib/test/test_keywordonlyarg.py
index 6a88b3d..bdcc4c6 100644
--- a/Lib/test/test_keywordonlyarg.py
+++ b/Lib/test/test_keywordonlyarg.py
@@ -73,6 +73,14 @@ class KeywordOnlyArgTestCase(unittest.TestCase):
fundef3 += "lastarg):\n pass\n"
compile(fundef3, "<test>", "single")
+ def testTooManyPositionalErrorMessage(self):
+ def f(a, b=None, *, c=None):
+ pass
+ with self.assertRaises(TypeError) as exc:
+ f(1, 2, 3)
+ expected = "f() takes at most 2 positional arguments (3 given)"
+ self.assertEqual(str(exc.exception), expected)
+
def testSyntaxErrorForFunctionCall(self):
self.assertRaisesSyntaxError("f(p, k=1, p2)")
self.assertRaisesSyntaxError("f(p, k1=50, *(1,2), k1=100)")