mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
inspect: Fix getcallargs() to raise correct TypeError
... for missing keyword-only arguments. Patch by Jeremiah Lowin. Closes #20816.
This commit is contained in:
parent
00abf385ac
commit
b1d060bf8b
3 changed files with 12 additions and 1 deletions
|
@ -1208,7 +1208,7 @@ def getcallargs(*func_and_positional, **named):
|
|||
missing = 0
|
||||
for kwarg in kwonlyargs:
|
||||
if kwarg not in arg2value:
|
||||
if kwarg in kwonlydefaults:
|
||||
if kwonlydefaults and kwarg in kwonlydefaults:
|
||||
arg2value[kwarg] = kwonlydefaults[kwarg]
|
||||
else:
|
||||
missing += 1
|
||||
|
|
|
@ -1206,6 +1206,14 @@ class TestGetcallargsFunctions(unittest.TestCase):
|
|||
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):
|
||||
|
|
|
@ -83,6 +83,9 @@ Library
|
|||
- Issue #19748: On AIX, time.mktime() now raises an OverflowError for year
|
||||
outsize range [1902; 2037].
|
||||
|
||||
- Issue #20816: Fix inspect.getcallargs() to raise correct TypeError for
|
||||
missing keyword-only arguments. Patch by Jeremiah Lowin.
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue