inspect: Fix getcallargs() to fail correctly if more than 3 args are missing.

Patch by Jeremiah Lowin. Closes #20817.
This commit is contained in:
Yury Selivanov 2014-03-27 18:42:52 -04:00
parent 875df20e8a
commit dccfa13cdb
3 changed files with 10 additions and 1 deletions

View File

@ -1127,7 +1127,7 @@ def _missing_arguments(f_name, argnames, pos, values):
elif missing == 2: elif missing == 2:
s = "{} and {}".format(*names) s = "{} and {}".format(*names)
else: else:
tail = ", {} and {}".format(names[-2:]) tail = ", {} and {}".format(*names[-2:])
del names[-2:] del names[-2:]
s = ", ".join(names) + tail s = ", ".join(names) + tail
raise TypeError("%s() missing %i required %s argument%s: %s" % raise TypeError("%s() missing %i required %s argument%s: %s" %

View File

@ -1216,6 +1216,12 @@ class TestGetcallargsFunctions(unittest.TestCase):
inspect.getcallargs(f5) inspect.getcallargs(f5)
# issue20817:
def f6(a, b, c):
pass
with self.assertRaisesRegex(TypeError, "'a', 'b' and 'c'"):
inspect.getcallargs(f6)
class TestGetcallargsMethods(TestGetcallargsFunctions): class TestGetcallargsMethods(TestGetcallargsFunctions):
def setUp(self): def setUp(self):

View File

@ -116,6 +116,9 @@ Library
- Issue #20816: Fix inspect.getcallargs() to raise correct TypeError for - Issue #20816: Fix inspect.getcallargs() to raise correct TypeError for
missing keyword-only arguments. Patch by Jeremiah Lowin. 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 Documentation
------------- -------------