mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Issue #19674: inspect.signature() now produces a correct signature
for some builtins.
This commit is contained in:
parent
7fa6e1aeea
commit
44e2eaab54
18 changed files with 343 additions and 136 deletions
52
Lib/pydoc.py
52
Lib/pydoc.py
|
@ -916,20 +916,18 @@ class HTMLDoc(Doc):
|
|||
reallink = realname
|
||||
title = '<a name="%s"><strong>%s</strong></a> = %s' % (
|
||||
anchor, name, reallink)
|
||||
if inspect.isfunction(object):
|
||||
args, varargs, kwonlyargs, kwdefaults, varkw, defaults, ann = \
|
||||
inspect.getfullargspec(object)
|
||||
argspec = inspect.formatargspec(
|
||||
args, varargs, kwonlyargs, kwdefaults, varkw, defaults, ann,
|
||||
formatvalue=self.formatvalue,
|
||||
formatannotation=inspect.formatannotationrelativeto(object))
|
||||
if realname == '<lambda>':
|
||||
title = '<strong>%s</strong> <em>lambda</em> ' % name
|
||||
# XXX lambda's won't usually have func_annotations['return']
|
||||
# since the syntax doesn't support but it is possible.
|
||||
# So removing parentheses isn't truly safe.
|
||||
argspec = argspec[1:-1] # remove parentheses
|
||||
else:
|
||||
argspec = None
|
||||
if inspect.isfunction(object) or inspect.isbuiltin(object):
|
||||
signature = inspect.signature(object)
|
||||
if signature:
|
||||
argspec = str(signature)
|
||||
if realname == '<lambda>':
|
||||
title = '<strong>%s</strong> <em>lambda</em> ' % name
|
||||
# XXX lambda's won't usually have func_annotations['return']
|
||||
# since the syntax doesn't support but it is possible.
|
||||
# So removing parentheses isn't truly safe.
|
||||
argspec = argspec[1:-1] # remove parentheses
|
||||
if not argspec:
|
||||
argspec = '(...)'
|
||||
|
||||
decl = title + argspec + (note and self.grey(
|
||||
|
@ -1313,20 +1311,18 @@ location listed above.
|
|||
cl.__dict__[realname] is object):
|
||||
skipdocs = 1
|
||||
title = self.bold(name) + ' = ' + realname
|
||||
if inspect.isfunction(object):
|
||||
args, varargs, varkw, defaults, kwonlyargs, kwdefaults, ann = \
|
||||
inspect.getfullargspec(object)
|
||||
argspec = inspect.formatargspec(
|
||||
args, varargs, varkw, defaults, kwonlyargs, kwdefaults, ann,
|
||||
formatvalue=self.formatvalue,
|
||||
formatannotation=inspect.formatannotationrelativeto(object))
|
||||
if realname == '<lambda>':
|
||||
title = self.bold(name) + ' lambda '
|
||||
# XXX lambda's won't usually have func_annotations['return']
|
||||
# since the syntax doesn't support but it is possible.
|
||||
# So removing parentheses isn't truly safe.
|
||||
argspec = argspec[1:-1] # remove parentheses
|
||||
else:
|
||||
argspec = None
|
||||
if inspect.isfunction(object) or inspect.isbuiltin(object):
|
||||
signature = inspect.signature(object)
|
||||
if signature:
|
||||
argspec = str(signature)
|
||||
if realname == '<lambda>':
|
||||
title = self.bold(name) + ' lambda '
|
||||
# XXX lambda's won't usually have func_annotations['return']
|
||||
# since the syntax doesn't support but it is possible.
|
||||
# So removing parentheses isn't truly safe.
|
||||
argspec = argspec[1:-1] # remove parentheses
|
||||
if not argspec:
|
||||
argspec = '(...)'
|
||||
decl = title + argspec + note
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue