使用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:
:
所以我试图通过快速和脏的 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代码中的问题(连同键入?)或仅存在于我的问题。无论如何我想分享。