X Tutup
Skip to content

Commit 6f761ad

Browse files
committed
Let getpydocspec recognise *args, **kwargs and keyword-only args.
1 parent 62bab80 commit 6f761ad

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed

bpython/cli.py

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -657,8 +657,30 @@ def getpydocspec(f, func):
657657
if not hasattr(f, '__name__') or s.groups()[0] != f.__name__:
658658
return None
659659

660-
args = [i.strip() for i in s.groups()[1].split(',')]
661-
return [func, (args, None, None, None)]
660+
args = list()
661+
defaults = list()
662+
varargs = varkwargs = None
663+
kwonly_args = list()
664+
kwonly_defaults = dict()
665+
for arg in s.group(2).split(','):
666+
arg = arg.strip()
667+
if arg.startswith('**'):
668+
varkwargs = arg[2:]
669+
elif arg.startswith('*'):
670+
varargs = arg[1:]
671+
else:
672+
arg, _, default = arg.partition('=')
673+
if varargs is not None:
674+
kwonly_args.append(arg)
675+
if default:
676+
kwonly_defaults[arg] = default
677+
else:
678+
args.append(arg)
679+
if default:
680+
defaults.append(default)
681+
682+
return [func, (args, varargs, varkwargs, defaults,
683+
kwonly_args, kwonly_defaults)]
662684

663685
def getargspec(func):
664686
try:
@@ -1113,7 +1135,7 @@ def mkargspec(self, topline, down):
11131135
default = kwonly_defaults.get(arg, marker)
11141136
if default is not marker:
11151137
self.list_win.addstr('=', get_colpair('punctuation'))
1116-
self.list_win.addstr(repr(default), get_colpair('token'))
1138+
self.list_win.addstr(default, get_colpair('token'))
11171139

11181140
if _kwargs:
11191141
if args or _args or (py3 and kwonly):

0 commit comments

Comments
 (0)
X Tutup