diff --git a/doc/devel/dependencies.rst b/doc/devel/dependencies.rst index 4f360bb2abc3..91c88f6604cd 100644 --- a/doc/devel/dependencies.rst +++ b/doc/devel/dependencies.rst @@ -7,6 +7,7 @@ Dependencies Runtime dependencies ==================== + Mandatory dependencies ---------------------- @@ -15,14 +16,16 @@ mandatory dependencies are automatically installed. This list is mainly for reference. * `Python `_ (>= 3.8) -* `NumPy `_ (>= 1.19) -* `setuptools `_ +* `contourpy `_ (>= 1.0.1) * `cycler `_ (>= 0.10.0) * `dateutil `_ (>= 2.7) +* `fontTools `_ (>=4.22.0) * `kiwisolver `_ (>= 1.0.1) +* `NumPy `_ (>= 1.19) +* `packaging `_ (>= 20.0) * `Pillow `_ (>= 6.2) * `pyparsing `_ (>=2.2.1) -* `fontTools `_ (>=4.22.0) +* `setuptools `_ .. _optional_dependencies: @@ -40,12 +43,19 @@ Matplotlib figures can be rendered to various user interfaces. See :ref:`what-is-a-backend` for more details on the optional Matplotlib backends and the capabilities they provide. -* Tk_ (>= 8.4, != 8.6.0 or 8.6.1) [#]_: for the Tk-based backends. +* Tk_ (>= 8.4, != 8.6.0 or 8.6.1): for the Tk-based backends. Tk is part of + most standard Python installations, but it's not part of Python itself and + thus may not be present in rare cases. * PyQt6_ (>= 6.1), PySide6_, PyQt5_, or PySide2_: for the Qt-based backends. -* PyGObject_: for the GTK-based backends [#]_. +* PyGObject_: for the GTK-based backends. If using pip (but not conda or system + package manager) PyGObject must be built from source; see `pygobject + documentation + `_. * pycairo_ (>= 1.11.0) or cairocffi_ (>= 0.8): for the GTK and/or cairo-based backends. -* wxPython_ (>= 4) [#]_: for the wx-based backends. +* wxPython_ (>= 4): for the wx-based backends. If using pip (but not conda or + system package manager) on Linux wxPython wheels must be manually downloaded + from https://wxpython.org/pages/downloads/. * Tornado_ (>=5): for the WebAgg backend. * ipykernel_: for the nbagg backend. * macOS (>=10.12): for the macosx backend. @@ -62,13 +72,6 @@ and the capabilities they provide. .. _Tornado: https://pypi.org/project/tornado/ .. _ipykernel: https://pypi.org/project/ipykernel/ -.. [#] Tk is part of most standard Python installations, but it's not part of - Python itself and thus may not be present in rare cases. -.. [#] If using pip (and not conda), PyGObject must be built from source; see - https://pygobject.readthedocs.io/en/latest/devguide/dev_environ.html. -.. [#] If using pip (and not conda) on Linux, wxPython wheels must be manually - downloaded from https://wxpython.org/pages/downloads/. - Animations ~~~~~~~~~~ @@ -80,7 +83,8 @@ Font handling and rendering ~~~~~~~~~~~~~~~~~~~~~~~~~~~ * `LaTeX `_ (with `cm-super - `__ ) and `GhostScript (>=9.0) + `__ and `underscore + `__ ) and `GhostScript (>=9.0) `_ : for rendering text with LaTeX. * `fontconfig `_ (>= 2.7): for detection of system fonts on Linux. @@ -168,14 +172,55 @@ remember to clear your artifacts before re-building:: git clean -xfd +Minimum pip / manylinux support (linux) +--------------------------------------- + +Matplotlib publishes `manylinux wheels `_ +which have a minimum version of pip which will recognize the wheels + +- Python 3.8: ``manylinx2010`` / pip >=19.0 +- Python 3.9+: ``manylinx2014`` / pip >=19.3 + +In all cases the required version of pip is embedded in the CPython source. + + + .. _development-dependencies: -Additional dependencies for development -======================================= +Dependencies for building Matplotlib +==================================== + +.. _setup-dependencies: + +Setup dependencies +------------------ + +- `certifi `_ (>= 2020.06.20). Used while + downloading the freetype and QHull source during build. This is not a + runtime dependency. +- `setuptools_scm `_ (>= 7). Used to + update the reported ``mpl.__version__`` based on the current git commit. + Also a runtime dependency for editable installs. +- `NumPy `_ (>= 1.19). Also a runtime dependency. + + +.. _compile-dependencies: + +C++ compiler +------------ + +Matplotlib requires a C++ compiler that supports C++11. + +- `gcc 4.8.1 `_ or higher +- `clang 3.3 `_ or higher +- `Visual Studio 2015 + `_ + (aka VS 14.0) or higher + .. _test-dependencies: -Additional dependencies for testing +Dependencies for testing Matplotlib =================================== This section lists the additional software required for :ref:`running the tests `. @@ -183,38 +228,61 @@ This section lists the additional software required for Required: - pytest_ (>=3.6) -- Ghostscript_ (>= 9.0, to render PDF files) -- Inkscape_ (to render SVG files) - - .. note:: - - When installing Inkscape on Windows, make sure that you select Add - Inkscape to system PATH, either for all users or current user, or the - tests will not find it. Optional: +In addition to all of the optional dependencies on the main library, for +testing the following will be used if they are installed. + +- Ghostscript_ (>= 9.0, to render PDF files) +- Inkscape_ (to render SVG files) +- nbformat_ and nbconvert_ used to test the notebook backend +- pandas_ used to test compatibility with Pandas +- pikepdf_ used in some tests for the pgf and pdf backends +- psutil_ used in testing the interactive backends - pytest-cov_ (>=2.3.1) to collect coverage information - pytest-flake8_ to test coding standards using flake8_ - pytest-timeout_ to limit runtime in case of stuck tests - pytest-xdist_ to run tests in parallel - pytest-xvfb_ to run tests without windows popping up (Linux) +- pytz_ used to test pytz int +- sphinx_ used to test our sphinx extensions +- WenQuanYi Zen Hei and `Noto Sans CJK `_ + fonts for testing font fallback and non-western fonts +- xarray_ used to test compatibility with xarray + +If any of these dependencies are not discovered the tests that rely on them +will be skipped by pytest. + +.. note:: + + When installing Inkscape on Windows, make sure that you select “Add + Inkscape to system PATH”, either for all users or current user, or the + tests will not find it. -.. _pytest: http://doc.pytest.org/en/latest/ .. _Ghostscript: https://www.ghostscript.com/ .. _Inkscape: https://inkscape.org +.. _flake8: https://pypi.org/project/flake8/ +.. _nbconvert: https://pypi.org/project/nbconvert/ +.. _nbformat: https://pypi.org/project/nbformat/ +.. _pandas: https://pypi.org/project/pandas/ +.. _pikepdf: https://pypi.org/project/pikepdf/ +.. _psutil: https://pypi.org/project/psuitl/ +.. _pytz: https://fonts.google.com/noto/use#faq .. _pytest-cov: https://pytest-cov.readthedocs.io/en/latest/ .. _pytest-flake8: https://pypi.org/project/pytest-flake8/ .. _pytest-timeout: https://pypi.org/project/pytest-timeout/ .. _pytest-xdist: https://pypi.org/project/pytest-xdist/ .. _pytest-xvfb: https://pypi.org/project/pytest-xvfb/ -.. _flake8: https://pypi.org/project/flake8/ +.. _pytest: http://doc.pytest.org/en/latest/ +.. _sphinx: https://pypi.org/project/Sphinx/ +.. _xarray: https://pypi.org/project/xarray/ .. _doc-dependencies: -Additional dependencies for building documentation -================================================== +Dependencies for building Matplotlib's documentation +==================================================== Python packages ---------------