8000 Rewrite and greatly simplify qt_compat.py. · matplotlib/matplotlib@01170f0 · GitHub
[go: up one dir, main page]

Skip to content
  • Commit 01170f0

    Browse files
    committed
    Rewrite and greatly simplify qt_compat.py.
    The selection logic is now described in the module's docstring. The only changes is that the QT_ENV_MAJOR_VERSION global, which would sometimes be defined (depending on the state of the import cache, the QT_API environment variable, and the requested backend) is never defined anymore.
    1 parent 5a927c1 commit 01170f0

    File tree

    8 files changed

    +152
    -323
    lines changed

    8 files changed

    +152
    -323
    lines changed

    INSTALL.rst

    Lines changed: 3 additions & 2 deletions
    Original file line numberDiff line numberDiff line change
    @@ -151,8 +151,9 @@ interface toolkits. See :ref:`what-is-a-backend` for more details on the
    151151
    optional Matplotlib backends and the capabilities they provide.
    152152

    153153
    * :term:`tk` (>= 8.3, != 8.6.0 or 8.6.1): for the TkAgg backend;
    154-
    * `PyQt4 <https://pypi.python.org/pypi/PyQt4>`_ (>= 4.4) or
    155-
    `PySide <https://pypi.python.org/pypi/PySide>`_: for the Qt4Agg backend;
    154+
    * `PyQt4 <https://pypi.python.org/pypi/PyQt4>`_ (>= 4.6) or
    155+
    `PySide <https://pypi.python.org/pypi/PySide>`_ (>= 1.0.3): for the Qt4Agg
    156+
    backend;
    156157
    * `PyQt5 <https://pypi.python.org/pypi/PyQt5>`_: for the Qt5Agg backend;
    157158
    * :term:`wxpython` (>= 4): for the WX or WXAgg backend;
    158159
    * `cairocffi <https://cairocffi.readthedocs.io/en/latest/>`_ (>=0.8) or

    doc/api/backend_qt4agg_api.rst

    Lines changed: 6 additions & 4 deletions
    Original file line numberDiff line numberDiff line change
    @@ -2,7 +2,9 @@
    22
    :mod:`matplotlib.backends.backend_qt4agg`
    33
    =========================================
    44

    5-
    .. automodule:: matplotlib.backends.backend_qt4agg
    6-
    :members:
    7-
    :undoc-members:
    8-
    :show-inheritance:
    5+
    **NOTE** Not included, to avoid adding a dependency to building the docs.
    6+
    7+
    .. .. automodule:: matplotlib.backends.backend_qt4agg
    8+
    .. :members:
    9+
    .. :undoc-members:
    10+
    .. :show-inheritance:

    doc/api/backend_qt4cairo_api.rst

    Lines changed: 6 additions & 4 deletions
    Original file line numberDiff line numberDiff line change
    @@ -2,7 +2,9 @@
    22
    :mod:`matplotlib.backends.backend_qt4cairo`
    33
    ===========================================
    44

    5-
    .. automodule:: matplotlib.backends.backend_qt4cairo
    6-
    :members:
    7-
    :undoc-members:
    8-
    :show-inheritance:
    5+
    **NOTE** Not included, to avoid adding a dependency to building the docs.
    6+
    7+
    .. .. automodule:: matplotlib.backends.backend_qt4cairo
    8+
    .. :members:
    9+
    .. :undoc-members:
    10+
    .. :show-inheritance:

    doc/api/backend_qt5agg_api.rst

    Lines changed: 6 additions & 4 deletions
    Original file line numberDiff line numberDiff line change
    @@ -2,7 +2,9 @@
    22
    :mod:`matplotlib.backends.backend_qt5agg`
    33
    =========================================
    44

    5-
    .. automodule:: matplotlib.backends.backend_qt5agg
    6-
    :members:
    7-
    :undoc-members:
    8-
    :show-inheritance:
    5+
    **NOTE** Not included, to avoid adding a dependency to building the docs.
    6+
    7+
    .. .. automodule:: matplotlib.backends.backend_qt5agg
    8+
    .. :members:
    9+
    .. :undoc-members:
    10+
    .. :show-inheritance:

    doc/api/backend_qt5cairo_api.rst

    Lines changed: 6 additions & 4 deletions
    Original file line numberDiff line numberDiff line change
    @@ -2,7 +2,9 @@
    22
    :mod:`matplotlib.backends.backend_qt5cairo`
    33
    ===========================================
    44

    5-
    .. automodule:: matplotlib.backends.backend_qt5cairo
    6-
    :members:
    7-
    :undoc-members:
    8-
    :show-inheritance:
    5+
    **NOTE** Not included, to avoid adding a dependency to building the docs.
    6+
    7+
    .. .. automodule:: matplotlib.backends.backend_qt5cairo
    8+
    .. :members:
    9+
    .. :undoc-members:
    10+
    .. :show-inheritance:

    doc/sphinxext/mock_gui_toolkits.py

    Lines changed: 0 additions & 104 deletions
    Original file line numberDiff line numberDiff line change
    @@ -6,108 +6,6 @@ class MyCairoCffi(MagicMock):
    66
    pass
    77

    88

    9-
    class MyPyQt4(MagicMock):
    10-
    class QtGui(object):
    11-
    # PyQt4.QtGui public classes.
    12-
    # Generated with
    13-
    # textwrap.fill([name for name in dir(PyQt4.QtGui)
    14-
    # if isinstance(getattr(PyQt4.QtGui, name), type)])
    15-
    _QtGui_public_classes = """\
    16-
    Display QAbstractButton QAbstractGraphicsShapeItem
    17-
    QAbstractItemDelegate QAbstractItemView QAbstractPrintDialog
    18-
    QAbstractProxyModel QAbstractScrollArea QAbstractSlider
    19-
    QAbstractSpinBox QAbstractTextDocumentLayout QAction QActionEvent
    20-
    QActionGroup QApplication QBitmap QBoxLayout QBrush QButtonGroup
    21-
    QCalendarWidget QCheckBox QClipboard QCloseEvent QColor QColorDialog
    22-
    QColumnView QComboBox QCommandLinkButton QCommonStyle QCompleter
    23-
    QConicalGradient QContextMenuEvent QCursor QDataWidgetMapper QDateEdit
    24-
    QDateTimeEdit QDesktopServices QDesktopWidget QDial QDialog
    25-
    QDialogButtonBox QDirModel QDockWidget QDoubleSpinBox QDoubleValidator
    26-
    QDrag QDragEnterEvent QDragLeaveEvent QDragMoveEvent QDropEvent
    27-
    QErrorMessage QFileDialog QFileIconProvider QFileOpenEvent
    28-
    QFileSystemModel QFocusEvent QFocusFrame QFont QFontComboBox
    29-
    QFontDatabase QFontDialog QFontInfo QFontMetrics QFontMetricsF
    30-
    QFormLayout QFrame QGesture QGestureEvent QGestureRecognizer QGlyphRun
    31-
    QGradient QGraphicsAnchor QGraphicsAnchorLayout QGraphicsBlurEffect
    32-
    QGraphicsColorizeEffect QGraphicsDropShadowEffect QGraphicsEffect
    33-
    QGraphicsEllipseItem QGraphicsGridLayout QGraphicsItem
    34-
    QGraphicsItemAnimation QGraphicsItemGroup QGraphicsLayout
    35-
    QGraphicsLayoutItem QGraphicsLineItem QGraphicsLinearLayout
    36-
    QGraphicsObject QGraphicsOpacityEffect QGraphicsPathItem
    37-
    QGraphicsPixmapItem QGraphicsPolygonItem QGraphicsProxyWidget
    38-
    QGraphicsRectItem QGraphicsRotation QGraphicsScale QGraphicsScene
    39-
    QGraphicsSceneContextMenuEvent QGraphicsSceneDragDropEvent
    40-
    QGraphicsSceneEvent QGraphicsSceneHelpEvent QGraphicsSceneHoverEvent
    41-
    QGraphicsSceneMouseEvent QGraphicsSceneMoveEvent
    42-
    QGraphicsSceneResizeEvent QGraphicsSceneWheelEvent
    43-
    QGraphicsSimpleTextItem QGraphicsTextItem QGraphicsTransform
    44-
    QGraphicsView QGraphicsWidget QGridLayout QGroupBox QHBoxLayout
    45-
    QHeaderView QHelpEvent QHideEvent QHoverEvent QIcon QIconDragEvent
    46-
    QIconEngine QIconEngineV2 QIdentityProxyModel QImage QImageIOHandler
    47-
    QImageReader QImageWriter QInputContext QInputContextFactory
    48-
    QInputDialog QInputEvent QInputMethodEvent QIntValidator QItemDelegate
    49-
    QItemEditorCreatorBase QItemEditorFactory QItemSelection
    50-
    QItemSelectionModel QItemSelectionRange QKeyEvent QKeyEventTransition
    51-
    QKeySequence QLCDNumber QLabel QLayout QLayoutItem QLineEdit
    52-
    QLinearGradient QListView QListWidget QListWidgetItem QMainWindow
    53-
    QMatrix QMatrix2x2 QMatrix2x3 QMatrix2x4 QMatrix3x2 QMatrix3x3
    54-
    QMatrix3x4 QMatrix4x2 QMatrix4x3 QMatrix4x4 QMdiArea QMdiSubWindow
    55-
    QMenu QMenuBar QMessageBox QMimeSource QMouseEvent
    56-
    QMouseEventTransition QMoveEvent QMovie QPageSetupDialog QPaintDevice
    57-
    QPaintEngine QPaintEngineState QPaintEvent QPainter QPainterPath
    58-
    QPainterPathStroker QPalette QPanGesture QPen QPicture QPictureIO
    59-
    QPinchGesture QPixmap QPixmapCache QPlainTextDocumentLayout
    60-
    QPlainTextEdit QPolygon QPolygonF QPrintDialog QPrintEngine
    61-
    QPrintPreviewDialog QPrintPreviewWidget QPrinter QPrinterInfo
    62-
    QProgressBar QProgressDialog QProxyModel QPushButton QPyTextObject
    63-
    QQuaternion QRadialGradient QRadioButton QRawFont QRegExpValidator
    64-
    QRegion QResizeEvent QRubberBand QScrollArea QScrollBar
    65-
    QSessionManager QShortcut QShortcutEvent QShowEvent QSizeGrip
    66-
    QSizePolicy QSlider QSortFilterProxyModel QSound QSpacerItem QSpinBox
    67-
    QSplashScreen QSplitter QSplitterHandle QStackedLayout QStackedWidget
    68-
    QStandardItem QStandardItemModel QStaticText QStatusBar
    69-
    QStatusTipEvent QStringListModel QStyle QStyleFactory QStyleHintReturn
    70-
    QStyleHintReturnMask QStyleHintReturnVariant QStyleOption
    71-
    QStyleOptionButton QStyleOptionComboBox QStyleOptionComplex
    72-
    QStyleOptionDockWidget QStyleOptionDockWidgetV2 QStyleOptionFocusRect
    73-
    QStyleOptionFrame QStyleOptionFrameV2 QStyleOptionFrameV3
    74-
    QStyleOptionGraphicsItem QStyleOptionGroupBox QStyleOptionHeader
    75-
    QStyleOptionMenuItem QStyleOptionProgressBar QStyleOptionProgressBarV2
    76-
    QStyleOptionRubberBand QStyleOptionSizeGrip QStyleOptionSlider
    77-
    QStyleOptionSpinBox QStyleOptionTab QStyleOptionTabBarBase
    78-
    QStyleOptionTabBarBaseV2 QStyleOptionTabV2 QStyleOptionTabV3
    79-
    QStyleOptionTabWidgetFrame QStyleOptionTabWidgetFrameV2
    80-
    QStyleOptionTitleBar QStyleOptionToolBar QStyleOptionToolBox
    81-
    QStyleOptionToolBoxV2 QStyleOptionToolButton QStyleOptionViewItem
    82-
    QStyleOptionViewItemV2 QStyleOptionViewItemV3 QStyleOptionViewItemV4
    83-
    QStylePainter QStyledItemDelegate QSwipeGesture QSyntaxHighlighter
    10000
    84-
    QSystemTrayIcon QTabBar QTabWidget QTableView QTableWidget
    85-
    QTableWidgetItem QTableWidgetSelectionRange QTabletEvent
    86-
    QTapAndHoldGesture QTapGesture QTextBlock QTextBlockFormat
    87-
    QTextBlockGroup QTextBlockUserData QTextBrowser QTextCharFormat
    88-
    QTextCursor QTextDocument QTextDocumentFragment QTextDocumentWriter
    89-
    QTextEdit QTextFormat QTextFragment QTextFrame QTextFrameFormat
    90-
    QTextImageFormat QTextInlineObject QTextItem QTextLayout QTextLength
    91-
    QTextLine QTextList QTextListFormat QTextObject QTextObjectInterface
    92-
    QTextOption QTextTable QTextTableCell QTextTableCellFormat
    93-
    QTextTableFormat QTimeEdit QToolBar QToolBox QToolButton QToolTip
    94-
    QTouchEvent QTransform QTreeView QTreeWidget QTreeWidgetItem
    95-
    QTreeWidgetItemIterator QUndoCommand QUndoGroup QUndoStack QUndoView
    96-
    QVBoxLayout QValidator QVector2D QVector3D QVector4D QWhatsThis
    97-
    QWhatsThisClickedEvent QWheelEvent QWidget QWidgetAction QWidgetItem
    98-
    QWindowStateChangeEvent QWizard QWizardPage QWorkspace
    99-
    QX11EmbedContainer QX11EmbedWidget QX11Info
    100-
    """
    101-
    for _name in _QtGui_public_classes.split():
    102-
    locals()[_name] = type(_name, (), {})
    103-
    del _name
    104-
    105-
    106-
    class MySip(MagicMock):
    107-
    def getapi(*args):
    108-
    return 1
    109-
    110-
    1119
    class MyWX(MagicMock):
    11210
    class Panel(object):
    11311
    pass
    @@ -122,8 +20,6 @@ class Frame(object):
    12220
    def setup(app):
    12321
    sys.modules.update(
    12422
    cairocffi=MyCairoCffi(),
    125-
    PyQt4=MyPyQt4(),
    126-
    sip=MySip(),
    12723
    wx=MyWX(),
    12824
    )
    12925
    return {'parallel_read_safe': True, 'parallel_write_safe': True}

    0 commit comments

    Comments
     (0)
    0