summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYury Selivanov <yselivanov@sprymix.com>2014-03-27 22:42:52 (GMT)
committerYury Selivanov <yselivanov@sprymix.com>2014-03-27 22:42:52 (GMT)
commit2542b66bb04e5634410205f54523987dce9e5bf7 (patch)
treef7c8072b257c67a1ed087f735cd9c7f6541f829e
parentb1d060bf8b017d2a6cf6a0191b1451aeb27a5c03 (diff)
downloadcpython-2542b66bb04e5634410205f54523987dce9e5bf7.zip
cpython-2542b66bb04e5634410205f54523987dce9e5bf7.tar.gz
cpython-2542b66bb04e5634410205f54523987dce9e5bf7.tar.bz2
inspect: Fix getcallargs() to fail correctly if more than 3 args are missing.
Patch by Jeremiah Lowin. Closes #20817.
-rw-r--r--Lib/inspect.py2
-rw-r--r--Lib/test/test_inspect.py6
-rw-r--r--Misc/NEWS3
3 files changed, 10 insertions, 1 deletions
diff --git a/Lib/inspect.py b/Lib/inspect.py
index 06057af..9f9a600 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -1125,7 +1125,7 @@ def _missing_arguments(f_name, argnames, pos, values):
elif missing == 2:
s = "{} and {}".format(*names)
else:
- tail = ", {} and {}".format(names[-2:])
+ tail = ", {} and {}".format(*names[-2:])
del names[-2:]
s = ", ".join(names) + tail
raise TypeError("%s() missing %i required %s argument%s: %s" %
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index 20f7217..38367f3 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -1214,6 +1214,12 @@ class TestGetcallargsFunctions(unittest.TestCase):
inspect.getcallargs(f5)
+ # issue20817:
+ def f6(a, b, c):
+ pass
+ with self.assertRaisesRegex(TypeError, "'a', 'b' and 'c'"):
+ inspect.getcallargs(f6)
+
class TestGetcallargsMethods(TestGetcallargsFunctions):
def setUp(self):
diff --git a/Misc/NEWS b/Misc/NEWS
index c51ad17..10ddd9a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -86,6 +86,9 @@ Library
- Issue #20816: Fix inspect.getcallargs() to raise correct TypeError for
missing keyword-only arguments. Patch by Jeremiah Lowin.
+- Issue #20817: Fix inspect.getcallargs() to fail correctly if more
+ than 3 arguments are missing. Patch by Jeremiah Lowin.
+
Documentation
-------------