Commit 9953a8df authored by Benjamin Peterson's avatar Benjamin Peterson

fix inspect.formatargspec on functions with keyword-only arguments without defaults #4959

parent c10c34d6
......@@ -894,7 +894,7 @@ def formatargspec(args, varargs=None, varkw=None, defaults=None,
if kwonlyargs:
for kwonlyarg in kwonlyargs:
spec = formatargandannotation(kwonlyarg)
if kwonlyarg in kwonlydefaults:
if kwonlydefaults and kwonlyarg in kwonlydefaults:
spec += formatvalue(kwonlydefaults[kwonlyarg])
specs.append(spec)
if varkw is not None:
......
......@@ -105,3 +105,7 @@ def keyworded(*arg1, arg2=1):
#line 105
def annotated(arg1: list):
pass
#line 109
def keyword_only_arg(*, arg):
pass
......@@ -386,6 +386,9 @@ class TestClassesAndFunctions(unittest.TestCase):
self.assertRaises(ValueError, self.assertArgSpecEquals,
mod2.annotated, [])
self.assertRaises(ValueError, self.assertArgSpecEquals,
mod2.keyword_only_arg, [])
def test_getfullargspec(self):
self.assertFullArgSpecEquals(mod2.keyworded, [], varargs_e='arg1',
......@@ -396,6 +399,10 @@ class TestClassesAndFunctions(unittest.TestCase):
self.assertFullArgSpecEquals(mod2.annotated, ['arg1'],
ann_e={'arg1' : list},
formatted='(arg1: list)')
self.assertFullArgSpecEquals(mod2.keyword_only_arg, [],
kwonlyargs_e=['arg'],
formatted='(*, arg)')
def test_getargspec_method(self):
class A(object):
......
......@@ -126,6 +126,9 @@ Core and Builtins
Library
-------
- Issue #4959: inspect.formatargspec now works for keyword only arguments
without defaults.
- Issue #3826 and #4791: The socket module now closes the underlying socket
appropriately when it is being used via socket.makefile() objects
rather than delaying the close by waiting for garbage collection to do it.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment