From a40bde3209d6d2ac2d4b79db48d73862a59b61cc Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Fri, 17 Jul 2026 23:49:35 -0400 Subject: [PATCH 01/10] DOC: Add Zenodo DOI for 3.11.1 --- doc/_static/zenodo_cache/21422872.svg | 35 +++++++++++++++++++++++++++ doc/project/citing.rst | 3 +++ tools/cache_zenodo_svg.py | 1 + 3 files changed, 39 insertions(+) create mode 100644 doc/_static/zenodo_cache/21422872.svg diff --git a/doc/_static/zenodo_cache/21422872.svg b/doc/_static/zenodo_cache/21422872.svg new file mode 100644 index 000000000000..f67ae78c3ef8 --- /dev/null +++ b/doc/_static/zenodo_cache/21422872.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + DOI + + + DOI + + + 10.5281/zenodo.21422872 + + + 10.5281/zenodo.21422872 + + + \ No newline at end of file diff --git a/doc/project/citing.rst b/doc/project/citing.rst index 04f60c20bfaf..96f44f7b2daa 100644 --- a/doc/project/citing.rst +++ b/doc/project/citing.rst @@ -32,6 +32,9 @@ By version .. START OF AUTOGENERATED +v3.11.1 + .. image:: ../_static/zenodo_cache/21422872.svg + :target: https://doi.org/10.5281/zenodo.21422872 v3.11.0 .. image:: ../_static/zenodo_cache/20654446.svg :target: https://doi.org/10.5281/zenodo.20654446 diff --git a/tools/cache_zenodo_svg.py b/tools/cache_zenodo_svg.py index ca80e6376712..17393dd94787 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.11.1": "21422872", "v3.11.0": "20654446", "v3.10.9": "19716234", "v3.10.8": "17595503", From 8d7545a16afdebb61c580a740ee6cf48ec3f6a2a Mon Sep 17 00:00:00 2001 From: hannah Date: Sat, 29 Aug 2026 20:52:58 -0400 Subject: [PATCH 02/10] Backport PR #32250: DOC: Convert math symbol table to sphinx-design cards --- doc/sphinxext/math_symbol_table.py | 39 +++++++++++++++++------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/doc/sphinxext/math_symbol_table.py b/doc/sphinxext/math_symbol_table.py index a143326ab75b..08195d893ed3 100644 --- a/doc/sphinxext/math_symbol_table.py +++ b/doc/sphinxext/math_symbol_table.py @@ -1,5 +1,6 @@ import re -from docutils.parsers.rst import Directive + +from sphinx.util.docutils import SphinxDirective from matplotlib import _mathtext, _mathtext_data @@ -32,7 +33,7 @@ 5, _mathtext.Parser._overunder_symbols | _mathtext.Parser._dropsub_symbols], ["Standard function names", - 5, + 4, {fr"\{fn}" for fn in _mathtext.Parser._function_names}], ["Binary operation symbols", 4, @@ -87,31 +88,34 @@ def render_symbol(sym, ignore_variant=False): lines = [] for category, columns, syms in symbols: + lines.append(f'**{category}**') + lines.append('') + lines.append(f'.. grid:: 1 1 {columns} {columns}') + if category == "Hebrew": # Hebrew is rtl + lines.append(' :reverse:') + lines.append('') syms = sorted(syms, # Sort by Unicode and place variants immediately # after standard versions. key=lambda sym: (render_symbol(sym, ignore_variant=True), - sym.startswith(r"\var")), - reverse=(category == "Hebrew")) # Hebrew is rtl - rendered_syms = [f"{render_symbol(sym)} ``{sym}``" for sym in syms] - columns = min(columns, len(syms)) - lines.append("**%s**" % category) - lines.append('') - max_width = max(map(len, rendered_syms)) - header = (('=' * max_width) + ' ') * columns - lines.append(header.rstrip()) - for part in range(0, len(rendered_syms), columns): - row = " ".join( - sym.rjust(max_width) for sym in rendered_syms[part:part + columns]) - lines.append(row) - lines.append(header.rstrip()) + sym.startswith(r"\var"))) + size = 'sd-fs-4' if category == 'Standard function names' else 'sd-fs-1' + for sym in syms: + rendered = render_symbol(sym) + lines.append(f' .. grid-item-card:: {rendered}') + lines.append(f' :class-title: {size}') + lines.append(' :shadow: none') + lines.append(' :text-align: center') + lines.append('') + lines.append(f' ``{sym}``') + lines.append('') lines.append('') state_machine.insert_input(lines, "Symbol table") return [] -class MathSymbolTableDirective(Directive): +class MathSymbolTableDirective(SphinxDirective): has_content = False required_arguments = 0 optional_arguments = 0 @@ -119,6 +123,7 @@ class MathSymbolTableDirective(Directive): option_spec = {} def run(self): + self.env.note_dependency(__file__) return run(self.state_machine) From 0eb5dbd78ba2e965af0405e10807e40f8d4bd572 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Wed, 29 Jul 2026 10:25:40 -0400 Subject: [PATCH 03/10] Backport PR #32132: Add source directory config to rstcheck and bump requirement --- .pre-commit-config.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8706ec94b3d5..5709d4b8e084 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -66,13 +66,13 @@ repos: name: isort (python) files: ^galleries/tutorials/|^galleries/examples/|^galleries/plot_types/ - repo: https://github.com/rstcheck/rstcheck - rev: 77490ffa33bfc0928975ae3cf904219903db755d # frozen: v6.2.5 + rev: d8774e96810795967ed9603f445b4e751e7b313f # frozen: v6.3.0 hooks: - id: rstcheck additional_dependencies: - - rstcheck-core!=1.3 # https://github.com/rstcheck/rstcheck-core/pull/114#pullrequestreview-4239740896 - sphinx>=1.8.1 - tomli + args: ["--sphinx-source-dir", "doc"] - repo: https://github.com/adrienverge/yamllint rev: cba56bcde1fdd01c1deb3f945e69764c291a6530 # frozen: v1.38.0 hooks: From 6c340628075ac401c2cf42e888c85c64b2ea5a59 Mon Sep 17 00:00:00 2001 From: Ricci Adams <1097294+iccir@users.noreply.github.com> Date: Fri, 4 Sep 2026 12:04:00 -0700 Subject: [PATCH 04/10] Backport PR #32288: DOC: switch to more stable location for intershpinx registry --- doc/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/conf.py b/doc/conf.py index 6651383fcacb..8447f9da40c6 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -273,7 +273,7 @@ def autodoc_process_bases(app, name, obj, options, bases): 'pandas': ('https://pandas.pydata.org/docs/', None), 'pytest': ('https://pytest.org/en/stable/', None), 'python': ('https://docs.python.org/3/', None), - 'scipy': ('https://docs.scipy.org/doc/scipy/', None), + 'scipy': ('https://static.scipy.org/doc/scipy/', None), 'tornado': ('https://www.tornadoweb.org/en/stable/', None), 'wx': ('https://docs.wxpython.org/', None), 'xarray': ('https://docs.xarray.dev/en/stable/', None), From 89017bde2bdab9482f13733ebad705c62ef615a6 Mon Sep 17 00:00:00 2001 From: Kyle Sunden Date: Fri, 4 Sep 2026 13:51:58 -0700 Subject: [PATCH 05/10] Backport PR #32263: Doc: tell 3.11 upgraders to remove the pre-shaping workaround --- .../prev_whats_new/whats_new_3.11.0.rst | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/doc/release/prev_whats_new/whats_new_3.11.0.rst b/doc/release/prev_whats_new/whats_new_3.11.0.rst index 95c9f8313873..0ff9fea3b998 100644 --- a/doc/release/prev_whats_new/whats_new_3.11.0.rst +++ b/doc/release/prev_whats_new/whats_new_3.11.0.rst @@ -774,6 +774,36 @@ Text support has been extended to include complex text layout. This support incl Note, all advanced features require corresponding font support, and may require additional fonts over the builtin DejaVu Sans. +.. admonition:: Remove any pre-shaping workaround + :class: important + + Because Matplotlib did not previously reorder text, the usual workaround for + Arabic, Persian, Urdu and Hebrew was to reorder the string before passing it in, + typically with ``arabic_reshaper`` and ``python-bidi``:: + + preprocessed = get_display(arabic_reshaper.reshape(text)) + ax.set_title(preprocessed) + + Matplotlib now reorders the string itself, so a string that arrives already in + visual order is reordered a second time and is drawn backwards. Nothing is + raised, and to a reader who does not read the script the result still looks + like correct text, so this is easy to ship without noticing. + + - If you can require Matplotlib 3.11, pass the logical string and delete the + pre-processing. + - If you support older versions as well, branch on the Matplotlib version and + pre-process only on the older one. + - If you cannot change the call at all, because the text is handed to a + third-party library that calls Matplotlib for you, wrap the pre-processed + string in ``LEFT-TO-RIGHT OVERRIDE`` and ``POP DIRECTIONAL FORMATTING``:: + + text = ('\N{LEFT-TO-RIGHT OVERRIDE}' + preprocessed + + '\N{POP DIRECTIONAL FORMATTING}') + + That reads correctly on every version. It does not always render + identically, because it draws the font's presentation-form glyphs rather + than the font's own shaping, and some fonts space those differently. + Specifying font feature tags ---------------------------- From 9805ad599b98b10e679be8ba611f1b8039025d88 Mon Sep 17 00:00:00 2001 From: hannah Date: Sat, 5 Sep 2026 20:48:07 -0400 Subject: [PATCH 06/10] Backport PR #32303: DOC: correct scipy intersphinx mapping to link to docs site --- doc/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/conf.py b/doc/conf.py index 8447f9da40c6..58340bf32a23 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -273,7 +273,7 @@ def autodoc_process_bases(app, name, obj, options, bases): 'pandas': ('https://pandas.pydata.org/docs/', None), 'pytest': ('https://pytest.org/en/stable/', None), 'python': ('https://docs.python.org/3/', None), - 'scipy': ('https://static.scipy.org/doc/scipy/', None), + 'scipy': ('https://docs.scipy.org/doc/scipy/', 'https://static.scipy.org/doc/scipy/objects.inv'), 'tornado': ('https://www.tornadoweb.org/en/stable/', None), 'wx': ('https://docs.wxpython.org/', None), 'xarray': ('https://docs.xarray.dev/en/stable/', None), From 39c7f0678af763abe850b41a71cd2724e326157c Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 10 Sep 2026 17:28:53 -0400 Subject: [PATCH 07/10] DOC: Prepare GitHub stats for 3.11.2 --- doc/release/github_stats.rst | 262 ++++++++++-------- .../prev_whats_new/github_stats_3.11.1.rst | 137 +++++++++ doc/release/release_notes.rst | 1 + 3 files changed, 288 insertions(+), 112 deletions(-) create mode 100644 doc/release/prev_whats_new/github_stats_3.11.1.rst diff --git a/doc/release/github_stats.rst b/doc/release/github_stats.rst index 0639e3f3971c..1ad8f43653de 100644 --- a/doc/release/github_stats.rst +++ b/doc/release/github_stats.rst @@ -2,139 +2,177 @@ .. _github-stats: -GitHub statistics for 3.11.1 (Jul 17, 2026) +GitHub statistics for 3.11.2 (Sep 10, 2026) =========================================== -GitHub statistics for 2026/06/11 (tag: v3.11.0) - 2026/07/17 +GitHub statistics for 2026/07/17 (tag: v3.11.1) - 2026/09/10 These lists are automatically generated, and may be incomplete or contain duplicates. -We closed 16 issues and merged 70 pull requests. -The full list can be seen `on GitHub `__ +We closed 18 issues and merged 101 pull requests. +The full list can be seen `on GitHub `__ -The following 27 authors contributed 70 commits. +The following 32 authors contributed 101 commits. +* adarshsm +* Ahmed Mohamed * Albert Y. Shih -* cyphercodes -* David Stansby +* Alice +* Alice Alfonsi +* Andrzej Novak +* carlosgmartin +* Cayenne Matt +* Danial Ludwig * dependabot[bot] -* eeshsaxena +* dkl * Elliott Sales de Andrade -* Erik Vo -* goutamadwant +* Gleb Popov * hannah -* Håkon Steinkopf Søhoel -* jaya prajapati +* Ian Thomas +* jameslin9968 * Jody Klymak +* John Duggan * Kyle Sunden * Lumberbot (aka Jack) -* Mervin Yap -* Mustafa Senoglu -* Rayan Salhab * Ricci Adams +* rokokol * Ruth Comer -* Scolliq -* Scott Shambaugh +* Sahil Mathur +* Simon Altrogge +* Simon Høxbro Hansen +* Sreekant Baheti * Thomas A Caswell * Tim Hoffmann -* Uwez Khan -* uwezkhan -* Vincent Gao -* Zhou Qiankang +* Vladimir Saraikin +* yuzie007 +* Zeke Barger GitHub issues and pull requests: -Pull Requests (70): - -* :ghpull:`32052`: Backport PR #32038 on branch v3.11.x (Fix occasional misalignment in reported mouse position (also fixes a bug with canvas height)) -* :ghpull:`32050`: Backport PR #31304 on branch v3.11.x (Fix restoring 'auto' aspect in 3D axes after switching from 'equal') -* :ghpull:`32051`: Backport PR #32037 on branch v3.11.x (Bump the actions group with 3 updates) -* :ghpull:`32038`: Fix occasional misalignment in reported mouse position (also fixes a bug with canvas height) -* :ghpull:`32037`: Bump the actions group with 3 updates -* :ghpull:`31304`: Fix restoring 'auto' aspect in 3D axes after switching from 'equal' -* :ghpull:`32047`: Backport PR #32025 on branch v3.11.x (DOC: remove rcparams listing from user guide ) -* :ghpull:`32025`: DOC: remove rcparams listing from user guide -* :ghpull:`32046`: Backport PR #32045 on branch v3.11.x (DOC: added ffmpeg to optional doc dependencies) -* :ghpull:`32034`: Backport PR #31975 on branch v3.11.x (pdf/ps: Stop retaining glyph indices in font subsets) -* :ghpull:`32045`: DOC: added ffmpeg to optional doc dependencies -* :ghpull:`32043`: Backport PR #32042 on branch v3.11.x (DOC: Remove warning about macosx backend) -* :ghpull:`32042`: DOC: Remove warning about macosx backend -* :ghpull:`32036`: Backport PR #31894 on branch v3.11.x (check transform mesh shape in _get_transform_mesh) -* :ghpull:`31894`: check transform mesh shape in _get_transform_mesh -* :ghpull:`31975`: pdf/ps: Stop retaining glyph indices in font subsets -* :ghpull:`32033`: Backport PR #32032 on branch v3.11.x (MNT: remove redundant imports) -* :ghpull:`32031`: Backport PR #31967 on branch v3.11.x (Fix NoNorm cursor formatting for uint8 images) -* :ghpull:`32032`: MNT: remove redundant imports -* :ghpull:`32030`: Backport PR #31990 on branch v3.11.x (DOC fix parameter name in CharacterMapping.add docstring) -* :ghpull:`31967`: Fix NoNorm cursor formatting for uint8 images -* :ghpull:`32027`: Backport PR #32022 on branch v3.11.x (Remove deprecated freethreading option from cibuildwheel) -* :ghpull:`32021`: Backport PR #31992 on branch v3.11.x (Fix: Axis and grid panes out of sync when inverting an axis) -* :ghpull:`32024`: Backport PR #32013 on branch v3.11.x (DOC: Document ax.transData and ax.transAxes) -* :ghpull:`32022`: Remove deprecated freethreading option from cibuildwheel -* :ghpull:`32013`: DOC: Document ax.transData and ax.transAxes -* :ghpull:`31992`: Fix: Axis and grid panes out of sync when inverting an axis -* :ghpull:`32010`: Backport PR #32009 on branch v3.11.x (DOC: Fix outdated text in image_resampling example) -* :ghpull:`32009`: DOC: Fix outdated text in image_resampling example -* :ghpull:`32007`: Backport PR #31994 on branch v3.11.x (Bump the actions group across 1 directory with 9 updates) -* :ghpull:`31994`: Bump the actions group across 1 directory with 9 updates -* :ghpull:`31990`: DOC fix parameter name in CharacterMapping.add docstring -* :ghpull:`31988`: Backport PR #31985 on branch v3.11.x (DOC: Fix broken configobj link in 0.99.x API changes) -* :ghpull:`31985`: DOC: Fix broken configobj link in 0.99.x API changes -* :ghpull:`31972`: Backport PR #31932 on branch v3.11.x (FIX: include axis labels in get_tightbbox when not for_layout_only) -* :ghpull:`31932`: FIX: include axis labels in get_tightbbox when not for_layout_only -* :ghpull:`31970`: Backport PR #31969 on branch v3.11.x (Stop passing symlinks to ImageMagick) -* :ghpull:`31969`: Stop passing symlinks to ImageMagick -* :ghpull:`31950`: Backport PR #31857 on branch v3.11.x (bound ft2font stream read to the requested count) -* :ghpull:`31951`: Backport PR #30252 on branch v3.11.x (Move cibuildwheel configuration to pyproject.toml) -* :ghpull:`31952`: Backport PR #31928 on branch v3.11.x (Fix notdef handling when subsetting Type 1 fonts) -* :ghpull:`31958`: Backport PR #31940 on branch v3.11.x (Add loongarch64 image comparison tolerances) -* :ghpull:`31959`: Backport PR #31910 on branch v3.11.x (FIX: Add mtext into RendererBase._draw_as_path() arguments) -* :ghpull:`31910`: FIX: Add mtext into RendererBase._draw_as_path() arguments -* :ghpull:`31948`: Backport PR #31946 on branch v3.11.x (TST: Increase some tolerances for non-x86_64 architectures) -* :ghpull:`31940`: Add loongarch64 image comparison tolerances -* :ghpull:`31928`: Fix notdef handling when subsetting Type 1 fonts -* :ghpull:`30252`: Move cibuildwheel configuration to pyproject.toml -* :ghpull:`31857`: bound ft2font stream read to the requested count -* :ghpull:`31946`: TST: Increase some tolerances for non-x86_64 architectures -* :ghpull:`31945`: Backport PR #31920 on branch v3.11.x (Fix various small type hint issues) -* :ghpull:`31944`: Backport PR #31943 on branch v3.11.x (FIX: allow non-strict monotonicity in LinearSegmented.from_list values) -* :ghpull:`31920`: Fix various small type hint issues -* :ghpull:`31941`: Backport PR #31931 on branch v3.11.x (TST: address pikepdf deprecation) -* :ghpull:`31943`: FIX: allow non-strict monotonicity in LinearSegmented.from_list values -* :ghpull:`31931`: TST: address pikepdf deprecation -* :ghpull:`31921`: Backport PR #31906 on branch v3.11.x (TST: unpin pytest) -* :ghpull:`31906`: TST: unpin pytest -* :ghpull:`31915`: Backport PR #31898 on branch v3.11.x (fix: allow array-like fill_between where masks) -* :ghpull:`31908`: Backport of PRs #31678 and #31782 -* :ghpull:`31882`: Bump the actions group with 3 updates -* :ghpull:`31898`: fix: allow array-like fill_between where masks -* :ghpull:`31911`: Backport PR #31904 on branch v3.11.x (DOC: clarify valid inputs and return type of ``same_color``) -* :ghpull:`31904`: DOC: clarify valid inputs and return type of ``same_color`` -* :ghpull:`31893`: Backport PR #31885 on branch v3.11.x (Skip hidden y-axis offset text when positioning titles (fix #31881)) -* :ghpull:`31900`: Backport PR #31896 on branch v3.11.x (TST: temporarily pin pytest) -* :ghpull:`31896`: TST: temporarily pin pytest -* :ghpull:`31885`: Skip hidden y-axis offset text when positioning titles (fix #31881) -* :ghpull:`31782`: Bump the actions group across 1 directory with 4 updates -* :ghpull:`31678`: Bump the actions group with 2 updates - -Issues (16): - -* :ghissue:`15363`: Reliably set the output image size -* :ghissue:`27570`: [Bug]: QuadMesh.get_cursor_data() returns incorrect value -* :ghissue:`31276`: [Bug]: Setting aspect back to auto cannot recover the original 3D plot -* :ghissue:`31955`: [Bug]: PDF Type 42 output regression in 3.11: excessive font embedding and fl rendered as a ligature -* :ghissue:`31960`: [Bug]: imshow uint8 image with colors.NoNorm() causes OverflowError when mousing over figure -* :ghissue:`25220`: [Doc]: Better document Axes.transData and other transXYZ attributes -* :ghissue:`31989`: [Bug]: Axis and grid panes out of sync, regression in 3.11 -* :ghissue:`29541`: [Doc]: A few problems on Image resampling page -* :ghissue:`31568`: [Bug]: savefig(bbox_inches='tight') clips axis labels on 3D axes -* :ghissue:`28117`: [Bug]: The zlabel on 3D axes will be cut when using '%matplotlib inline' in Jupyter -* :ghissue:`31927`: [Bug]: ``path_effects`` on text gives an error in matplotlib 3.11 -* :ghissue:`31925`: [Bug]: minus signs not rendered in PDF export with TeX -* :ghissue:`31939`: [Bug]: Regression in 3.11.0 with LinearSegmentedColormap -* :ghissue:`31897`: [MNT]: unpin pytest -* :ghissue:`31890`: [Bug]: Type hints for where argument in ax.fill_between does not allow np.ndarrays -* :ghissue:`31881`: [Bug]: ValueError ("cannot convert float NaN to integer") when trying to show horizontally-stacked subplots +Pull Requests (101): + +* :ghpull:`32330`: Backport PR #32324 on branch v3.11.x (Don't force any diagnostics to be errors in bundled Harfbuzz) +* :ghpull:`32324`: Don't force any diagnostics to be errors in bundled Harfbuzz +* :ghpull:`32322`: Backport PR #32321 on branch v3.11.x (DOC: correct note about PyOS_InputHook) +* :ghpull:`32319`: Backport PR #32305 on branch v3.11.x (Improve error message for boxplot_stats function, by printing dimensions.) +* :ghpull:`32318`: Backport PR #32315 on branch v3.11.x (Fix TkCairo bug when displaying images with partially transparent pixels) +* :ghpull:`32301`: Backport PR #32198 on branch v3.11.x (TST: Set subprocess timeouts consistently on CI) +* :ghpull:`32315`: Fix TkCairo bug when displaying images with partially transparent pixels +* :ghpull:`32305`: Improve error message for boxplot_stats function, by printing dimensions. +* :ghpull:`32307`: Backport PR #32303 on branch v3.11.x (DOC: correct scipy intersphinx mapping to link to docs site) +* :ghpull:`32295`: Backport PR #32104 on branch v3.11.x (Add font family to mismatched font weight warning) +* :ghpull:`32294`: Bump the actions group with 2 updates +* :ghpull:`32300`: Backport PR #32000 on branch v3.11.x (Fix PDF path collection culling for ``hexbin`` offsets) +* :ghpull:`32198`: TST: Set subprocess timeouts consistently on CI +* :ghpull:`32290`: Backport PR #32267 on branch v3.11.x (Add checks after using pybind ensure()) +* :ghpull:`32298`: Backport PR #32263 on branch v3.11.x (Doc: tell 3.11 upgraders to remove the pre-shaping workaround) +* :ghpull:`32000`: Fix PDF path collection culling for ``hexbin`` offsets +* :ghpull:`32289`: Backport PR #32226 on branch v3.11.x (ft2font: Make glyph loading failures more robust) +* :ghpull:`32286`: Backport PR #32193 on branch v3.11.x (Raise a clear error on incomplete Type1 font sections) +* :ghpull:`32292`: Backport PR #32288 on branch v3.11.x (DOC: switch to more stable location for intersphinx registry) +* :ghpull:`32104`: Add font family to mismatched font weight warning +* :ghpull:`32267`: Add checks after using pybind ensure() +* :ghpull:`32226`: ft2font: Make glyph loading failures more robust +* :ghpull:`32193`: Raise a clear error on incomplete Type1 font sections +* :ghpull:`32283`: Backport PR #32275 on branch v3.11.x (Speed up RGBA-stage image resampling) +* :ghpull:`32284`: Backport PR #32254 on branch v3.11.x (Fix bug with PGF hatch linewidth and color) +* :ghpull:`32254`: Fix bug with PGF hatch linewidth and color +* :ghpull:`32275`: Speed up RGBA-stage image resampling +* :ghpull:`32277`: Backport PR #32268 on branch v3.11.x (Use "{}" for format strings) +* :ghpull:`32268`: Use "{}" for format strings +* :ghpull:`32274`: Backport PR #32252 on branch v3.11.x (FIX: interpolate the path and name MPLCONFIGDIR in the temp cache dir warning) +* :ghpull:`32252`: FIX: interpolate the path and name MPLCONFIGDIR in the temp cache dir warning +* :ghpull:`32266`: Backport PR #32265 on branch v3.11.x (DOC: minor fix in pie_label docstring) +* :ghpull:`32270`: Backport PR #32225 on branch v3.11.x (Fix ResizeEvent handling for TextBox) +* :ghpull:`32225`: Fix ResizeEvent handling for TextBox +* :ghpull:`32265`: DOC: minor fix in pie_label docstring +* :ghpull:`32259`: Backport PR #32250 on branch v3.11.x (DOC: Convert math symbol table to sphinx-design cards) +* :ghpull:`32255`: Bump the actions group with 2 updates +* :ghpull:`32248`: Backport PR #32194 on branch v3.11.x (Fix the rounding of animation frame size to match the eventual canvas size) +* :ghpull:`32249`: Backport PR #32228 on branch v3.11.x (Fixed a bug with drawing an empty Collection) +* :ghpull:`32247`: Backport PR #32242 on branch v3.11.x (ci: Force-enable long path support on AppVeyor) +* :ghpull:`32228`: Fixed a bug with drawing an empty Collection +* :ghpull:`32194`: Fix the rounding of animation frame size to match the eventual canvas size +* :ghpull:`32242`: ci: Force-enable long path support on AppVeyor +* :ghpull:`32236`: Backport PR #32147 on branch v3.11.x (Fix nested braces in mathtext \text arguments) +* :ghpull:`32210`: Bump the actions group across 1 directory with 6 updates +* :ghpull:`32147`: Fix nested braces in mathtext \text arguments +* :ghpull:`32235`: Backport PR #32209 on branch v3.11.x (BLD: Force all internal extension symbols to be hidden) +* :ghpull:`32209`: BLD: Force all internal extension symbols to be hidden +* :ghpull:`32230`: Backport PR #32223 on branch v3.11.x (TST: Use a nonzero tolerance for ``test_anchored_direction_arrows_many_args`` unconditionally) +* :ghpull:`32229`: Backport PR #32221 on branch v3.11.x (Qt IconEngine: Use a device pixel ratio of 1 when high-DPI pixmaps are disabled) +* :ghpull:`32223`: TST: Use a nonzero tolerance for ``test_anchored_direction_arrows_many_args`` unconditionally +* :ghpull:`32221`: Qt IconEngine: Use a device pixel ratio of 1 when high-DPI pixmaps are disabled +* :ghpull:`32216`: Backport PR #32212 on branch v3.11.x (TST: Convert all non-RGB(A) images to RGBA) +* :ghpull:`32212`: TST: Convert all non-RGB(A) images to RGBA +* :ghpull:`32182`: Bump the actions group with 4 updates +* :ghpull:`32197`: Backport PR #32196 on branch v3.11.x (Clarify interval semantics in BoundaryNorm documentation) +* :ghpull:`32196`: Clarify interval semantics in BoundaryNorm documentation +* :ghpull:`32190`: Backport PR #32183 on branch v3.11.x (ci: Make eslint check fail on errors) +* :ghpull:`32183`: ci: Make eslint check fail on errors +* :ghpull:`32184`: Backport PR #32181 on branch v3.11.x (ci: Add environment variable to detect Azure Pipelines) +* :ghpull:`32181`: ci: Add environment variable to detect Azure Pipelines +* :ghpull:`32180`: Backport PR #32179 on branch v3.11.x (Document and fix ``AngleAnnotation`` constructor default case of using the current Axes) +* :ghpull:`32179`: Document and fix ``AngleAnnotation`` constructor default case of using the current Axes +* :ghpull:`32177`: Backport PR #32150 on branch v3.11.x (FIX: Avoid unbounded allocations for float markevery) +* :ghpull:`32150`: FIX: Avoid unbounded allocations for float markevery +* :ghpull:`32173`: Backport PR #32172 on branch v3.11.x (PERF: Avoid ``difflib`` lookup in ``ColormapRegistry.register``) +* :ghpull:`32172`: PERF: Avoid ``difflib`` lookup in ``ColormapRegistry.register`` +* :ghpull:`32171`: Backport PR #32158 on branch v3.11.x (Fix tiny wx plot window on wxPython 4.3) +* :ghpull:`32158`: Fix tiny wx plot window on wxPython 4.3 +* :ghpull:`32170`: Backport PR #32168 on branch v3.11.x (DOC: Use raw strings instead of doubling \\ for hatches where possible) +* :ghpull:`32167`: Backport PR #32155 on branch v3.11.x (Bump the actions group with 6 updates) +* :ghpull:`32169`: ci: Drop some extraneous setup-python invocations +* :ghpull:`32168`: DOC: Use raw strings instead of doubling \\ for hatches where possible +* :ghpull:`32155`: Bump the actions group with 6 updates +* :ghpull:`32153`: Backport PR #32149 on branch v3.11.x (Always set device pixel ratio on WebSocket open in WebAgg) +* :ghpull:`32152`: Backport PR #32078 on branch v3.11.x (DOC: Clarify backslash escaping for hatch patterns) +* :ghpull:`32151`: Backport PR #32062 on branch v3.11.x (Don't pre-allocate the Type1 /Subrs array from the declared count) +* :ghpull:`32149`: Always set device pixel ratio on WebSocket open in WebAgg +* :ghpull:`32062`: Don't pre-allocate the Type1 /Subrs array from the declared count +* :ghpull:`32078`: DOC: Clarify backslash escaping for hatch patterns +* :ghpull:`32134`: Backport PR #32132 on branch v3.11.x (Add source directory config to rstcheck and bump requirement) +* :ghpull:`32132`: Add source directory config to rstcheck and bump requirement +* :ghpull:`32131`: Backport PR #32049 on branch v3.11.x (DOC: clarify source of Cn colors) +* :ghpull:`32049`: DOC: clarify source of Cn colors +* :ghpull:`32123`: Backport PR #32048 on branch v3.11.x (FIX: update Axis3d artist positions before calculating tight_bbox) +* :ghpull:`32048`: FIX: update Axis3d artist positions before calculating tight_bbox +* :ghpull:`32118`: Backport PR #32115 on branch v3.11.x (Bump the actions group across 1 directory with 6 updates) +* :ghpull:`32115`: Bump the actions group across 1 directory with 6 updates +* :ghpull:`32112`: Backport PR #31978 on branch v3.11.x (Bump the pre-commit group across 1 directory with 3 updates) +* :ghpull:`32057`: Bump the actions group with 4 updates +* :ghpull:`31978`: Bump the pre-commit group across 1 directory with 3 updates +* :ghpull:`32102`: Backport PR #32101 on branch v3.11.x (Cairo: Switch back to character codes for mathtext) +* :ghpull:`32101`: Cairo: Switch back to character codes for mathtext +* :ghpull:`32090`: Backport PR #32069 on branch v3.11.x (FIX: remove warning when clearing axes with shared axis) +* :ghpull:`32088`: Backport PR #32087 on branch v3.11.x (DOC: Fixing typo in units documentation for pyplot figuresize units) +* :ghpull:`32069`: FIX: remove warning when clearing axes with shared axis +* :ghpull:`32087`: DOC: Fixing typo in units documentation for pyplot figuresize units +* :ghpull:`32083`: Backport PR #32058 on branch v3.11.x (MNT: Fix handling of ints in hsv_to_rgb()) +* :ghpull:`32058`: MNT: Fix handling of ints in hsv_to_rgb() +* :ghpull:`32070`: Backport PR #32066 on branch v3.11.x (Fix crash on prime after single-character superscript) +* :ghpull:`32066`: Fix crash on prime after single-character superscript + +Issues (18): + +* :ghissue:`31999`: [Bug]: PDF backend culls visible ``hexbin`` cells after path collection optimization +* :ghissue:`32261`: [Bug]: ``count_bboxes_overlapping_bbox()`` segfaults on a malformed ragged bbox +* :ghissue:`32224`: [Bug]: ``FT2Font.load_char()`` segfaults (null-pointer dereference) +* :ghissue:`15491`: Hatch line width ignored with pgf backend +* :ghissue:`32240`: [Bug]: AxesImage redraws ~2x slower in 3.11 than in 3.10 +* :ghissue:`32222`: [Bug]: TextBox widget raises AttributeError on ResizeEvent +* :ghissue:`32219`: [Bug]: ax.scatter([], [], clip_on=False, label=...) renders a ghost marker at the origin/corner when combined with specific styles/limits +* :ghissue:`32186`: [Bug]: GIF frames become skewed when using PillowWriter in matplotlib 3.11.1 +* :ghissue:`32105`: [Bug]: Cryptic Mathtext ParseException on \text with double curly braces +* :ghissue:`32208`: [Bug]: Wheel's freetype binding can conflict with system library +* :ghissue:`32217`: [Bug]: Oversized Qt5 toolbar icons on macOS Retina display since Matplotlib 3.11 +* :ghissue:`32133`: [Bug]: MemoryError in _mark_every_path (with float markevery) when extreme zooming in +* :ghissue:`32143`: [Bug]: tiny plot window opens with wxPython 4.3 +* :ghissue:`32144`: [Bug]: WebAgg figures can become permanently broken on displays with device pixel ratio of 1 +* :ghissue:`31962`: [Bug]: Type1Font allocates /Subrs array from declared count before validating the body +* :ghissue:`32004`: [Bug]: set_prop_cycle does not affect Cn colors +* :ghissue:`31277`: [Bug]: 3D ax1's tick labels and ax2's title overlap in a constrained layout +* :ghissue:`32084`: [Bug]: Exponential numbers on axis look like 10Σ² instead of 10⁻² with backend_gtk3cairo Previous GitHub statistics diff --git a/doc/release/prev_whats_new/github_stats_3.11.1.rst b/doc/release/prev_whats_new/github_stats_3.11.1.rst new file mode 100644 index 000000000000..998e0cd19d2c --- /dev/null +++ b/doc/release/prev_whats_new/github_stats_3.11.1.rst @@ -0,0 +1,137 @@ +.. redirect-from:: /users/github_stats_3.11.1 + +.. _github-stats-3-11-1: + +GitHub statistics for 3.11.1 (Jul 17, 2026) +=========================================== + +GitHub statistics for 2026/06/11 (tag: v3.11.0) - 2026/07/17 + +These lists are automatically generated, and may be incomplete or contain duplicates. + +We closed 16 issues and merged 70 pull requests. +The full list can be seen `on GitHub `__ + +The following 27 authors contributed 70 commits. + +* Albert Y. Shih +* cyphercodes +* David Stansby +* dependabot[bot] +* eeshsaxena +* Elliott Sales de Andrade +* Erik Vo +* goutamadwant +* hannah +* Håkon Steinkopf Søhoel +* jaya prajapati +* Jody Klymak +* Kyle Sunden +* Lumberbot (aka Jack) +* Mervin Yap +* Mustafa Senoglu +* Rayan Salhab +* Ricci Adams +* Ruth Comer +* Scolliq +* Scott Shambaugh +* Thomas A Caswell +* Tim Hoffmann +* Uwez Khan +* uwezkhan +* Vincent Gao +* Zhou Qiankang + +GitHub issues and pull requests: + +Pull Requests (70): + +* :ghpull:`32052`: Backport PR #32038 on branch v3.11.x (Fix occasional misalignment in reported mouse position (also fixes a bug with canvas height)) +* :ghpull:`32050`: Backport PR #31304 on branch v3.11.x (Fix restoring 'auto' aspect in 3D axes after switching from 'equal') +* :ghpull:`32051`: Backport PR #32037 on branch v3.11.x (Bump the actions group with 3 updates) +* :ghpull:`32038`: Fix occasional misalignment in reported mouse position (also fixes a bug with canvas height) +* :ghpull:`32037`: Bump the actions group with 3 updates +* :ghpull:`31304`: Fix restoring 'auto' aspect in 3D axes after switching from 'equal' +* :ghpull:`32047`: Backport PR #32025 on branch v3.11.x (DOC: remove rcparams listing from user guide ) +* :ghpull:`32025`: DOC: remove rcparams listing from user guide +* :ghpull:`32046`: Backport PR #32045 on branch v3.11.x (DOC: added ffmpeg to optional doc dependencies) +* :ghpull:`32034`: Backport PR #31975 on branch v3.11.x (pdf/ps: Stop retaining glyph indices in font subsets) +* :ghpull:`32045`: DOC: added ffmpeg to optional doc dependencies +* :ghpull:`32043`: Backport PR #32042 on branch v3.11.x (DOC: Remove warning about macosx backend) +* :ghpull:`32042`: DOC: Remove warning about macosx backend +* :ghpull:`32036`: Backport PR #31894 on branch v3.11.x (check transform mesh shape in _get_transform_mesh) +* :ghpull:`31894`: check transform mesh shape in _get_transform_mesh +* :ghpull:`31975`: pdf/ps: Stop retaining glyph indices in font subsets +* :ghpull:`32033`: Backport PR #32032 on branch v3.11.x (MNT: remove redundant imports) +* :ghpull:`32031`: Backport PR #31967 on branch v3.11.x (Fix NoNorm cursor formatting for uint8 images) +* :ghpull:`32032`: MNT: remove redundant imports +* :ghpull:`32030`: Backport PR #31990 on branch v3.11.x (DOC fix parameter name in CharacterMapping.add docstring) +* :ghpull:`31967`: Fix NoNorm cursor formatting for uint8 images +* :ghpull:`32027`: Backport PR #32022 on branch v3.11.x (Remove deprecated freethreading option from cibuildwheel) +* :ghpull:`32021`: Backport PR #31992 on branch v3.11.x (Fix: Axis and grid panes out of sync when inverting an axis) +* :ghpull:`32024`: Backport PR #32013 on branch v3.11.x (DOC: Document ax.transData and ax.transAxes) +* :ghpull:`32022`: Remove deprecated freethreading option from cibuildwheel +* :ghpull:`32013`: DOC: Document ax.transData and ax.transAxes +* :ghpull:`31992`: Fix: Axis and grid panes out of sync when inverting an axis +* :ghpull:`32010`: Backport PR #32009 on branch v3.11.x (DOC: Fix outdated text in image_resampling example) +* :ghpull:`32009`: DOC: Fix outdated text in image_resampling example +* :ghpull:`32007`: Backport PR #31994 on branch v3.11.x (Bump the actions group across 1 directory with 9 updates) +* :ghpull:`31994`: Bump the actions group across 1 directory with 9 updates +* :ghpull:`31990`: DOC fix parameter name in CharacterMapping.add docstring +* :ghpull:`31988`: Backport PR #31985 on branch v3.11.x (DOC: Fix broken configobj link in 0.99.x API changes) +* :ghpull:`31985`: DOC: Fix broken configobj link in 0.99.x API changes +* :ghpull:`31972`: Backport PR #31932 on branch v3.11.x (FIX: include axis labels in get_tightbbox when not for_layout_only) +* :ghpull:`31932`: FIX: include axis labels in get_tightbbox when not for_layout_only +* :ghpull:`31970`: Backport PR #31969 on branch v3.11.x (Stop passing symlinks to ImageMagick) +* :ghpull:`31969`: Stop passing symlinks to ImageMagick +* :ghpull:`31950`: Backport PR #31857 on branch v3.11.x (bound ft2font stream read to the requested count) +* :ghpull:`31951`: Backport PR #30252 on branch v3.11.x (Move cibuildwheel configuration to pyproject.toml) +* :ghpull:`31952`: Backport PR #31928 on branch v3.11.x (Fix notdef handling when subsetting Type 1 fonts) +* :ghpull:`31958`: Backport PR #31940 on branch v3.11.x (Add loongarch64 image comparison tolerances) +* :ghpull:`31959`: Backport PR #31910 on branch v3.11.x (FIX: Add mtext into RendererBase._draw_as_path() arguments) +* :ghpull:`31910`: FIX: Add mtext into RendererBase._draw_as_path() arguments +* :ghpull:`31948`: Backport PR #31946 on branch v3.11.x (TST: Increase some tolerances for non-x86_64 architectures) +* :ghpull:`31940`: Add loongarch64 image comparison tolerances +* :ghpull:`31928`: Fix notdef handling when subsetting Type 1 fonts +* :ghpull:`30252`: Move cibuildwheel configuration to pyproject.toml +* :ghpull:`31857`: bound ft2font stream read to the requested count +* :ghpull:`31946`: TST: Increase some tolerances for non-x86_64 architectures +* :ghpull:`31945`: Backport PR #31920 on branch v3.11.x (Fix various small type hint issues) +* :ghpull:`31944`: Backport PR #31943 on branch v3.11.x (FIX: allow non-strict monotonicity in LinearSegmented.from_list values) +* :ghpull:`31920`: Fix various small type hint issues +* :ghpull:`31941`: Backport PR #31931 on branch v3.11.x (TST: address pikepdf deprecation) +* :ghpull:`31943`: FIX: allow non-strict monotonicity in LinearSegmented.from_list values +* :ghpull:`31931`: TST: address pikepdf deprecation +* :ghpull:`31921`: Backport PR #31906 on branch v3.11.x (TST: unpin pytest) +* :ghpull:`31906`: TST: unpin pytest +* :ghpull:`31915`: Backport PR #31898 on branch v3.11.x (fix: allow array-like fill_between where masks) +* :ghpull:`31908`: Backport of PRs #31678 and #31782 +* :ghpull:`31882`: Bump the actions group with 3 updates +* :ghpull:`31898`: fix: allow array-like fill_between where masks +* :ghpull:`31911`: Backport PR #31904 on branch v3.11.x (DOC: clarify valid inputs and return type of ``same_color``) +* :ghpull:`31904`: DOC: clarify valid inputs and return type of ``same_color`` +* :ghpull:`31893`: Backport PR #31885 on branch v3.11.x (Skip hidden y-axis offset text when positioning titles (fix #31881)) +* :ghpull:`31900`: Backport PR #31896 on branch v3.11.x (TST: temporarily pin pytest) +* :ghpull:`31896`: TST: temporarily pin pytest +* :ghpull:`31885`: Skip hidden y-axis offset text when positioning titles (fix #31881) +* :ghpull:`31782`: Bump the actions group across 1 directory with 4 updates +* :ghpull:`31678`: Bump the actions group with 2 updates + +Issues (16): + +* :ghissue:`15363`: Reliably set the output image size +* :ghissue:`27570`: [Bug]: QuadMesh.get_cursor_data() returns incorrect value +* :ghissue:`31276`: [Bug]: Setting aspect back to auto cannot recover the original 3D plot +* :ghissue:`31955`: [Bug]: PDF Type 42 output regression in 3.11: excessive font embedding and fl rendered as a ligature +* :ghissue:`31960`: [Bug]: imshow uint8 image with colors.NoNorm() causes OverflowError when mousing over figure +* :ghissue:`25220`: [Doc]: Better document Axes.transData and other transXYZ attributes +* :ghissue:`31989`: [Bug]: Axis and grid panes out of sync, regression in 3.11 +* :ghissue:`29541`: [Doc]: A few problems on Image resampling page +* :ghissue:`31568`: [Bug]: savefig(bbox_inches='tight') clips axis labels on 3D axes +* :ghissue:`28117`: [Bug]: The zlabel on 3D axes will be cut when using '%matplotlib inline' in Jupyter +* :ghissue:`31927`: [Bug]: ``path_effects`` on text gives an error in matplotlib 3.11 +* :ghissue:`31925`: [Bug]: minus signs not rendered in PDF export with TeX +* :ghissue:`31939`: [Bug]: Regression in 3.11.0 with LinearSegmentedColormap +* :ghissue:`31897`: [MNT]: unpin pytest +* :ghissue:`31890`: [Bug]: Type hints for where argument in ax.fill_between does not allow np.ndarrays +* :ghissue:`31881`: [Bug]: ValueError ("cannot convert float NaN to integer") when trying to show horizontally-stacked subplots diff --git a/doc/release/release_notes.rst b/doc/release/release_notes.rst index faa2672b8560..d5c82c6d8295 100644 --- a/doc/release/release_notes.rst +++ b/doc/release/release_notes.rst @@ -21,6 +21,7 @@ Version 3.11 prev_whats_new/whats_new_3.11.0.rst ../api/prev_api_changes/api_changes_3.11.0.rst github_stats.rst + prev_whats_new/github_stats_3.11.1.rst prev_whats_new/github_stats_3.11.0.rst Version 3.10 From b76fea990aa10afdba9225ee0f058d942cfcb770 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 10 Sep 2026 18:21:30 -0400 Subject: [PATCH 08/10] DOC: Set current version to 3.11.2 --- doc/_static/switcher.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/_static/switcher.json b/doc/_static/switcher.json index 94b8d5ee39c4..7eab89c213a1 100644 --- a/doc/_static/switcher.json +++ b/doc/_static/switcher.json @@ -1,7 +1,7 @@ [ { "name": "3.11 (stable)", - "version": "3.11.1", + "version": "3.11.2", "url": "https://matplotlib.org/stable/", "preferred": true }, From d3ca9172e392048ec242b90e8423e88d1a3000b2 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Thu, 10 Sep 2026 19:17:28 -0400 Subject: [PATCH 09/10] REL: v3.11.2 This is the second bugfix release of the 3.11.x series. This release contains several bug-fixes and adjustments: - Speed up RGBA-stage image resampling - Fix `hexbin` clipping in PDF output - Fix `\text` with internal braces - Fix some crashes and make some checks more robust to unlikely cases - Fix frame skew when saving GIF animations with `PillowWriter` - Fix HiDPI handling in Qt toolbar and WebAgg embeddings - Fix `ResizeEvent` handling for `TextBox` - Fix bug with PGF hatch linewidth and color - Fix a bug with drawing an empty Collection - Fix incorrect glyphs in Cairo backends - Improve build system to prevent conflicts between wheels and system libraries From 879ad8ebba3ba5b62ba1b5cedfb7c7f54e85b3a5 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Fri, 11 Sep 2026 14:00:39 -0400 Subject: [PATCH 10/10] DOC: Add Zenodo DOI for 3.11.2 Also add a User-Agent to the script as I was getting a 403 Forbidden without it. --- doc/_static/zenodo_cache/22700776.svg | 35 +++++++++++++++++++++++++++ doc/project/citing.rst | 3 +++ tools/cache_zenodo_svg.py | 3 ++- 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 doc/_static/zenodo_cache/22700776.svg diff --git a/doc/_static/zenodo_cache/22700776.svg b/doc/_static/zenodo_cache/22700776.svg new file mode 100644 index 000000000000..1529241eea6c --- /dev/null +++ b/doc/_static/zenodo_cache/22700776.svg @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + DOI + + + DOI + + + 10.5281/zenodo.22700776 + + + 10.5281/zenodo.22700776 + + + \ No newline at end of file diff --git a/doc/project/citing.rst b/doc/project/citing.rst index 96f44f7b2daa..f24b01f89389 100644 --- a/doc/project/citing.rst +++ b/doc/project/citing.rst @@ -32,6 +32,9 @@ By version .. START OF AUTOGENERATED +v3.11.2 + .. image:: ../_static/zenodo_cache/22700776.svg + :target: https://doi.org/10.5281/zenodo.22700776 v3.11.1 .. image:: ../_static/zenodo_cache/21422872.svg :target: https://doi.org/10.5281/zenodo.21422872 diff --git a/tools/cache_zenodo_svg.py b/tools/cache_zenodo_svg.py index 17393dd94787..b9eae09ca6bc 100644 --- a/tools/cache_zenodo_svg.py +++ b/tools/cache_zenodo_svg.py @@ -31,7 +31,7 @@ def download_or_cache(url, version): return BytesIO(data) with urllib.request.urlopen( - urllib.request.Request(url, headers={"User-Agent": ""}) + urllib.request.Request(url, headers={"User-Agent": "Python"}) ) as req: data = req.read() @@ -63,6 +63,7 @@ def _get_xdg_cache_dir(): if __name__ == "__main__": data = { + "v3.11.2": "22700776", "v3.11.1": "21422872", "v3.11.0": "20654446", "v3.10.9": "19716234",