else:
note = ' unbound %s method' % self.classlink(imclass,mod)
+ if (inspect.iscoroutinefunction(object) or
+ inspect.isasyncgenfunction(object)):
+ asyncqualifier = 'async '
+ else:
+ asyncqualifier = ''
+
if name == realname:
title = '<a name="%s"><strong>%s</strong></a>' % (anchor, realname)
else:
if not argspec:
argspec = '(...)'
- decl = title + self.escape(argspec) + (note and self.grey(
- '<font face="helvetica, arial">%s</font>' % note))
+ decl = asyncqualifier + title + self.escape(argspec) + (note and
+ self.grey('<font face="helvetica, arial">%s</font>' % note))
if skipdocs:
return '<dl><dt>%s</dt></dl>\n' % decl
else:
note = ' unbound %s method' % classname(imclass,mod)
+ if (inspect.iscoroutinefunction(object) or
+ inspect.isasyncgenfunction(object)):
+ asyncqualifier = 'async '
+ else:
+ asyncqualifier = ''
+
if name == realname:
title = self.bold(realname)
else:
argspec = argspec[1:-1] # remove parentheses
if not argspec:
argspec = '(...)'
- decl = title + argspec + note
+ decl = asyncqualifier + title + argspec + note
if skipdocs:
return decl + '\n'
Custom descriptor
""")
+ def test_async_annotation(self):
+ async def coro_function(ign) -> int:
+ return 1
+
+ text = pydoc.plain(pydoc.plaintext.document(coro_function))
+ self.assertIn('async coro_function', text)
+
+ html = pydoc.HTMLDoc().document(coro_function)
+ self.assertIn(
+ 'async <a name="-coro_function"><strong>coro_function',
+ html)
+
+ def test_async_generator_annotation(self):
+ async def an_async_generator():
+ yield 1
+
+ text = pydoc.plain(pydoc.plaintext.document(an_async_generator))
+ self.assertIn('async an_async_generator', text)
+
+ html = pydoc.HTMLDoc().document(an_async_generator)
+ self.assertIn(
+ 'async <a name="-an_async_generator"><strong>an_async_generator',
+ html)
class PydocServerTest(unittest.TestCase):
"""Tests for pydoc._start_server"""