diff --git a/doc/README.txt b/doc/README.txt index f2c2e8d66d41..ee3d9f14dfb3 100644 --- a/doc/README.txt +++ b/doc/README.txt @@ -36,6 +36,3 @@ python documentation system built on top of ReST. This directory contains * _templates - used by the sphinx build system * sphinxext - Sphinx extensions for the mpl docs - -* mpl_examples - a link to the Matplotlib examples in case any - documentation wants to literal include them diff --git a/doc/conf.py b/doc/conf.py index 58ed02415e00..9342fa58c646 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -17,7 +17,6 @@ import sphinx import six from glob import glob -from sphinx_gallery.sorting import ExplicitOrder # If your extensions are in another directory, add it here. If the directory # is relative to the documentation root, use os.path.abspath to make it @@ -29,14 +28,25 @@ # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['matplotlib.sphinxext.mathmpl', 'sphinxext.math_symbol_table', - 'sphinx.ext.autodoc', 'matplotlib.sphinxext.only_directives', - 'sphinx.ext.doctest', 'sphinx.ext.autosummary', - 'sphinx.ext.inheritance_diagram', 'sphinx.ext.intersphinx', - 'sphinx_gallery.gen_gallery', - 'matplotlib.sphinxext.plot_directive', - 'sphinxext.github', 'sphinxext.custom_roles', - 'numpydoc'] +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.autosummary', + 'sphinx.ext.doctest', + 'sphinx.ext.inheritance_diagram', + 'sphinx.ext.intersphinx', + 'IPython.sphinxext.ipython_console_highlighting', + 'IPython.sphinxext.ipython_directive', + 'numpydoc', # Needs to be loaded *after* autodoc. + 'sphinx_gallery.gen_gallery', + 'matplotlib.sphinxext.mathmpl', + 'matplotlib.sphinxext.only_directives', + 'matplotlib.sphinxext.plot_directive', + 'sphinxext.custom_roles', + 'sphinxext.github', + 'sphinxext.math_symbol_table', + 'sphinxext.mock_gui_toolkits', + 'sphinxext.skip_deprecated', +] exclude_patterns = ['api/api_changes/*', 'users/whats_new/*'] @@ -61,18 +71,10 @@ def _check_deps(): "The following dependencies are missing to build the " "documentation: {}".format(", ".join(missing))) - _check_deps() -try: - from unittest.mock import MagicMock -except ImportError: - from mock import MagicMock - - -# Use IPython's console highlighting by default -extensions.extend(['IPython.sphinxext.ipython_console_highlighting', - 'IPython.sphinxext.ipython_directive']) +# Import only after checking for dependencies. +from sphinx_gallery.sorting import ExplicitOrder if six.PY2: from distutils.spawn import find_executable @@ -85,7 +87,6 @@ def _check_deps(): "No binary named dot - you need to install the Graph Visualization " "software (usually packaged as 'graphviz') to build the documentation") - autosummary_generate = True autodoc_docstring_signature = True @@ -334,146 +335,6 @@ def _check_deps(): 1), ] - -class MyCairo(MagicMock): - version_info = (1, 4, 0) - - -class MyPyQt4(MagicMock): - class QtGui(object): - # PyQt4.QtGui public classes. - # Generated with - # textwrap.fill([name for name in dir(PyQt4.QtGui) - # if isinstance(getattr(PyQt4.QtGui, name), type)]) - _QtGui_public_classes = """\ - Display QAbstractButton QAbstractGraphicsShapeItem - QAbstractItemDelegate QAbstractItemView QAbstractPrintDialog - QAbstractProxyModel QAbstractScrollArea QAbstractSlider - QAbstractSpinBox QAbstractTextDocumentLayout QAction QActionEvent - QActionGroup QApplication QBitmap QBoxLayout QBrush QButtonGroup - QCalendarWidget QCheckBox QClipboard QCloseEvent QColor QColorDialog - QColumnView QComboBox QCommandLinkButton QCommonStyle QCompleter - QConicalGradient QContextMenuEvent QCursor QDataWidgetMapper QDateEdit - QDateTimeEdit QDesktopServices QDesktopWidget QDial QDialog - QDialogButtonBox QDirModel QDockWidget QDoubleSpinBox QDoubleValidator - QDrag QDragEnterEvent QDragLeaveEvent QDragMoveEvent QDropEvent - QErrorMessage QFileDialog QFileIconProvider QFileOpenEvent - QFileSystemModel QFocusEvent QFocusFrame QFont QFontComboBox - QFontDatabase QFontDialog QFontInfo QFontMetrics QFontMetricsF - QFormLayout QFrame QGesture QGestureEvent QGestureRecognizer QGlyphRun - QGradient QGraphicsAnchor QGraphicsAnchorLayout QGraphicsBlurEffect - QGraphicsColorizeEffect QGraphicsDropShadowEffect QGraphicsEffect - QGraphicsEllipseItem QGraphicsGridLayout QGraphicsItem - QGraphicsItemAnimation QGraphicsItemGroup QGraphicsLayout - QGraphicsLayoutItem QGraphicsLineItem QGraphicsLinearLayout - QGraphicsObject QGraphicsOpacityEffect QGraphicsPathItem - QGraphicsPixmapItem QGraphicsPolygonItem QGraphicsProxyWidget - QGraphicsRectItem QGraphicsRotation QGraphicsScale QGraphicsScene - QGraphicsSceneContextMenuEvent QGraphicsSceneDragDropEvent - QGraphicsSceneEvent QGraphicsSceneHelpEvent QGraphicsSceneHoverEvent - QGraphicsSceneMouseEvent QGraphicsSceneMoveEvent - QGraphicsSceneResizeEvent QGraphicsSceneWheelEvent - QGraphicsSimpleTextItem QGraphicsTextItem QGraphicsTransform - QGraphicsView QGraphicsWidget QGridLayout QGroupBox QHBoxLayout - QHeaderView QHelpEvent QHideEvent QHoverEvent QIcon QIconDragEvent - QIconEngine QIconEngineV2 QIdentityProxyModel QImage QImageIOHandler - QImageReader QImageWriter QInputContext QInputContextFactory - QInputDialog QInputEvent QInputMethodEvent QIntValidator QItemDelegate - QItemEditorCreatorBase QItemEditorFactory QItemSelection - QItemSelectionModel QItemSelectionRange QKeyEvent QKeyEventTransition - QKeySequence QLCDNumber QLabel QLayout QLayoutItem QLineEdit - QLinearGradient QListView QListWidget QListWidgetItem QMainWindow - QMatrix QMatrix2x2 QMatrix2x3 QMatrix2x4 QMatrix3x2 QMatrix3x3 - QMatrix3x4 QMatrix4x2 QMatrix4x3 QMatrix4x4 QMdiArea QMdiSubWindow - QMenu QMenuBar QMessageBox QMimeSource QMouseEvent - QMouseEventTransition QMoveEvent QMovie QPageSetupDialog QPaintDevice - QPaintEngine QPaintEngineState QPaintEvent QPainter QPainterPath - QPainterPathStroker QPalette QPanGesture QPen QPicture QPictureIO - QPinchGesture QPixmap QPixmapCache QPlainTextDocumentLayout - QPlainTextEdit QPolygon QPolygonF QPrintDialog QPrintEngine - QPrintPreviewDialog QPrintPreviewWidget QPrinter QPrinterInfo - QProgressBar QProgressDialog QProxyModel QPushButton QPyTextObject - QQuaternion QRadialGradient QRadioButton QRawFont QRegExpValidator - QRegion QResizeEvent QRubberBand QScrollArea QScrollBar - QSessionManager QShortcut QShortcutEvent QShowEvent QSizeGrip - QSizePolicy QSlider QSortFilterProxyModel QSound QSpacerItem QSpinBox - QSplashScreen QSplitter QSplitterHandle QStackedLayout QStackedWidget - QStandardItem QStandardItemModel QStaticText QStatusBar - QStatusTipEvent QStringListModel QStyle QStyleFactory QStyleHintReturn - QStyleHintReturnMask QStyleHintReturnVariant QStyleOption - QStyleOptionButton QStyleOptionComboBox QStyleOptionComplex - QStyleOptionDockWidget QStyleOptionDockWidgetV2 QStyleOptionFocusRect - QStyleOptionFrame QStyleOptionFrameV2 QStyleOptionFrameV3 - QStyleOptionGraphicsItem QStyleOptionGroupBox QStyleOptionHeader - QStyleOptionMenuItem QStyleOptionProgressBar QStyleOptionProgressBarV2 - QStyleOptionRubberBand QStyleOptionSizeGrip QStyleOptionSlider - QStyleOptionSpinBox QStyleOptionTab QStyleOptionTabBarBase - QStyleOptionTabBarBaseV2 QStyleOptionTabV2 QStyleOptionTabV3 - QStyleOptionTabWidgetFrame QStyleOptionTabWidgetFrameV2 - QStyleOptionTitleBar QStyleOptionToolBar QStyleOptionToolBox - QStyleOptionToolBoxV2 QStyleOptionToolButton QStyleOptionViewItem - QStyleOptionViewItemV2 QStyleOptionViewItemV3 QStyleOptionViewItemV4 - QStylePainter QStyledItemDelegate QSwipeGesture QSyntaxHighlighter - QSystemTrayIcon QTabBar QTabWidget QTableView QTableWidget - QTableWidgetItem QTableWidgetSelectionRange QTabletEvent - QTapAndHoldGesture QTapGesture QTextBlock QTextBlockFormat - QTextBlockGroup QTextBlockUserData QTextBrowser QTextCharFormat - QTextCursor QTextDocument QTextDocumentFragment QTextDocumentWriter - QTextEdit QTextFormat QTextFragment QTextFrame QTextFrameFormat - QTextImageFormat QTextInlineObject QTextItem QTextLayout QTextLength - QTextLine QTextList QTextListFormat QTextObject QTextObjectInterface - QTextOption QTextTable QTextTableCell QTextTableCellFormat - QTextTableFormat QTimeEdit QToolBar QToolBox QToolButton QToolTip - QTouchEvent QTransform QTreeView QTreeWidget QTreeWidgetItem - QTreeWidgetItemIterator QUndoCommand QUndoGroup QUndoStack QUndoView - QVBoxLayout QValidator QVector2D QVector3D QVector4D QWhatsThis - QWhatsThisClickedEvent QWheelEvent QWidget QWidgetAction QWidgetItem - QWindowStateChangeEvent QWizard QWizardPage QWorkspace - QX11EmbedContainer QX11EmbedWidget QX11Info - """ - for _name in _QtGui_public_classes.split(): - locals()[_name] = type(_name, (), {}) - del _name - - -class MySip(MagicMock): - def getapi(*args): - return 1 - - -class MyWX(MagicMock): - class Panel(object): - pass - - class ToolBar(object): - pass - - class Frame(object): - pass - - VERSION_STRING = '2.9' - - -sys.modules['cairo'] = MyCairo() -sys.modules['cairo'].__name__ = 'cairocffi' -sys.modules['PyQt4'] = MyPyQt4() -sys.modules['sip'] = MySip() -sys.modules['wx'] = MyWX() -sys.modules['wxversion'] = MagicMock() - # numpydoc config numpydoc_show_class_members = False - -# Skip deprecated members - -def skip_deprecated(app, what, name, obj, skip, options): - if skip: - return skip - skipped = {"matplotlib.colors": ["ColorConverter", "hex2color", "rgb2hex"]} - skip_list = skipped.get(getattr(obj, "__module__", None)) - if skip_list is not None: - return getattr(obj, "__name__", None) in skip_list - -def setup(app): - app.connect('autodoc-skip-member', skip_deprecated) diff --git a/doc/devel/documenting_mpl.rst b/doc/devel/documenting_mpl.rst index 0938ac72371d..2760ed7816c4 100644 --- a/doc/devel/documenting_mpl.rst +++ b/doc/devel/documenting_mpl.rst @@ -276,27 +276,20 @@ tutorial in :doc:`/tutorials/introductory/customizing`:: .. literalinclude:: ../../_static/matplotlibrc -This is rendered as :doc:`/tutorials/introductory/customizing` (see the -bottom of the page. Note that this is in a tutorial; See -:ref:`writing-examples-and-tutorials` below) +This is rendered at the bottom of :doc:`/tutorials/introductory/customizing`. +Note that this is in a tutorial; see :ref:`writing-examples-and-tutorials` +below. -In the top level :file:`doc` directory there are symlinks pointing to the -Matplotlib :file:`examples`: - -.. code-block:: sh - - home:~/mpl/doc> ls -l mpl_* - mpl_examples -> ../examples - -Plots are included from the examples dir using the symlink: +The examples directory is also copied to :file:`doc/gallery` by sphinx-gallery, +so plots from the examples directory can be included using .. code-block:: rst - .. plot:: mpl_examples/pylab_examples/simple_plot.py + .. plot:: gallery/pylab_examples/simple_plot.py -Note that the python script that generates the plot is referred to, rather -than any plot that is created. `Sphinx Gallery`_ will provide the incorrect -reference when the documentation is built. +Note that the python script that generates the plot is referred to, rather than +any plot that is created. Sphinx-gallery will provide the correct reference +when the documentation is built. .. _writing-docstrings: diff --git a/doc/mpl_examples b/doc/mpl_examples deleted file mode 120000 index 785887f7fbe0..000000000000 --- a/doc/mpl_examples +++ /dev/null @@ -1 +0,0 @@ -../examples/ \ No newline at end of file diff --git a/doc/sphinxext/math_symbol_table.py b/doc/sphinxext/math_symbol_table.py index cf8b82e290c5..26645b3e5665 100644 --- a/doc/sphinxext/math_symbol_table.py +++ b/doc/sphinxext/math_symbol_table.py @@ -1,17 +1,17 @@ from __future__ import print_function symbols = [ ["Lower-case Greek", - 5, + 6, r"""\alpha \beta \gamma \chi \delta \epsilon \eta \iota \kappa \lambda \mu \nu \omega \phi \pi \psi \rho \sigma \tau \theta \upsilon \xi \zeta \digamma \varepsilon \varkappa \varphi \varpi \varrho \varsigma \vartheta"""], ["Upper-case Greek", - 6, + 8, r"""\Delta \Gamma \Lambda \Omega \Phi \Pi \Psi \Sigma \Theta \Upsilon \Xi \mho \nabla"""], ["Hebrew", - 4, + 6, r"""\aleph \beth \daleth \gimel"""], ["Delimiters", 6, @@ -19,16 +19,16 @@ \uparrow \lrcorner \| \langle \lceil [ \Downarrow \ulcorner \Vert \rangle \rceil ] \downarrow \urcorner"""], ["Big symbols", - 5, + 6, r"""\bigcap \bigcup \bigodot \bigoplus \bigotimes \biguplus \bigvee \bigwedge \coprod \oint \prod \sum \int"""], ["Standard function names", - 4, + 6, r"""\arccos \csc \ker \min \arcsin \deg \lg \Pr \arctan \det \lim \gcd \ln \sup \cot \hom \log \tan \coth \inf \max \tanh \sec \arg \dim \liminf \sin \cos \exp \limsup \sinh \cosh"""], ["Binary operation and relation symbols", - 3, + 4, r"""\ast \pm \slash \cap \star \mp \cup \cdot \uplus \triangleleft \circ \odot \sqcap \triangleright \bullet \ominus \sqcup \bigcirc \oplus \wedge \diamond \oslash \vee @@ -60,7 +60,7 @@ \Doteq \nsubset \eqcolon \ne """], ["Arrow symbols", - 2, + 4, r"""\leftarrow \longleftarrow \uparrow \Leftarrow \Longleftarrow \Uparrow \rightarrow \longrightarrow \downarrow \Rightarrow \Longrightarrow \Downarrow \leftrightarrow \updownarrow @@ -83,7 +83,7 @@ \leftsquigarrow """], ["Miscellaneous symbols", - 3, + 4, r"""\neg \infty \forall \wp \exists \bigstar \angle \partial \nexists \measuredangle \eth \emptyset \sphericalangle \clubsuit \varnothing \complement \diamondsuit \imath \Finv \triangledown @@ -111,16 +111,14 @@ def get_n(n, l): lines.append('') max_width = max(map(len, syms)) * 2 + 16 header = " " + (('=' * max_width) + ' ') * columns - format = '%%%ds' % max_width - for chunk in get_n(20, get_n(columns, syms)): - lines.append(header) - for part in chunk: - line = [] - for sym in part: - line.append(format % (":math:`%s` ``%s``" % (sym, sym))) - lines.append(" " + " ".join(line)) - lines.append(header) - lines.append('') + lines.append(header) + for part in get_n(columns, syms): + line = " " + " ".join( + ":math:`{0}` ``{0}``".format(sym).rjust(max_width) + for sym in part) + lines.append(line) + lines.append(header) + lines.append('') state_machine.insert_input(lines, "Symbol table") return [] diff --git a/doc/sphinxext/mock_gui_toolkits.py b/doc/sphinxext/mock_gui_toolkits.py new file mode 100644 index 000000000000..dea4a91b80cb --- /dev/null +++ b/doc/sphinxext/mock_gui_toolkits.py @@ -0,0 +1,136 @@ +import sys + +try: + from unittest.mock import MagicMock +except ImportError: + from mock import MagicMock + + +class MyCairoCffi(MagicMock): + version_info = (1, 4, 0) + + +class MyPyQt4(MagicMock): + class QtGui(object): + # PyQt4.QtGui public classes. + # Generated with + # textwrap.fill([name for name in dir(PyQt4.QtGui) + # if isinstance(getattr(PyQt4.QtGui, name), type)]) + _QtGui_public_classes = """\ + Display QAbstractButton QAbstractGraphicsShapeItem + QAbstractItemDelegate QAbstractItemView QAbstractPrintDialog + QAbstractProxyModel QAbstractScrollArea QAbstractSlider + QAbstractSpinBox QAbstractTextDocumentLayout QAction QActionEvent + QActionGroup QApplication QBitmap QBoxLayout QBrush QButtonGroup + QCalendarWidget QCheckBox QClipboard QCloseEvent QColor QColorDialog + QColumnView QComboBox QCommandLinkButton QCommonStyle QCompleter + QConicalGradient QContextMenuEvent QCursor QDataWidgetMapper QDateEdit + QDateTimeEdit QDesktopServices QDesktopWidget QDial QDialog + QDialogButtonBox QDirModel QDockWidget QDoubleSpinBox QDoubleValidator + QDrag QDragEnterEvent QDragLeaveEvent QDragMoveEvent QDropEvent + QErrorMessage QFileDialog QFileIconProvider QFileOpenEvent + QFileSystemModel QFocusEvent QFocusFrame QFont QFontComboBox + QFontDatabase QFontDialog QFontInfo QFontMetrics QFontMetricsF + QFormLayout QFrame QGesture QGestureEvent QGestureRecognizer QGlyphRun + QGradient QGraphicsAnchor QGraphicsAnchorLayout QGraphicsBlurEffect + QGraphicsColorizeEffect QGraphicsDropShadowEffect QGraphicsEffect + QGraphicsEllipseItem QGraphicsGridLayout QGraphicsItem + QGraphicsItemAnimation QGraphicsItemGroup QGraphicsLayout + QGraphicsLayoutItem QGraphicsLineItem QGraphicsLinearLayout + QGraphicsObject QGraphicsOpacityEffect QGraphicsPathItem + QGraphicsPixmapItem QGraphicsPolygonItem QGraphicsProxyWidget + QGraphicsRectItem QGraphicsRotation QGraphicsScale QGraphicsScene + QGraphicsSceneContextMenuEvent QGraphicsSceneDragDropEvent + QGraphicsSceneEvent QGraphicsSceneHelpEvent QGraphicsSceneHoverEvent + QGraphicsSceneMouseEvent QGraphicsSceneMoveEvent + QGraphicsSceneResizeEvent QGraphicsSceneWheelEvent + QGraphicsSimpleTextItem QGraphicsTextItem QGraphicsTransform + QGraphicsView QGraphicsWidget QGridLayout QGroupBox QHBoxLayout + QHeaderView QHelpEvent QHideEvent QHoverEvent QIcon QIconDragEvent + QIconEngine QIconEngineV2 QIdentityProxyModel QImage QImageIOHandler + QImageReader QImageWriter QInputContext QInputContextFactory + QInputDialog QInputEvent QInputMethodEvent QIntValidator QItemDelegate + QItemEditorCreatorBase QItemEditorFactory QItemSelection + QItemSelectionModel QItemSelectionRange QKeyEvent QKeyEventTransition + QKeySequence QLCDNumber QLabel QLayout QLayoutItem QLineEdit + QLinearGradient QListView QListWidget QListWidgetItem QMainWindow + QMatrix QMatrix2x2 QMatrix2x3 QMatrix2x4 QMatrix3x2 QMatrix3x3 + QMatrix3x4 QMatrix4x2 QMatrix4x3 QMatrix4x4 QMdiArea QMdiSubWindow + QMenu QMenuBar QMessageBox QMimeSource QMouseEvent + QMouseEventTransition QMoveEvent QMovie QPageSetupDialog QPaintDevice + QPaintEngine QPaintEngineState QPaintEvent QPainter QPainterPath + QPainterPathStroker QPalette QPanGesture QPen QPicture QPictureIO + QPinchGesture QPixmap QPixmapCache QPlainTextDocumentLayout + QPlainTextEdit QPolygon QPolygonF QPrintDialog QPrintEngine + QPrintPreviewDialog QPrintPreviewWidget QPrinter QPrinterInfo + QProgressBar QProgressDialog QProxyModel QPushButton QPyTextObject + QQuaternion QRadialGradient QRadioButton QRawFont QRegExpValidator + QRegion QResizeEvent QRubberBand QScrollArea QScrollBar + QSessionManager QShortcut QShortcutEvent QShowEvent QSizeGrip + QSizePolicy QSlider QSortFilterProxyModel QSound QSpacerItem QSpinBox + QSplashScreen QSplitter QSplitterHandle QStackedLayout QStackedWidget + QStandardItem QStandardItemModel QStaticText QStatusBar + QStatusTipEvent QStringListModel QStyle QStyleFactory QStyleHintReturn + QStyleHintReturnMask QStyleHintReturnVariant QStyleOption + QStyleOptionButton QStyleOptionComboBox QStyleOptionComplex + QStyleOptionDockWidget QStyleOptionDockWidgetV2 QStyleOptionFocusRect + QStyleOptionFrame QStyleOptionFrameV2 QStyleOptionFrameV3 + QStyleOptionGraphicsItem QStyleOptionGroupBox QStyleOptionHeader + QStyleOptionMenuItem QStyleOptionProgressBar QStyleOptionProgressBarV2 + QStyleOptionRubberBand QStyleOptionSizeGrip QStyleOptionSlider + QStyleOptionSpinBox QStyleOptionTab QStyleOptionTabBarBase + QStyleOptionTabBarBaseV2 QStyleOptionTabV2 QStyleOptionTabV3 + QStyleOptionTabWidgetFrame QStyleOptionTabWidgetFrameV2 + QStyleOptionTitleBar QStyleOptionToolBar QStyleOptionToolBox + QStyleOptionToolBoxV2 QStyleOptionToolButton QStyleOptionViewItem + QStyleOptionViewItemV2 QStyleOptionViewItemV3 QStyleOptionViewItemV4 + QStylePainter QStyledItemDelegate QSwipeGesture QSyntaxHighlighter + QSystemTrayIcon QTabBar QTabWidget QTableView QTableWidget + QTableWidgetItem QTableWidgetSelectionRange QTabletEvent + QTapAndHoldGesture QTapGesture QTextBlock QTextBlockFormat + QTextBlockGroup QTextBlockUserData QTextBrowser QTextCharFormat + QTextCursor QTextDocument QTextDocumentFragment QTextDocumentWriter + QTextEdit QTextFormat QTextFragment QTextFrame QTextFrameFormat + QTextImageFormat QTextInlineObject QTextItem QTextLayout QTextLength + QTextLine QTextList QTextListFormat QTextObject QTextObjectInterface + QTextOption QTextTable QTextTableCell QTextTableCellFormat + QTextTableFormat QTimeEdit QToolBar QToolBox QToolButton QToolTip + QTouchEvent QTransform QTreeView QTreeWidget QTreeWidgetItem + QTreeWidgetItemIterator QUndoCommand QUndoGroup QUndoStack QUndoView + QVBoxLayout QValidator QVector2D QVector3D QVector4D QWhatsThis + QWhatsThisClickedEvent QWheelEvent QWidget QWidgetAction QWidgetItem + QWindowStateChangeEvent QWizard QWizardPage QWorkspace + QX11EmbedContainer QX11EmbedWidget QX11Info + """ + for _name in _QtGui_public_classes.split(): + locals()[_name] = type(_name, (), {}) + del _name + + +class MySip(MagicMock): + def getapi(*args): + return 1 + + +class MyWX(MagicMock): + class Panel(object): + pass + + class ToolBar(object): + pass + + class Frame(object): + pass + + VERSION_STRING = '2.9' + + +def setup(app): + sys.modules['cairocffi'] = MyCairoCffi() + sys.modules['PyQt4'] = MyPyQt4() + sys.modules['sip'] = MySip() + sys.modules['wx'] = MyWX() + sys.modules['wxversion'] = MagicMock() + + metadata = {'parallel_read_safe': True, 'parallel_write_safe': True} + return metadata diff --git a/doc/sphinxext/skip_deprecated.py b/doc/sphinxext/skip_deprecated.py new file mode 100644 index 000000000000..14c7b9f23da1 --- /dev/null +++ b/doc/sphinxext/skip_deprecated.py @@ -0,0 +1,15 @@ +# Skip deprecated members + +def skip_deprecated(app, what, name, obj, skip, options): + if skip: + return skip + skipped = {"matplotlib.colors": ["ColorConverter", "hex2color", "rgb2hex"]} + skip_list = skipped.get(getattr(obj, "__module__", None)) + if skip_list is not None: + return getattr(obj, "__name__", None) in skip_list + +def setup(app): + app.connect('autodoc-skip-member', skip_deprecated) + + metadata = {'parallel_read_safe': True, 'parallel_write_safe': True} + return metadata diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 1a0a1145eeb6..a09a76bd7fb5 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -1150,7 +1150,7 @@ def eventplot(self, positions, orientation='horizontal', lineoffsets=1, Examples -------- - .. plot:: mpl_examples/lines_bars_and_markers/eventplot_demo.py + .. plot:: gallery/lines_bars_and_markers/eventplot_demo.py """ self._process_unit_info(xdata=positions, ydata=[lineoffsets, linelengths], diff --git a/lib/matplotlib/collections.py b/lib/matplotlib/collections.py index f56e6cc2e066..9e124cdf479d 100644 --- a/lib/matplotlib/collections.py +++ b/lib/matplotlib/collections.py @@ -1389,7 +1389,7 @@ def __init__(self, Examples -------- - .. plot:: mpl_examples/lines_bars_and_markers/eventcollection_demo.py + .. plot:: gallery/lines_bars_and_markers/eventcollection_demo.py """ segment = (lineoffset + linelength / 2., diff --git a/pytest.ini b/pytest.ini index 2efba30479c7..dd76e1539d48 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,5 +1,5 @@ [pytest] -norecursedirs = .git build ci dist doc extern lib/mpl_examples release unit venv +testpaths = lib python_files = test_*.py markers =