Sphinx不会生成函数签名

时间:2016-05-21 11:32:20

标签: python python-sphinx type-hinting typing autodoc

问题:奇怪的Sphinx Autodoc警告

使用sphinx autodoc记录python代码时遇到了一个问题,我可能已修复并希望分享:

当我使用 sphinx 扩展 autodoc 拿破仑(对于Google Style Doc)从我的Python代码构建文档时,我总是找到没有函数,方法签名的doc 。 同时,sphinx给了我一个奇怪的警告,我的每个python代码结构。

WARNING: error while formatting arguments for <a code obj here>: 
'code' object has no attribute 'co_kwonlyargcount'

但是:构建成功,369警告

无法找到此警告的解决方案,我将python调试器连接到sphinx项目的新git克隆。 它显示警告是由异常创建的,该异常已在函数 autodoc.formatargspecs 中抛出。后来调用typing.get_type_hints,再次typing._get_defaults与高度怀疑的行: kw_count = code.co_kwonlyargcount

PyCharm中的Stacktrace:

Stacktrace in PyCharm

解决方案:尝试 - 除了错误的代码:

所以我试图通过快速和脏的 try-except-clause 解决问题:

自:

introspected_hints = (typing.get_type_hints(function)
                          if typing and hasattr(function, '__code__')`

为:

try:
   introspected_hints = (typing.get_type_hints(function)
                             if typing and hasattr(function, '__code__')
except AttributeError:
   introspected_hints = {}

确实,快速解决方案解决了这两个问题:不再创建警告,并且文档还显示了我的函数的正确(!)签名。

这个问题可能是sphinx代码中的问题(连同键入?)或仅存在于我的问题。无论如何我想分享。

0 个答案:

没有答案