[pypy-commit] pypy py3k: Print a better error message when too many positional arguments are given.
Manuel Jacob
noreply at buildbot.pypy.org
Sun Feb 17 23:07:27 CET 2013
Author: Manuel Jacob
Branch: py3k
Changeset: r61365:2fb15b5200b6
Date: 2013-02-16 18:34 +0100
http://bitbucket.org/pypy/pypy/changeset/2fb15b5200b6/
Log: Print a better error message when too many positional arguments are
given.
diff --git a/pypy/interpreter/argument.py b/pypy/interpreter/argument.py
--- a/pypy/interpreter/argument.py
+++ b/pypy/interpreter/argument.py
@@ -508,6 +508,8 @@
plural = "s"
if has_kwarg or num_kwds > 0:
msg2 = " non-keyword"
+ elif defcount != -1: # XXX not sure about this
+ msg2 = " positional"
else:
msg2 = ""
msg = "takes %s %d%s argument%s (%d given)" % (
diff --git a/pypy/interpreter/test/test_argument.py b/pypy/interpreter/test/test_argument.py
--- a/pypy/interpreter/test/test_argument.py
+++ b/pypy/interpreter/test/test_argument.py
@@ -698,3 +698,11 @@
assert e.value.args[0] == "f() got an unexpected keyword argument 'ü'"
"""
+ def test_error_positional(self):
+ """
+ def f(a, b=None, *, c=None):
+ pass
+ exc = raises(TypeError, f, 1, 2, 3)
+ expected = "f() takes at most 2 positional arguments (3 given)"
+ assert str(exc.value) == expected
+ """
More information about the pypy-commit
mailing list