diff -r a4726b5d0365 Lib/inspect.py --- a/Lib/inspect.py Sat Mar 01 10:34:22 2014 -0500 +++ b/Lib/inspect.py Sat Mar 01 11:38:14 2014 -0500 @@ -1125,7 +1125,7 @@ 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 -r a4726b5d0365 Lib/test/test_inspect.py --- a/Lib/test/test_inspect.py Sat Mar 01 10:34:22 2014 -0500 +++ b/Lib/test/test_inspect.py Sat Mar 01 11:38:14 2014 -0500 @@ -1206,6 +1206,11 @@ self.assertEqualException(f3, '1, 2') self.assertEqualException(f3, '1, 2, a=1, b=2') + # issue20817: + def f6(a, b, c): + pass + self.assertRaises(TypeError, inspect.getcallargs, f6) + class TestGetcallargsMethods(TestGetcallargsFunctions): def setUp(self):