mirror of
https://github.com/python/cpython.git
synced 2025-10-03 05:35:59 +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
|
missing = 0
|
||||||
for kwarg in kwonlyargs:
|
for kwarg in kwonlyargs:
|
||||||
if kwarg not in arg2value:
|
if kwarg not in arg2value:
|
||||||
if kwarg in kwonlydefaults:
|
if kwonlydefaults and kwarg in kwonlydefaults:
|
||||||
arg2value[kwarg] = kwonlydefaults[kwarg]
|
arg2value[kwarg] = kwonlydefaults[kwarg]
|
||||||
else:
|
else:
|
||||||
missing += 1
|
missing += 1
|
||||||
|
|
|
@ -1206,6 +1206,14 @@ class TestGetcallargsFunctions(unittest.TestCase):
|
||||||
self.assertEqualException(f3, '1, 2')
|
self.assertEqualException(f3, '1, 2')
|
||||||
self.assertEqualException(f3, '1, 2, a=1, b=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):
|
class TestGetcallargsMethods(TestGetcallargsFunctions):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|
|
@ -83,6 +83,9 @@ Library
|
||||||
- Issue #19748: On AIX, time.mktime() now raises an OverflowError for year
|
- Issue #19748: On AIX, time.mktime() now raises an OverflowError for year
|
||||||
outsize range [1902; 2037].
|
outsize range [1902; 2037].
|
||||||
|
|
||||||
|
- Issue #20816: Fix inspect.getcallargs() to raise correct TypeError for
|
||||||
|
missing keyword-only arguments. Patch by Jeremiah Lowin.
|
||||||
|
|
||||||
Documentation
|
Documentation
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue