Skip to content

Commit 42bbc68

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 677a3b2 commit 42bbc68

File tree

8 files changed

+164
-320
lines changed

8 files changed

+164
-320
lines changed

INSTALL.rst

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

152152
* :term:`tk` (>= 8.3, != 8.6.0 or 8.6.1): for the Tk-based backends;
153-
* `PyQt4 <https://pypi.python.org/pypi/PyQt4>`_ (>= 4.4) or
154-
`PySide <https://pypi.python.org/pypi/PySide>`_: for the Qt4-based backends;
153+
* `PyQt4 <https://pypi.python.org/pypi/PyQt4>`_ (>= 4.6) or
154+
`PySide <https://pypi.python.org/pypi/PySide>`_ (>= 1.0.3): for the Qt4-based
155+
backends;
155156
* `PyQt5 <https://pypi.python.org/pypi/PyQt5>`_: for the Qt5-based backends;
156157
* `PyGObject <https://pypi.org/project/PyGObject/>`_ or
157158
`pgi <https://pypi.org/project/pgi/>`_ (>= 0.0.11.2): for the GTK3-based

doc/api/backend_qt4agg_api.rst

+6-4
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

+6-4
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

+6-4
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

+6-4
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

-104
Original file line numberDiff line numberDiff line change
@@ -6,108 +6,6 @@ class MyCairoCffi(MagicMock):
66
__name__ = "cairocffi"
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
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
@@ -125,8 +23,6 @@ class StatusBar(object):
12523
def setup(app):
12624
sys.modules.update(
12725
cairocffi=MyCairoCffi(),
128-
PyQt4=MyPyQt4(),
129-
sip=MySip(),
13026
wx=MyWX(),
13127
)
13228
return {'parallel_read_safe': True, 'parallel_write_safe': True}

0 commit comments

Comments
 (0)