[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