Skip to content

Commit

Permalink
Issue python#29338: The help of a builtin or extension class now incl…
Browse files Browse the repository at this point in the history
…udes the

constructor signature if __text_signature__ is provided for the class.
  • Loading branch information
serhiy-storchaka committed Jan 23, 2017
1 parent 9fa4a12 commit ccb5f3c
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 3 deletions.
32 changes: 29 additions & 3 deletions Lib/pydoc.py
Original file line number Diff line number Diff line change
Expand Up @@ -909,7 +909,21 @@ def spilldata(msg, attrs, predicate):
for base in bases:
parents.append(self.classlink(base, object.__module__))
title = title + '(%s)' % ', '.join(parents)
doc = self.markup(getdoc(object), self.preformat, funcs, classes, mdict)

decl = ''
try:
signature = inspect.signature(object)
except (ValueError, TypeError):
signature = None
if signature:
argspec = str(signature)
if argspec:
decl = name + self.escape(argspec) + '\n\n'

doc = getdoc(object)
if decl:
doc = decl + (doc or '')
doc = self.markup(doc, self.preformat, funcs, classes, mdict)
doc = doc and '<tt>%s<br>&nbsp;</tt>' % doc

return self.section(title, '#000000', '#ffc8d8', contents, 3, doc)
Expand Down Expand Up @@ -1213,10 +1227,22 @@ def makename(c, m=object.__module__):
parents = map(makename, bases)
title = title + '(%s)' % ', '.join(parents)

doc = getdoc(object)
contents = doc and [doc + '\n'] or []
contents = []
push = contents.append

try:
signature = inspect.signature(object)
except (ValueError, TypeError):
signature = None
if signature:
argspec = str(signature)
if argspec:
push(name + argspec + '\n')

doc = getdoc(object)
if doc:
push(doc + '\n')

# List the mro, if non-trivial.
mro = deque(inspect.getmro(object))
if len(mro) > 2:
Expand Down
3 changes: 3 additions & 0 deletions Misc/NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,9 @@ Core and Builtins
Library
-------

- Issue #29338: The help of a builtin or extension class now includes the
constructor signature if __text_signature__ is provided for the class.

- Issue #29335: Fix subprocess.Popen.wait() when the child process has
exited to a stopped instead of terminated state (ex: when under ptrace).

Expand Down

0 comments on commit ccb5f3c

Please sign in to comment.