inspect: Fix getcallargs() to raise correct TypeError

... for missing keyword-only arguments. Patch by Jeremiah Lowin.
Closes #20816.
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index 5c6ae39..20f7217 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -1206,6 +1206,14 @@
         self.assertEqualException(f3, '1, 2')
         self.assertEqualException(f3, '1, 2, a=1, b=2')
 
+        # issue #20816: getcallargs() fails to iterate over non-existent
+        # kwonlydefaults and raises a wrong TypeError
+        def f5(*, a): pass
+        with self.assertRaisesRegex(TypeError,
+                                    'missing 1 required keyword-only'):
+            inspect.getcallargs(f5)
+
+
 class TestGetcallargsMethods(TestGetcallargsFunctions):
 
     def setUp(self):