我使用sphinx来记录我的python项目,我有几个Qt/PySide小部件子类。因此,当我运行sphinx时,我需要模仿PySide,因为运行doc脚本的机器没有安装qt或PySide。autodoc无法对这些子类执行任何操作。在
我尝试添加一个autodoc skip成员函数,该函数检查该对象是否是mock的实例并返回false,但仍然没有得到记录。不模仿和安装pyside可以解决这个问题。在
def skip(app, what, name, obj, skip, options):
if isinstance(obj, unittest.mock.Mock):
print('not skipping {0}'.format(name))
return False
return skip
def setup(app):
app.connect("autodoc-skip-member", skip)
autodoc上有没有设置可以让它飞起来?在
所以,让斯芬克斯飞起来而不需要额外的扩展的主要解决方案是这样嘲笑他们:
示例here和sphinx autodoc模块使用similar approach。但是,如果您尝试将这些模拟导入的子类化,则继承instatiate类,而不是类本身,因为模块被设置为实例。改成这样对我很有效:
^{pr2}$注意,它只是一个类
Mock
,而不是一个实例Mock()
。我不知道这会有什么影响,但它的工作如预期相关问题 更多 >
编程相关推荐