我试图使用sphinx-doc:automodule:结合模拟出模块按照this的答案。具体来说,我使用Mock来获取ReadTheDocs上不可用的PyQt5模块导入。Sphinx-doc:automodule:with Mock imports
奇怪的是,我发现任何继承自Mock-ed模块类的类都不包含在结果文档中。似乎狮身人面像不能看到他们由于某种原因。
我稍微定制模拟如下:
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__
需要允许from x import *
风格进口的PyQt5类。
我可以确认,将超类更改为object
会导致正确记录类,正如删除Mock(本地生成)一样。使用:autoclass:
强制使用文档的结果只有一行,表示该类继承自Mock
。