diff --git a/.github/workflows/cibuildwheel.yml b/.github/workflows/cibuildwheel.yml
index 48e9d4358f9c..e258ea38c482 100644
--- a/.github/workflows/cibuildwheel.yml
+++ b/.github/workflows/cibuildwheel.yml
@@ -100,7 +100,15 @@ jobs:
CIBW_AFTER_BUILD: >-
twine check {wheel} &&
python {package}/ci/check_wheel_licenses.py {wheel}
- CIBW_CONFIG_SETTINGS: setup-args="--vsenv"
+ # On Windows, we explicitly request MSVC compilers (as GitHub Action runners have
+ # MinGW on PATH that would be picked otherwise), switch to a static build for
+ # runtimes, but use dynamic linking for `VCRUNTIME140.dll`, `VCRUNTIME140_1.dll`,
+ # and the UCRT. This avoids requiring specific versions of `MSVCP140.dll`, while
+ # keeping shared state with the rest of the Python process/extensions.
+ CIBW_CONFIG_SETTINGS_WINDOWS: >-
+ setup-args="--vsenv"
+ setup-args="-Db_vscrt=mt"
+ setup-args="-Dcpp_link_args=['ucrt.lib','vcruntime.lib','/nodefaultlib:libucrt.lib','/nodefaultlib:libvcruntime.lib']"
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
CIBW_SKIP: "*-musllinux_aarch64"
CIBW_TEST_COMMAND: >-
@@ -144,7 +152,6 @@ jobs:
CIBW_SKIP: "cp313t-win_amd64 *-musllinux_aarch64"
CIBW_BUILD_FRONTEND:
"pip; args: --pre --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple"
- CIBW_PRERELEASE_PYTHONS: true
CIBW_FREE_THREADED_SUPPORT: true
# No free-threading wheels available for aarch64 on Pillow.
CIBW_TEST_SKIP: "cp313t-manylinux_aarch64"
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index 8c27b09f1ad5..0c71577c0875 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -158,7 +158,13 @@ jobs:
;;
macOS)
brew update
- brew install ccache ghostscript gobject-introspection gtk4 ninja
+ export HOMEBREW_NO_INSTALL_UPGRADE=1 HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
+ brew install ccache ghostscript ninja
+ # The macOS 12 images have an older Python, and this causes homebrew to generate conflicts.
+ # We'll just skip GTK for now, to not pull in Python updates.
+ if [[ "${{ matrix.os }}" = macos-14 ]]; then
+ brew install gobject-introspection gtk4
+ fi
brew install --cask font-noto-sans-cjk inkscape
;;
esac
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 35c95c3b1f94..7919e9512f48 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -111,6 +111,7 @@ stages:
;;
Darwin)
brew update
+ export HOMEBREW_NO_INSTALL_UPGRADE=1 HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK=1
brew install --cask xquartz
brew install ccache ffmpeg imagemagick mplayer ninja pkg-config
brew install --cask font-noto-sans-cjk-sc
diff --git a/doc/_static/switcher.json b/doc/_static/switcher.json
index 1ceeb2c259cc..5a48ec138f4d 100644
--- a/doc/_static/switcher.json
+++ b/doc/_static/switcher.json
@@ -1,7 +1,7 @@
[
{
"name": "3.9 (stable)",
- "version": "3.9.1",
+ "version": "3.9.2",
"url": "https://matplotlib.org/stable/",
"preferred": true
},
diff --git a/doc/_static/zenodo_cache/13308876.svg b/doc/_static/zenodo_cache/13308876.svg
new file mode 100644
index 000000000000..749bc3c19026
--- /dev/null
+++ b/doc/_static/zenodo_cache/13308876.svg
@@ -0,0 +1,35 @@
+
\ No newline at end of file
diff --git a/doc/api/prev_api_changes/api_changes_3.9.2.rst b/doc/api/prev_api_changes/api_changes_3.9.2.rst
new file mode 100644
index 000000000000..4c2a69634502
--- /dev/null
+++ b/doc/api/prev_api_changes/api_changes_3.9.2.rst
@@ -0,0 +1,16 @@
+API Changes for 3.9.2
+=====================
+
+Development
+-----------
+
+Windows wheel runtime bundling made static
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+In 3.7.0, the MSVC runtime DLL was bundled in wheels to enable importing Matplotlib on
+systems that do not have it installed. However, this could cause inconsistencies with
+other wheels that did the same, and trigger random crashes depending on import order. See
+`this issue `_ for further
+details.
+
+Since 3.9.2, wheels now bundle the MSVC runtime DLL statically to avoid such issues.
diff --git a/doc/project/citing.rst b/doc/project/citing.rst
index e0b99995ad11..38c989fca195 100644
--- a/doc/project/citing.rst
+++ b/doc/project/citing.rst
@@ -32,6 +32,9 @@ By version
.. START OF AUTOGENERATED
+v3.9.2
+ .. image:: ../_static/zenodo_cache/13308876.svg
+ :target: https://doi.org/10.5281/zenodo.13308876
v3.9.1
.. image:: ../_static/zenodo_cache/12652732.svg
:target: https://doi.org/10.5281/zenodo.12652732
diff --git a/doc/users/github_stats.rst b/doc/users/github_stats.rst
index 0c8f29687afb..d357a6759d30 100644
--- a/doc/users/github_stats.rst
+++ b/doc/users/github_stats.rst
@@ -1,195 +1,99 @@
.. _github-stats:
-GitHub statistics for 3.9.1 (Jul 04, 2024)
+GitHub statistics for 3.9.2 (Aug 12, 2024)
==========================================
-GitHub statistics for 2024/05/15 (tag: v3.9.0) - 2024/07/04
+GitHub statistics for 2024/07/04 (tag: v3.9.1) - 2024/08/12
These lists are automatically generated, and may be incomplete or contain duplicates.
-We closed 30 issues and merged 111 pull requests.
-The full list can be seen `on GitHub `__
+We closed 9 issues and merged 45 pull requests.
+The full list can be seen `on GitHub `__
-The following 29 authors contributed 184 commits.
+The following 20 authors contributed 67 commits.
-* Antony Lee
-* Brigitta Sipőcz
-* Christian Mattsson
-* dale
+* Adam J. Stewart
+* Anthony Lee
+* Caitlin Hathaway
+* ClarkeAC
* dependabot[bot]
* Elliott Sales de Andrade
-* Eytan Adler
+* Filippo Balzaretti
* Greg Lucas
-* haaris
* hannah
* Ian Thomas
-* Illviljan
-* K900
+* Jody Klymak
* Kyle Sunden
-* Lumberbot (aka Jack)
-* malhar2460
-* Matthew Feickert
-* Melissa Weber Mendonça
-* MischaMegens2
* Oscar Gustafsson
+* Randolf Scholz
+* Refael Ackermann
* Ruth Comer
* Scott Shambaugh
-* simond07
-* SjoerdB93
-* Takumasa N
-* Takumasa N.
-* Takumasa Nakamura
+* Sean Smith
* Thomas A Caswell
* Tim Hoffmann
GitHub issues and pull requests:
-Pull Requests (111):
+Pull Requests (45):
-* :ghpull:`28507`: Backport PR #28430 on branch v3.9.x (Fix pickling of AxesWidgets.)
-* :ghpull:`28506`: Backport PR #28451 on branch v3.9.x (Fix GTK cairo backends)
-* :ghpull:`28430`: Fix pickling of AxesWidgets.
-* :ghpull:`25861`: Fix Hidpi scaling for GTK4Cairo
-* :ghpull:`28451`: Fix GTK cairo backends
-* :ghpull:`28499`: Backport PR #28498 on branch v3.9.x (Don't fail if we can't query system fonts on macOS)
-* :ghpull:`28498`: Don't fail if we can't query system fonts on macOS
-* :ghpull:`28491`: Backport PR #28487 on branch v3.9.x (Fix autoscaling with axhspan)
-* :ghpull:`28490`: Backport PR #28486 on branch v3.9.x (Fix CompositeGenericTransform.contains_branch_seperately)
-* :ghpull:`28487`: Fix autoscaling with axhspan
-* :ghpull:`28486`: Fix CompositeGenericTransform.contains_branch_seperately
-* :ghpull:`28483`: Backport PR #28393 on branch v3.9.x (Make sticky edges only apply if the sticky edge is the most extreme limit point)
-* :ghpull:`28482`: Backport PR #28473 on branch v3.9.x (Do not lowercase module:// backends)
-* :ghpull:`28393`: Make sticky edges only apply if the sticky edge is the most extreme limit point
-* :ghpull:`28473`: Do not lowercase module:// backends
-* :ghpull:`28480`: Backport PR #28474 on branch v3.9.x (Fix typing and docs for containers)
-* :ghpull:`28479`: Backport PR #28397 (FIX: stale root Figure when adding/updating subfigures)
-* :ghpull:`28474`: Fix typing and docs for containers
-* :ghpull:`28472`: Backport PR #28289 on branch v3.9.x (Promote mpltype Sphinx role to a public extension)
-* :ghpull:`28471`: Backport PR #28342 on branch v3.9.x (DOC: Document the parameter *position* of apply_aspect() as internal)
-* :ghpull:`28470`: Backport PR #28398 on branch v3.9.x (Add GIL Release to flush_events in macosx backend)
-* :ghpull:`28469`: Backport PR #28355 on branch v3.9.x (MNT: Re-add matplotlib.cm.get_cmap)
-* :ghpull:`28397`: FIX: stale root Figure when adding/updating subfigures
-* :ghpull:`28289`: Promote mpltype Sphinx role to a public extension
-* :ghpull:`28342`: DOC: Document the parameter *position* of apply_aspect() as internal
-* :ghpull:`28398`: Add GIL Release to flush_events in macosx backend
-* :ghpull:`28355`: MNT: Re-add matplotlib.cm.get_cmap
-* :ghpull:`28468`: Backport PR #28465 on branch v3.9.x (Fix pickling of SubFigures)
-* :ghpull:`28465`: Fix pickling of SubFigures
-* :ghpull:`28462`: Backport PR #28440 on branch v3.9.x (DOC: Add note about simplification of to_polygons)
-* :ghpull:`28460`: Backport PR #28459 on branch v3.9.x (DOC: Document kwargs scope for tick setter functions)
-* :ghpull:`28461`: Backport PR #28458 on branch v3.9.x (Correct numpy dtype comparisons in image_resample)
-* :ghpull:`28440`: DOC: Add note about simplification of to_polygons
-* :ghpull:`28458`: Correct numpy dtype comparisons in image_resample
-* :ghpull:`28459`: DOC: Document kwargs scope for tick setter functions
-* :ghpull:`28450`: Backport of 28371 and 28411
-* :ghpull:`28446`: Backport PR #28403 on branch v3.9.x (FIX: Autoscale support in add_collection3d for Line3DCollection and Poly3DCollection
-* :ghpull:`28445`: Backport PR #28403 on branch v3.9.x (FIX: Autoscale support in add_collection3d for Line3DCollection and Poly3DCollection)
-* :ghpull:`28438`: Backport PR #28436 on branch v3.9.x (Fix ``is_color_like`` for 2-tuple of strings and fix ``to_rgba`` for ``(nth_color, alpha)``)
-* :ghpull:`28403`: FIX: Autoscale support in add_collection3d for Line3DCollection and Poly3DCollection
-* :ghpull:`28443`: Backport PR #28441 on branch v3.9.x (MNT: Update basic units example to work with numpy 2.0)
-* :ghpull:`28441`: MNT: Update basic units example to work with numpy 2.0
-* :ghpull:`28436`: Fix ``is_color_like`` for 2-tuple of strings and fix ``to_rgba`` for ``(nth_color, alpha)``
-* :ghpull:`28426`: Backport PR #28425 on branch v3.9.x (Fix Circle yaml line length)
-* :ghpull:`28427`: Fix circleci yaml
-* :ghpull:`28425`: Fix Circle yaml line length
-* :ghpull:`28422`: Backport PR #28401 on branch v3.9.x (FIX: Fix text wrapping)
-* :ghpull:`28424`: Backport PR #28423 on branch v3.9.x (Update return type for Axes.axhspan and Axes.axvspan)
-* :ghpull:`28423`: Update return type for Axes.axhspan and Axes.axvspan
-* :ghpull:`28401`: FIX: Fix text wrapping
-* :ghpull:`28419`: Backport PR #28414 on branch v3.9.x (Clean up obsolete widget code)
-* :ghpull:`28411`: Bump the actions group with 3 updates
-* :ghpull:`28414`: Clean up obsolete widget code
-* :ghpull:`28415`: Backport PR #28413 on branch v3.9.x (CI: update action that got moved org)
-* :ghpull:`28413`: CI: update action that got moved org
-* :ghpull:`28392`: Backport PR #28388 on branch v3.9.x (Allow duplicate (name, value) entry points for backends)
-* :ghpull:`28362`: Backport PR #28337 on branch v3.9.x (Bump the actions group across 1 directory with 3 updates)
-* :ghpull:`28388`: Allow duplicate (name, value) entry points for backends
-* :ghpull:`28389`: Backport PR #28380 on branch v3.9.x (Remove outdated docstring section in RendererBase.draw_text.)
-* :ghpull:`28380`: Remove outdated docstring section in RendererBase.draw_text.
-* :ghpull:`28385`: Backport PR #28377 on branch v3.9.x (DOC: Clarify scope of wrap.)
-* :ghpull:`28377`: DOC: Clarify scope of wrap.
-* :ghpull:`28368`: Backport PR #28359 on branch v3.9.x (Document that axes unsharing is impossible.)
-* :ghpull:`28359`: Document that axes unsharing is impossible.
-* :ghpull:`28337`: Bump the actions group across 1 directory with 3 updates
-* :ghpull:`28351`: Backport PR #28307 on branch v3.9.x (DOC: New color line by value example)
-* :ghpull:`28307`: DOC: New color line by value example
-* :ghpull:`28339`: Backport PR #28336 on branch v3.9.x (DOC: Add version warning banner for docs versions different from stable)
-* :ghpull:`28336`: DOC: Add version warning banner for docs versions different from stable
-* :ghpull:`28334`: Backport PR #28332 on branch v3.9.x (Call IPython.enable_gui when install repl displayhook)
-* :ghpull:`28332`: Call IPython.enable_gui when install repl displayhook
-* :ghpull:`28331`: Backport PR #28329 on branch v3.9.x (DOC: Add example for 3D intersecting planes)
-* :ghpull:`28329`: DOC: Add example for 3D intersecting planes
-* :ghpull:`28327`: Backport PR #28292 on branch v3.9.x (Resolve MaxNLocator IndexError when no large steps)
-* :ghpull:`28292`: Resolve MaxNLocator IndexError when no large steps
-* :ghpull:`28326`: Backport PR #28041 on branch v3.9.x ([BUG]: Shift box_aspect according to vertical_axis)
-* :ghpull:`28041`: [BUG]: Shift box_aspect according to vertical_axis
-* :ghpull:`28320`: Backport PR #27001 on branch v3.9.x ([TYP] Add overload of ``pyplot.subplots``)
-* :ghpull:`27001`: [TYP] Add overload of ``pyplot.subplots``
-* :ghpull:`28318`: Backport PR #28273 on branch v3.9.x (CI: Add GitHub artifact attestations to package distribution)
-* :ghpull:`28273`: CI: Add GitHub artifact attestations to package distribution
-* :ghpull:`28305`: Backport PR #28303 on branch v3.9.x (Removed drawedges repeated definition from function doc string)
-* :ghpull:`28303`: Removed drawedges repeated definition from function doc string
-* :ghpull:`28299`: Backport PR #28297 on branch v3.9.x (Solved #28296 Added missing comma)
-* :ghpull:`28297`: Solved #28296 Added missing comma
-* :ghpull:`28294`: Backport PR #28261 on branch v3.9.x (Correct roll angle units, issue #28256)
-* :ghpull:`28261`: Correct roll angle units, issue #28256
-* :ghpull:`28283`: Backport PR #28280 on branch v3.9.x (DOC: Add an example for 2D images in 3D plots)
-* :ghpull:`28280`: DOC: Add an example for 2D images in 3D plots
-* :ghpull:`28278`: Backport PR #28272 on branch v3.9.x (BLD: Move macos builders from 11 to 12)
-* :ghpull:`28277`: Backport PR #28274 on branch v3.9.x (ci: Remove deprecated codeql option)
-* :ghpull:`28272`: BLD: Move macos builders from 11 to 12
-* :ghpull:`28274`: ci: Remove deprecated codeql option
-* :ghpull:`28270`: Backport PR #28269 on branch v3.9.x (Handle GetForegroundWindow() returning NULL.)
-* :ghpull:`28269`: Handle GetForegroundWindow() returning NULL.
-* :ghpull:`28266`: Backport PR #28257 on branch v3.9.x (Clean up some Meson-related leftovers)
-* :ghpull:`28257`: Clean up some Meson-related leftovers
-* :ghpull:`28255`: Backport PR #28254 on branch v3.9.x ([DOC] plot type heading consistency)
-* :ghpull:`28254`: [DOC] plot type heading consistency
-* :ghpull:`28253`: Backport PR #28252 on branch v3.9.x (DOC: Flip the imshow plot types example to match the other examples)
-* :ghpull:`28252`: DOC: Flip the imshow plot types example to match the other examples
-* :ghpull:`28247`: Backport PR #28230 on branch v3.9.x (Add extra imports to improve typing)
-* :ghpull:`28230`: Add extra imports to improve typing
-* :ghpull:`28246`: Backport PR #28243 on branch v3.9.x (DOC: Add more 3D plot types)
-* :ghpull:`28243`: DOC: Add more 3D plot types
-* :ghpull:`28241`: Backport PR #28219 on branch v3.9.x (Bump the actions group with 2 updates)
-* :ghpull:`28219`: Bump the actions group with 2 updates
-* :ghpull:`28237`: Backport PR #28233 on branch v3.9.x (CI: Fix font install on macOS/Homebrew)
-* :ghpull:`28236`: Backport PR #28231 on branch v3.9.x (DOC: we do not need the blit call in on_draw)
-* :ghpull:`28233`: CI: Fix font install on macOS/Homebrew
-* :ghpull:`28231`: DOC: we do not need the blit call in on_draw
+* :ghpull:`28687`: BLD: Include MSVCP140 runtime statically
+* :ghpull:`28679`: Run delvewheel with path to required msvcp140.dll
+* :ghpull:`28695`: Backport PR #27797 on branch v3.9.x (DOC: Use video files for saving animations)
+* :ghpull:`28688`: Backport PR #28293 and #28668: Enable 3.13 wheels and bump cibuildwheel
+* :ghpull:`27797`: DOC: Use video files for saving animations
+* :ghpull:`28692`: Backport PR #28632 on branch v3.9.x (DOC: Tell sphinx-gallery to link mpl_toolkits from our build)
+* :ghpull:`28632`: DOC: Tell sphinx-gallery to link mpl_toolkits from our build
+* :ghpull:`28668`: Bump the actions group with 2 updates
+* :ghpull:`28686`: Backport PR #28682 on branch v3.9.x (Fix warnings from mingw compilers)
+* :ghpull:`28682`: Fix warnings from mingw compilers
+* :ghpull:`28676`: Backport PR #28577 on branch v3.9.x (Copy all internals from initial Tick to lazy ones)
+* :ghpull:`28577`: Copy all internals from initial Tick to lazy ones
+* :ghpull:`28674`: Backport PR #28650 on branch v3.9.x (remove out of date todos on animation.py)
+* :ghpull:`28650`: remove out of date todos on animation.py
+* :ghpull:`28656`: Backport PR #28649 on branch v3.9.x (FIX: improve formatting of image values in cases of singular norms)
+* :ghpull:`28665`: Backport PR #28546 on branch v3.9.x (DOC: Clarify/simplify example of multiple images with one colorbar)
+* :ghpull:`28649`: FIX: improve formatting of image values in cases of singular norms
+* :ghpull:`28635`: BLD: windows wheels
+* :ghpull:`28645`: Backport PR #28644 on branch v3.9.x (DOC: Fix matching for version switcher)
+* :ghpull:`28640`: Backport PR #28634 on branch v3.9.x (Closed open div tag in color.ColorMap._repr_html_)
+* :ghpull:`28634`: Closed open div tag in color.ColorMap._repr_html_
+* :ghpull:`28636`: Backport PR #28625 on branch v3.9.x (added typing_extensions.Self to _AxesBase.twinx)
+* :ghpull:`28625`: added typing_extensions.Self to _AxesBase.twinx
+* :ghpull:`28622`: Backport PR #28621 on branch v3.9.x (TYP: Fix a typo in animation.pyi)
+* :ghpull:`28621`: TYP: Fix a typo in animation.pyi
+* :ghpull:`28605`: Backport PR #28604 on branch v3.9.x (cycler signature update.)
+* :ghpull:`28604`: cycler signature update.
+* :ghpull:`28598`: Pin PyQt6 back on Ubuntu 20.04
+* :ghpull:`28596`: Backport PR #28518 on branch v3.9.x ([TYP] Fix overload of ``pyplot.subplots``)
+* :ghpull:`28518`: [TYP] Fix overload of ``pyplot.subplots``
+* :ghpull:`28591`: Backport PR #28580 on branch v3.9.x (Bump actions/attest-build-provenance from 1.3.2 to 1.3.3 in the actions group)
+* :ghpull:`28580`: Bump actions/attest-build-provenance from 1.3.2 to 1.3.3 in the actions group
+* :ghpull:`28586`: Backport PR #28582 on branch v3.9.x (FIX: make sticky edge tolerance relative to data range)
+* :ghpull:`28582`: FIX: make sticky edge tolerance relative to data range
+* :ghpull:`28572`: Backport PR #28571 on branch v3.9.x (DOC: Add version directive to hatch parameter in stackplot)
+* :ghpull:`28571`: DOC: Add version directive to hatch parameter in stackplot
+* :ghpull:`28564`: Backport PR #28534 on branch v3.9.x ([BLD] Fix WSL build warning)
+* :ghpull:`28563`: Backport PR #28526 on branch v3.9.x (Bump pypa/cibuildwheel from 2.19.1 to 2.19.2 in the actions group)
+* :ghpull:`28534`: [BLD] Fix WSL build warning
+* :ghpull:`28526`: Bump pypa/cibuildwheel from 2.19.1 to 2.19.2 in the actions group
+* :ghpull:`28552`: Backport PR #28541 on branch v3.9.x (MNT: be more careful about disk I/O failures when writing font cache)
+* :ghpull:`28541`: MNT: be more careful about disk I/O failures when writing font cache
+* :ghpull:`28524`: Backport PR #28523 on branch v3.9.x (Fix value error when set widget size to zero while using FigureCanvasQT )
+* :ghpull:`28523`: Fix value error when set widget size to zero while using FigureCanvasQT
+* :ghpull:`28519`: Backport PR #28517 on branch v3.9.x (DOC: better cross referencing for animations)
-Issues (30):
+Issues (9):
-* :ghissue:`22482`: [ENH]: pickle (or save) matplotlib figure with insteractive slider
-* :ghissue:`25847`: [Bug]: Graph gets cut off with scaled resolution using gtk4cairo backend
-* :ghissue:`28341`: [Bug]: Incorrect X-axis scaling with date values
-* :ghissue:`28383`: [Bug]: axvspan no longer participating in limit calculations
-* :ghissue:`28223`: [Bug]: Inconsistent Visualization of Intervals in ax.barh for Different Duration Widths
-* :ghissue:`28432`: [Bug]: Backend name specified as module gets lowercased since 3.9
-* :ghissue:`28467`: [Bug]: Incorrect type stub for ``ErrorbarContainer``'s ``lines`` attribute.
-* :ghissue:`28384`: [Bug]: subfigure artists not drawn interactively
-* :ghissue:`28234`: [Bug]: mpltype custom role breaks sphinx build for third-party projects that have intersphinx links to matplotlib
-* :ghissue:`28464`: [Bug]: figure with subfigures cannot be pickled
-* :ghissue:`28448`: [Bug]: Making an RGB image from pickled data throws error
-* :ghissue:`23317`: [Bug]: ``add_collection3d`` does not update view limits
-* :ghissue:`17130`: autoscale_view is not working with Line3DCollection
-* :ghissue:`28434`: [Bug]: Setting exactly 2 colors with tuple in ``plot`` method gives confusing error
-* :ghissue:`28417`: [Doc]: axhspan and axvspan now return Rectangles, not Polygons.
-* :ghissue:`28378`: [ENH]: Switch text wrapping boundary to subfigure
-* :ghissue:`28404`: [Doc]: matplotlib.widgets.CheckButtons no longer has .rectangles attribute, needs removed.
-* :ghissue:`28367`: [Bug]: Backend entry points can be erroneously duplicated
-* :ghissue:`28358`: [Bug]: Labels don't get wrapped when set_yticks() is used in subplots
-* :ghissue:`28374`: [Bug]: rcParam ``tk.window_focus: True`` is causes crash on Linux in version 3.9.0.
-* :ghissue:`28324`: [Bug]: show(block=False) freezes
-* :ghissue:`28239`: [Doc]: Gallery example showing 3D slice planes
-* :ghissue:`27603`: [Bug]: _raw_ticker() istep
-* :ghissue:`24328`: [Bug]: class Axes3D.set_box_aspect() sets wrong aspect ratios when Axes3D.view_init( vertical_axis='y') is enabled.
-* :ghissue:`28221`: [Doc]: drawedges attribute described twice in matplotlib.colorbar documentation
-* :ghissue:`28296`: [Doc]: Missing comma
-* :ghissue:`28256`: [Bug]: axes3d.py's _on_move() converts the roll angle to radians, but then passes it to view_init() as if it were still in degrees
-* :ghissue:`28267`: [Bug]: for Python 3.11.9 gor error ValueError: PyCapsule_New called with null pointer
-* :ghissue:`28022`: [Bug]: Type of Axes is unknown pyright
-* :ghissue:`28002`: Segfault from path editor example with QtAgg
+* :ghissue:`28551`: [Bug]: Possible issue with Matplotlib 3.9.1 wheel on Windows only
+* :ghissue:`28250`: [Doc]: Sphinx gallery links mispointed for Axes3D methods
+* :ghissue:`28574`: [Bug]: Nondeterministic behavior with subplot spacing and constrained layout
+* :ghissue:`28626`: [Doc]: Remove old TODO's from animation.py
+* :ghissue:`28648`: [Bug]: format_image_data on an image of only zeros produces a large number of zeros
+* :ghissue:`28624`: [Bug]: Bad type hint in ``_AxesBase.twinx()``
+* :ghissue:`28567`: [Bug]: sticky edge related changes for datetime plots
+* :ghissue:`28533`: [Doc]: Stackplot hatch functionality has version dependencies
+* :ghissue:`28538`: [Bug]: Permission denied when importing matplotlib.pyplot
Previous GitHub statistics
diff --git a/doc/users/prev_whats_new/github_stats_3.9.1.rst b/doc/users/prev_whats_new/github_stats_3.9.1.rst
new file mode 100644
index 000000000000..1bd7860546cb
--- /dev/null
+++ b/doc/users/prev_whats_new/github_stats_3.9.1.rst
@@ -0,0 +1,192 @@
+.. _github-stats-3-9-1:
+
+GitHub statistics for 3.9.1 (Jul 04, 2024)
+==========================================
+
+GitHub statistics for 2024/05/15 (tag: v3.9.0) - 2024/07/04
+
+These lists are automatically generated, and may be incomplete or contain duplicates.
+
+We closed 30 issues and merged 111 pull requests.
+The full list can be seen `on GitHub `__
+
+The following 29 authors contributed 184 commits.
+
+* Antony Lee
+* Brigitta Sipőcz
+* Christian Mattsson
+* dale
+* dependabot[bot]
+* Elliott Sales de Andrade
+* Eytan Adler
+* Greg Lucas
+* haaris
+* hannah
+* Ian Thomas
+* Illviljan
+* K900
+* Kyle Sunden
+* Lumberbot (aka Jack)
+* malhar2460
+* Matthew Feickert
+* Melissa Weber Mendonça
+* MischaMegens2
+* Oscar Gustafsson
+* Ruth Comer
+* Scott Shambaugh
+* simond07
+* SjoerdB93
+* Takumasa N
+* Takumasa N.
+* Takumasa Nakamura
+* Thomas A Caswell
+* Tim Hoffmann
+
+GitHub issues and pull requests:
+
+Pull Requests (111):
+
+* :ghpull:`28507`: Backport PR #28430 on branch v3.9.x (Fix pickling of AxesWidgets.)
+* :ghpull:`28506`: Backport PR #28451 on branch v3.9.x (Fix GTK cairo backends)
+* :ghpull:`28430`: Fix pickling of AxesWidgets.
+* :ghpull:`25861`: Fix Hidpi scaling for GTK4Cairo
+* :ghpull:`28451`: Fix GTK cairo backends
+* :ghpull:`28499`: Backport PR #28498 on branch v3.9.x (Don't fail if we can't query system fonts on macOS)
+* :ghpull:`28498`: Don't fail if we can't query system fonts on macOS
+* :ghpull:`28491`: Backport PR #28487 on branch v3.9.x (Fix autoscaling with axhspan)
+* :ghpull:`28490`: Backport PR #28486 on branch v3.9.x (Fix CompositeGenericTransform.contains_branch_seperately)
+* :ghpull:`28487`: Fix autoscaling with axhspan
+* :ghpull:`28486`: Fix CompositeGenericTransform.contains_branch_seperately
+* :ghpull:`28483`: Backport PR #28393 on branch v3.9.x (Make sticky edges only apply if the sticky edge is the most extreme limit point)
+* :ghpull:`28482`: Backport PR #28473 on branch v3.9.x (Do not lowercase module:// backends)
+* :ghpull:`28393`: Make sticky edges only apply if the sticky edge is the most extreme limit point
+* :ghpull:`28473`: Do not lowercase module:// backends
+* :ghpull:`28480`: Backport PR #28474 on branch v3.9.x (Fix typing and docs for containers)
+* :ghpull:`28479`: Backport PR #28397 (FIX: stale root Figure when adding/updating subfigures)
+* :ghpull:`28474`: Fix typing and docs for containers
+* :ghpull:`28472`: Backport PR #28289 on branch v3.9.x (Promote mpltype Sphinx role to a public extension)
+* :ghpull:`28471`: Backport PR #28342 on branch v3.9.x (DOC: Document the parameter *position* of apply_aspect() as internal)
+* :ghpull:`28470`: Backport PR #28398 on branch v3.9.x (Add GIL Release to flush_events in macosx backend)
+* :ghpull:`28469`: Backport PR #28355 on branch v3.9.x (MNT: Re-add matplotlib.cm.get_cmap)
+* :ghpull:`28397`: FIX: stale root Figure when adding/updating subfigures
+* :ghpull:`28289`: Promote mpltype Sphinx role to a public extension
+* :ghpull:`28342`: DOC: Document the parameter *position* of apply_aspect() as internal
+* :ghpull:`28398`: Add GIL Release to flush_events in macosx backend
+* :ghpull:`28355`: MNT: Re-add matplotlib.cm.get_cmap
+* :ghpull:`28468`: Backport PR #28465 on branch v3.9.x (Fix pickling of SubFigures)
+* :ghpull:`28465`: Fix pickling of SubFigures
+* :ghpull:`28462`: Backport PR #28440 on branch v3.9.x (DOC: Add note about simplification of to_polygons)
+* :ghpull:`28460`: Backport PR #28459 on branch v3.9.x (DOC: Document kwargs scope for tick setter functions)
+* :ghpull:`28461`: Backport PR #28458 on branch v3.9.x (Correct numpy dtype comparisons in image_resample)
+* :ghpull:`28440`: DOC: Add note about simplification of to_polygons
+* :ghpull:`28458`: Correct numpy dtype comparisons in image_resample
+* :ghpull:`28459`: DOC: Document kwargs scope for tick setter functions
+* :ghpull:`28450`: Backport of 28371 and 28411
+* :ghpull:`28446`: Backport PR #28403 on branch v3.9.x (FIX: Autoscale support in add_collection3d for Line3DCollection and Poly3DCollection
+* :ghpull:`28445`: Backport PR #28403 on branch v3.9.x (FIX: Autoscale support in add_collection3d for Line3DCollection and Poly3DCollection)
+* :ghpull:`28438`: Backport PR #28436 on branch v3.9.x (Fix ``is_color_like`` for 2-tuple of strings and fix ``to_rgba`` for ``(nth_color, alpha)``)
+* :ghpull:`28403`: FIX: Autoscale support in add_collection3d for Line3DCollection and Poly3DCollection
+* :ghpull:`28443`: Backport PR #28441 on branch v3.9.x (MNT: Update basic units example to work with numpy 2.0)
+* :ghpull:`28441`: MNT: Update basic units example to work with numpy 2.0
+* :ghpull:`28436`: Fix ``is_color_like`` for 2-tuple of strings and fix ``to_rgba`` for ``(nth_color, alpha)``
+* :ghpull:`28426`: Backport PR #28425 on branch v3.9.x (Fix Circle yaml line length)
+* :ghpull:`28427`: Fix circleci yaml
+* :ghpull:`28425`: Fix Circle yaml line length
+* :ghpull:`28422`: Backport PR #28401 on branch v3.9.x (FIX: Fix text wrapping)
+* :ghpull:`28424`: Backport PR #28423 on branch v3.9.x (Update return type for Axes.axhspan and Axes.axvspan)
+* :ghpull:`28423`: Update return type for Axes.axhspan and Axes.axvspan
+* :ghpull:`28401`: FIX: Fix text wrapping
+* :ghpull:`28419`: Backport PR #28414 on branch v3.9.x (Clean up obsolete widget code)
+* :ghpull:`28411`: Bump the actions group with 3 updates
+* :ghpull:`28414`: Clean up obsolete widget code
+* :ghpull:`28415`: Backport PR #28413 on branch v3.9.x (CI: update action that got moved org)
+* :ghpull:`28413`: CI: update action that got moved org
+* :ghpull:`28392`: Backport PR #28388 on branch v3.9.x (Allow duplicate (name, value) entry points for backends)
+* :ghpull:`28362`: Backport PR #28337 on branch v3.9.x (Bump the actions group across 1 directory with 3 updates)
+* :ghpull:`28388`: Allow duplicate (name, value) entry points for backends
+* :ghpull:`28389`: Backport PR #28380 on branch v3.9.x (Remove outdated docstring section in RendererBase.draw_text.)
+* :ghpull:`28380`: Remove outdated docstring section in RendererBase.draw_text.
+* :ghpull:`28385`: Backport PR #28377 on branch v3.9.x (DOC: Clarify scope of wrap.)
+* :ghpull:`28377`: DOC: Clarify scope of wrap.
+* :ghpull:`28368`: Backport PR #28359 on branch v3.9.x (Document that axes unsharing is impossible.)
+* :ghpull:`28359`: Document that axes unsharing is impossible.
+* :ghpull:`28337`: Bump the actions group across 1 directory with 3 updates
+* :ghpull:`28351`: Backport PR #28307 on branch v3.9.x (DOC: New color line by value example)
+* :ghpull:`28307`: DOC: New color line by value example
+* :ghpull:`28339`: Backport PR #28336 on branch v3.9.x (DOC: Add version warning banner for docs versions different from stable)
+* :ghpull:`28336`: DOC: Add version warning banner for docs versions different from stable
+* :ghpull:`28334`: Backport PR #28332 on branch v3.9.x (Call IPython.enable_gui when install repl displayhook)
+* :ghpull:`28332`: Call IPython.enable_gui when install repl displayhook
+* :ghpull:`28331`: Backport PR #28329 on branch v3.9.x (DOC: Add example for 3D intersecting planes)
+* :ghpull:`28329`: DOC: Add example for 3D intersecting planes
+* :ghpull:`28327`: Backport PR #28292 on branch v3.9.x (Resolve MaxNLocator IndexError when no large steps)
+* :ghpull:`28292`: Resolve MaxNLocator IndexError when no large steps
+* :ghpull:`28326`: Backport PR #28041 on branch v3.9.x ([BUG]: Shift box_aspect according to vertical_axis)
+* :ghpull:`28041`: [BUG]: Shift box_aspect according to vertical_axis
+* :ghpull:`28320`: Backport PR #27001 on branch v3.9.x ([TYP] Add overload of ``pyplot.subplots``)
+* :ghpull:`27001`: [TYP] Add overload of ``pyplot.subplots``
+* :ghpull:`28318`: Backport PR #28273 on branch v3.9.x (CI: Add GitHub artifact attestations to package distribution)
+* :ghpull:`28273`: CI: Add GitHub artifact attestations to package distribution
+* :ghpull:`28305`: Backport PR #28303 on branch v3.9.x (Removed drawedges repeated definition from function doc string)
+* :ghpull:`28303`: Removed drawedges repeated definition from function doc string
+* :ghpull:`28299`: Backport PR #28297 on branch v3.9.x (Solved #28296 Added missing comma)
+* :ghpull:`28297`: Solved #28296 Added missing comma
+* :ghpull:`28294`: Backport PR #28261 on branch v3.9.x (Correct roll angle units, issue #28256)
+* :ghpull:`28261`: Correct roll angle units, issue #28256
+* :ghpull:`28283`: Backport PR #28280 on branch v3.9.x (DOC: Add an example for 2D images in 3D plots)
+* :ghpull:`28280`: DOC: Add an example for 2D images in 3D plots
+* :ghpull:`28278`: Backport PR #28272 on branch v3.9.x (BLD: Move macos builders from 11 to 12)
+* :ghpull:`28277`: Backport PR #28274 on branch v3.9.x (ci: Remove deprecated codeql option)
+* :ghpull:`28272`: BLD: Move macos builders from 11 to 12
+* :ghpull:`28274`: ci: Remove deprecated codeql option
+* :ghpull:`28270`: Backport PR #28269 on branch v3.9.x (Handle GetForegroundWindow() returning NULL.)
+* :ghpull:`28269`: Handle GetForegroundWindow() returning NULL.
+* :ghpull:`28266`: Backport PR #28257 on branch v3.9.x (Clean up some Meson-related leftovers)
+* :ghpull:`28257`: Clean up some Meson-related leftovers
+* :ghpull:`28255`: Backport PR #28254 on branch v3.9.x ([DOC] plot type heading consistency)
+* :ghpull:`28254`: [DOC] plot type heading consistency
+* :ghpull:`28253`: Backport PR #28252 on branch v3.9.x (DOC: Flip the imshow plot types example to match the other examples)
+* :ghpull:`28252`: DOC: Flip the imshow plot types example to match the other examples
+* :ghpull:`28247`: Backport PR #28230 on branch v3.9.x (Add extra imports to improve typing)
+* :ghpull:`28230`: Add extra imports to improve typing
+* :ghpull:`28246`: Backport PR #28243 on branch v3.9.x (DOC: Add more 3D plot types)
+* :ghpull:`28243`: DOC: Add more 3D plot types
+* :ghpull:`28241`: Backport PR #28219 on branch v3.9.x (Bump the actions group with 2 updates)
+* :ghpull:`28219`: Bump the actions group with 2 updates
+* :ghpull:`28237`: Backport PR #28233 on branch v3.9.x (CI: Fix font install on macOS/Homebrew)
+* :ghpull:`28236`: Backport PR #28231 on branch v3.9.x (DOC: we do not need the blit call in on_draw)
+* :ghpull:`28233`: CI: Fix font install on macOS/Homebrew
+* :ghpull:`28231`: DOC: we do not need the blit call in on_draw
+
+Issues (30):
+
+* :ghissue:`22482`: [ENH]: pickle (or save) matplotlib figure with insteractive slider
+* :ghissue:`25847`: [Bug]: Graph gets cut off with scaled resolution using gtk4cairo backend
+* :ghissue:`28341`: [Bug]: Incorrect X-axis scaling with date values
+* :ghissue:`28383`: [Bug]: axvspan no longer participating in limit calculations
+* :ghissue:`28223`: [Bug]: Inconsistent Visualization of Intervals in ax.barh for Different Duration Widths
+* :ghissue:`28432`: [Bug]: Backend name specified as module gets lowercased since 3.9
+* :ghissue:`28467`: [Bug]: Incorrect type stub for ``ErrorbarContainer``'s ``lines`` attribute.
+* :ghissue:`28384`: [Bug]: subfigure artists not drawn interactively
+* :ghissue:`28234`: [Bug]: mpltype custom role breaks sphinx build for third-party projects that have intersphinx links to matplotlib
+* :ghissue:`28464`: [Bug]: figure with subfigures cannot be pickled
+* :ghissue:`28448`: [Bug]: Making an RGB image from pickled data throws error
+* :ghissue:`23317`: [Bug]: ``add_collection3d`` does not update view limits
+* :ghissue:`17130`: autoscale_view is not working with Line3DCollection
+* :ghissue:`28434`: [Bug]: Setting exactly 2 colors with tuple in ``plot`` method gives confusing error
+* :ghissue:`28417`: [Doc]: axhspan and axvspan now return Rectangles, not Polygons.
+* :ghissue:`28378`: [ENH]: Switch text wrapping boundary to subfigure
+* :ghissue:`28404`: [Doc]: matplotlib.widgets.CheckButtons no longer has .rectangles attribute, needs removed.
+* :ghissue:`28367`: [Bug]: Backend entry points can be erroneously duplicated
+* :ghissue:`28358`: [Bug]: Labels don't get wrapped when set_yticks() is used in subplots
+* :ghissue:`28374`: [Bug]: rcParam ``tk.window_focus: True`` is causes crash on Linux in version 3.9.0.
+* :ghissue:`28324`: [Bug]: show(block=False) freezes
+* :ghissue:`28239`: [Doc]: Gallery example showing 3D slice planes
+* :ghissue:`27603`: [Bug]: _raw_ticker() istep
+* :ghissue:`24328`: [Bug]: class Axes3D.set_box_aspect() sets wrong aspect ratios when Axes3D.view_init( vertical_axis='y') is enabled.
+* :ghissue:`28221`: [Doc]: drawedges attribute described twice in matplotlib.colorbar documentation
+* :ghissue:`28296`: [Doc]: Missing comma
+* :ghissue:`28256`: [Bug]: axes3d.py's _on_move() converts the roll angle to radians, but then passes it to view_init() as if it were still in degrees
+* :ghissue:`28267`: [Bug]: for Python 3.11.9 gor ValueError: PyCapsule_New called with null pointer
+* :ghissue:`28022`: [Bug]: Type of Axes is unknown pyright
+* :ghissue:`28002`: Segfault from path editor example with QtAgg
diff --git a/doc/users/release_notes.rst b/doc/users/release_notes.rst
index 1204450f6c05..74bc0f13bf1f 100644
--- a/doc/users/release_notes.rst
+++ b/doc/users/release_notes.rst
@@ -19,9 +19,11 @@ Version 3.9
:maxdepth: 1
prev_whats_new/whats_new_3.9.0.rst
+ ../api/prev_api_changes/api_changes_3.9.2.rst
../api/prev_api_changes/api_changes_3.9.1.rst
../api/prev_api_changes/api_changes_3.9.0.rst
github_stats.rst
+ prev_whats_new/github_stats_3.9.1.rst
prev_whats_new/github_stats_3.9.0.rst
Version 3.8
diff --git a/lib/matplotlib/tests/test_backends_interactive.py b/lib/matplotlib/tests/test_backends_interactive.py
index d624b5db0ac2..2c6b61a48438 100644
--- a/lib/matplotlib/tests/test_backends_interactive.py
+++ b/lib/matplotlib/tests/test_backends_interactive.py
@@ -81,10 +81,18 @@ def _get_available_interactive_backends():
elif env["MPLBACKEND"] == 'macosx' and os.environ.get('TF_BUILD'):
reason = "macosx backend fails on Azure"
elif env["MPLBACKEND"].startswith('gtk'):
- import gi # type: ignore
+ try:
+ import gi # type: ignore
+ except ImportError:
+ # Though we check that `gi` exists above, it is possible that its
+ # C-level dependencies are not available, and then it still raises an
+ # `ImportError`, so guard against that.
+ available_gtk_versions = []
+ else:
+ gi_repo = gi.Repository.get_default()
+ available_gtk_versions = gi_repo.enumerate_versions('Gtk')
version = env["MPLBACKEND"][3]
- repo = gi.Repository.get_default()
- if f'{version}.0' not in repo.enumerate_versions('Gtk'):
+ if f'{version}.0' not in available_gtk_versions:
reason = "no usable GTK bindings"
marks = []
if reason:
diff --git a/pyproject.toml b/pyproject.toml
index 0f181ccb629e..b706d86cb7b2 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -47,7 +47,7 @@ requires-python = ">=3.10"
dev = [
"meson-python>=0.13.1",
"numpy>=1.25",
- "pybind11>=2.6",
+ "pybind11>=2.6,!=2.13.3",
"setuptools_scm>=7",
# Not required by us but setuptools_scm without a version, cso _if_
# installed, then setuptools_scm 8 requires at least this version.
@@ -71,7 +71,7 @@ build-backend = "mesonpy"
# Also keep in sync with optional dependencies above.
requires = [
"meson-python>=0.13.1",
- "pybind11>=2.6",
+ "pybind11>=2.6,!=2.13.3",
"setuptools_scm>=7",
# Comments on numpy build requirement range:
diff --git a/requirements/dev/build-requirements.txt b/requirements/dev/build-requirements.txt
index 1b22d228e217..6f0c6029f4a2 100644
--- a/requirements/dev/build-requirements.txt
+++ b/requirements/dev/build-requirements.txt
@@ -1,4 +1,4 @@
-pybind11
+pybind11!=2.13.3
meson-python
numpy
setuptools-scm
diff --git a/tools/cache_zenodo_svg.py b/tools/cache_zenodo_svg.py
index 1dc2fbba020b..40814d21573c 100644
--- a/tools/cache_zenodo_svg.py
+++ b/tools/cache_zenodo_svg.py
@@ -63,6 +63,7 @@ def _get_xdg_cache_dir():
if __name__ == "__main__":
data = {
+ "v3.9.2": "13308876",
"v3.9.1": "12652732",
"v3.9.0": "11201097",
"v3.8.4": "10916799",