Sphinx-doc: auto module: with import of layouts

I am trying to use sphinx-doc: automodule: in combination with Mock-ed out modules in accordance with this answer. In particular, I use Mock to import PyQt5 modules that are not available in ReadTheDocs.

Strange, I believe that any class that inherits from the Mock-ed module class is not included in the final documentation. It seems that the sphinx dock cannot see them for some reason.

My slightly customizable layout looks like this:

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__You must enable style import from x import *for PyQt5 classes.

, object , , Mock ( ). :autoclass: , , Mock.

+3
1

, Mock Qt . qt.py, PyQt4 PyQt5 ( Qt).

ReadTheDocs, , , , object. , , . , .

# ReadTheDocs
ON_RTD = os.environ.get('READTHEDOCS', None) == 'True'
if not ON_RTD:

    #... do the normal import here ...

else:

    class QMockObject(object):
        def __init__(self, *args, **kwargs):
            super(QMockObject, self).__init__()

        def __call__(self, *args, **kwargs):
            return None

    class QApplication(QMockObject):
        pass

    class pyqtSignal(QMockObject):
        pass

    class pyqtSlot(QMockObject):
        pass

    class QObject(QMockObject):
        pass

    class QAbstractItemModel(QMockObject):
        pass

    class QModelIndex(QMockObject):
        pass

    class QTabWidget(QMockObject):
        pass

    class QWebPage(QMockObject):
        pass

    class QTableView(QMockObject):
        pass

    class QWebView(QMockObject):
        pass

    class QAbstractTableModel(QMockObject):
        pass

    class Qt(QMockObject):
        DisplayRole = None

    class QWidget(QMockObject):
        pass

    class QPushButton(QMockObject):
        pass

    class QDoubleSpinBox(QMockObject):
        pass

    class QListWidget(QMockObject):
        pass

    class QDialog(QMockObject):
        pass

    class QSize(QMockObject):
        pass

    class QTableWidget(QMockObject):
        pass

    class QMainWindow(QMockObject):
        pass

    class QTreeWidget(QMockObject):
        pass

    class QAbstractItemDelegate(QMockObject):
        pass

    class QColor(QMockObject):
        pass

    class QGraphicsItemGroup(QMockObject):
        pass

    class QGraphicsItem(QMockObject):
        pass

    class QGraphicsPathItem(QMockObject):
        pass

    class QGraphicsTextItem(QMockObject):
        pass

    class QGraphicsRectItem(QMockObject):
        pass

    class QGraphicsScene(QMockObject):
        pass

    class QGraphicsView(QMockObject):
        pass

    app = None
0

All Articles