【发布时间】:2014-09-21 14:36:25
【问题描述】:
我正在尝试根据this 的答案将 sphinx-doc :automodule: 与模拟模块结合使用。具体来说,我将 Mock 用于 ReadTheDocs 上不可用的 PyQt5 模块导入。
奇怪的是,我发现任何从 Mock-ed 模块的类继承的类都不包含在生成的文档中。似乎 sphinx-doc 出于某种原因无法看到它们。
我的稍微定制的 Mock 如下:
from mock import Mock as MagicMock
class Mock(MagicMock):
__all__ = ['QApplication','pyqtSignal','pyqtSlot','QObject','QAbstractItemModel','QModelIndex','QTabWidget',
'QWebPage','QTableView','QWebView','QAbstractTableModel','Qt','QWidget','QPushButton','QDoubleSpinBox',
'QListWidget','QDialog','QSize','QTableWidget','QMainWindow','QTreeWidget',
'QAbstractItemDelegate','QColor','QGraphicsItemGroup','QGraphicsItem','QGraphicsPathItem',
'QGraphicsTextItem','QGraphicsRectItem','QGraphicsScene','QGraphicsView',]
def __init__(self, *args, **kwargs):
super(Mock, self).__init__()
@classmethod
def __getattr__(cls, name):
if name in ('__file__', '__path__'):
return os.devnull
else:
return Mock
@classmethod
def __setattr__(*args, **kwargs):
pass
def __setitem__(self, *args, **kwargs):
return
def __getitem__(self, *args, **kwargs):
return Mock
__all__ 是允许 PyQt5 类导入 from x import * 样式所必需的。
我可以确认将超类更改为 object 会导致正确记录类,删除 Mock(在本地生成)也是如此。使用 :autoclass: 强制文档生成单行说明该类继承自 Mock。
【问题讨论】:
标签: python python-sphinx