diff --git a/.gitignore b/.gitignore index 63cbb40..d5d85dd 100644 --- a/.gitignore +++ b/.gitignore @@ -92,3 +92,7 @@ matplotlib-1.0.0-without-gpc.tar.gz /matplotlib-3.6.3.tar.gz /pgf_pdflatex.pdf /pgf_rcupdate2.pdf +/matplotlib-3.7.0rc1.tar.gz +/matplotlib-3.7.0rc1-with-freetype-2.12.1.tar.gz +/matplotlib-3.7.0.tar.gz +/matplotlib-3.7.0-with-freetype-2.12.1.tar.gz diff --git a/0001-matplotlibrc-path-search-fix.patch b/0001-matplotlibrc-path-search-fix.patch index 8fe90f1..81fb8d2 100644 --- a/0001-matplotlibrc-path-search-fix.patch +++ b/0001-matplotlibrc-path-search-fix.patch @@ -1,7 +1,7 @@ -From 3e43f06eaad8cdb48d30b4cbe23a881c6fa5c1ff Mon Sep 17 00:00:00 2001 +From ddfa1c59d9304eed3a70abcc98c6e1786ce3d751 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Wed, 27 Sep 2017 19:35:59 -0400 -Subject: [PATCH 1/4] matplotlibrc path search fix +Subject: [PATCH 1/7] matplotlibrc path search fix Signed-off-by: Elliott Sales de Andrade --- @@ -9,10 +9,10 @@ Signed-off-by: Elliott Sales de Andrade 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/__init__.py b/lib/matplotlib/__init__.py -index 77d25bbe33..9786447e23 100644 +index b279c46516..27de76f0c4 100644 --- a/lib/matplotlib/__init__.py +++ b/lib/matplotlib/__init__.py -@@ -540,7 +540,8 @@ def get_cachedir(): +@@ -566,7 +566,8 @@ def get_cachedir(): @_logged_cached('matplotlib data path: %s') def get_data_path(): """Return the path to Matplotlib data.""" @@ -22,7 +22,7 @@ index 77d25bbe33..9786447e23 100644 def matplotlib_fname(): -@@ -560,6 +561,7 @@ def matplotlib_fname(): +@@ -586,6 +587,7 @@ def matplotlib_fname(): is not defined) - On other platforms, - ``$HOME/.matplotlib/matplotlibrc`` if ``$HOME`` is defined @@ -30,7 +30,7 @@ index 77d25bbe33..9786447e23 100644 - Lastly, it looks in ``$MATPLOTLIBDATA/matplotlibrc``, which should always exist. """ -@@ -578,6 +580,7 @@ def matplotlib_fname(): +@@ -604,6 +606,7 @@ def matplotlib_fname(): yield matplotlibrc yield os.path.join(matplotlibrc, 'matplotlibrc') yield os.path.join(get_configdir(), 'matplotlibrc') @@ -39,5 +39,5 @@ index 77d25bbe33..9786447e23 100644 for fname in gen_candidates(): -- -2.36.1 +2.39.2 diff --git a/0002-Don-t-require-oldest-supported-numpy.patch b/0002-Don-t-require-oldest-supported-numpy.patch new file mode 100644 index 0000000..752d223 --- /dev/null +++ b/0002-Don-t-require-oldest-supported-numpy.patch @@ -0,0 +1,26 @@ +From a183eed4c8d341af938a49bb646a14f64df0c180 Mon Sep 17 00:00:00 2001 +From: Elliott Sales de Andrade +Date: Thu, 26 Jan 2023 06:40:06 -0500 +Subject: [PATCH 2/7] Don't require oldest-supported-numpy + +Signed-off-by: Elliott Sales de Andrade +--- + pyproject.toml | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/pyproject.toml b/pyproject.toml +index 907b05a39b..81e3d80035 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -2,7 +2,7 @@ + build-backend = "setuptools.build_meta" + requires = [ + "certifi>=2020.06.20", +- "oldest-supported-numpy", ++ "numpy", + "pybind11>=2.6", + "setuptools_scm>=7", + ] +-- +2.39.2 + diff --git a/0002-Set-FreeType-version-to-2.12.1-and-update-tolerances.patch b/0002-Set-FreeType-version-to-2.12.1-and-update-tolerances.patch deleted file mode 100644 index b1a282c..0000000 --- a/0002-Set-FreeType-version-to-2.12.1-and-update-tolerances.patch +++ /dev/null @@ -1,157 +0,0 @@ -From c7f6a197992cfd989fddb858afcde5abcdecf70e Mon Sep 17 00:00:00 2001 -From: Elliott Sales de Andrade -Date: Fri, 14 Feb 2020 06:05:42 -0500 -Subject: [PATCH 2/4] Set FreeType version to 2.12.1 and update tolerances. - -Signed-off-by: Elliott Sales de Andrade ---- - lib/matplotlib/__init__.py | 2 +- - lib/matplotlib/tests/test_axes.py | 4 ++-- - lib/matplotlib/tests/test_constrainedlayout.py | 6 +++--- - lib/matplotlib/tests/test_polar.py | 2 +- - lib/matplotlib/tests/test_tightlayout.py | 10 +++++----- - setupext.py | 15 +++++++++++++-- - 6 files changed, 25 insertions(+), 14 deletions(-) - -diff --git a/lib/matplotlib/__init__.py b/lib/matplotlib/__init__.py -index 9786447e23..56266f0688 100644 ---- a/lib/matplotlib/__init__.py -+++ b/lib/matplotlib/__init__.py -@@ -1213,7 +1213,7 @@ default_test_modules = [ - def _init_tests(): - # The version of FreeType to install locally for running the - # tests. This must match the value in `setupext.py` -- LOCAL_FREETYPE_VERSION = '2.6.1' -+ LOCAL_FREETYPE_VERSION = '2.12.1' - - from matplotlib import ft2font - if (ft2font.__freetype_version__ != LOCAL_FREETYPE_VERSION or -diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py -index 8d6466c749..c8604b8657 100644 ---- a/lib/matplotlib/tests/test_axes.py -+++ b/lib/matplotlib/tests/test_axes.py -@@ -7210,7 +7210,7 @@ def test_normal_axes(): - ] - for nn, b in enumerate(bbaxis): - targetbb = mtransforms.Bbox.from_bounds(*target[nn]) -- assert_array_almost_equal(b.bounds, targetbb.bounds, decimal=2) -+ assert_array_almost_equal(b.bounds, targetbb.bounds, decimal=0) - - target = [ - [150.0, 119.999, 930.0, 11.111], -@@ -7228,7 +7228,7 @@ def test_normal_axes(): - - target = [85.5138, 75.88888, 1021.11, 1017.11] - targetbb = mtransforms.Bbox.from_bounds(*target) -- assert_array_almost_equal(bbtb.bounds, targetbb.bounds, decimal=2) -+ assert_array_almost_equal(bbtb.bounds, targetbb.bounds, decimal=0) - - # test that get_position roundtrips to get_window_extent - axbb = ax.get_position().transformed(fig.transFigure).bounds -diff --git a/lib/matplotlib/tests/test_constrainedlayout.py b/lib/matplotlib/tests/test_constrainedlayout.py -index 64906b74c3..bfa53cd430 100644 ---- a/lib/matplotlib/tests/test_constrainedlayout.py -+++ b/lib/matplotlib/tests/test_constrainedlayout.py -@@ -431,7 +431,7 @@ def test_hidden_axes(): - extents1 = np.copy(axs[0, 0].get_position().extents) - - np.testing.assert_allclose( -- extents1, [0.045552, 0.543288, 0.47819, 0.982638], rtol=1e-5) -+ extents1, [0.045552, 0.543288, 0.47819, 0.982638], rtol=1e-2) - - - def test_colorbar_align(): -@@ -637,7 +637,7 @@ def test_compressed1(): - fig.draw_without_rendering() - - pos = axs[0, 0].get_position() -- np.testing.assert_allclose(pos.x0, 0.2344, atol=1e-3) -+ np.testing.assert_allclose(pos.x0, 0.2344, atol=1e-2) - pos = axs[0, 1].get_position() - np.testing.assert_allclose(pos.x1, 0.7024, atol=1e-3) - -@@ -652,7 +652,7 @@ def test_compressed1(): - - pos = axs[0, 0].get_position() - np.testing.assert_allclose(pos.x0, 0.06195, atol=1e-3) -- np.testing.assert_allclose(pos.y1, 0.8537, atol=1e-3) -+ np.testing.assert_allclose(pos.y1, 0.8537, atol=1e-2) - pos = axs[1, 2].get_position() - np.testing.assert_allclose(pos.x1, 0.8618, atol=1e-3) - np.testing.assert_allclose(pos.y0, 0.1934, atol=1e-3) -diff --git a/lib/matplotlib/tests/test_polar.py b/lib/matplotlib/tests/test_polar.py -index c51508ae22..942ffcb521 100644 ---- a/lib/matplotlib/tests/test_polar.py -+++ b/lib/matplotlib/tests/test_polar.py -@@ -314,7 +314,7 @@ def test_get_tightbbox_polar(): - fig.canvas.draw() - bb = ax.get_tightbbox(fig.canvas.get_renderer()) - assert_allclose( -- bb.extents, [107.7778, 29.2778, 539.7847, 450.7222], rtol=1e-03) -+ bb.extents, [107.7778, 29.2778, 539.7847, 450.7222], rtol=1) - - - @check_figures_equal(extensions=["png"]) -diff --git a/lib/matplotlib/tests/test_tightlayout.py b/lib/matplotlib/tests/test_tightlayout.py -index 1eb7b4b453..697eba3211 100644 ---- a/lib/matplotlib/tests/test_tightlayout.py -+++ b/lib/matplotlib/tests/test_tightlayout.py -@@ -173,12 +173,12 @@ def test_outward_ticks(): - plt.tight_layout() - # These values were obtained after visual checking that they correspond - # to a tight layouting that did take the ticks into account. -- ans = [[[0.091, 0.607], [0.433, 0.933]], -- [[0.579, 0.607], [0.922, 0.933]], -- [[0.091, 0.140], [0.433, 0.466]], -- [[0.579, 0.140], [0.922, 0.466]]] -+ ans = [[[0.09, 0.61], [0.43, 0.93]], -+ [[0.58, 0.61], [0.92, 0.93]], -+ [[0.09, 0.14], [0.43, 0.47]], -+ [[0.58, 0.14], [0.92, 0.47]]] - for nn, ax in enumerate(fig.axes): -- assert_array_equal(np.round(ax.get_position().get_points(), 3), -+ assert_array_equal(np.round(ax.get_position().get_points(), 2), - ans[nn]) - - -diff --git a/setupext.py b/setupext.py -index 0387223b94..13096a812c 100644 ---- a/setupext.py -+++ b/setupext.py -@@ -168,13 +168,23 @@ _freetype_hashes = { - '955e17244e9b38adb0c98df66abb50467312e6bb70eac07e49ce6bd1a20e809a', - '2.10.1': - '3a60d391fd579440561bf0e7f31af2222bc610ad6ce4d9d7bd2165bca8669110', -+ '2.10.2': -+ 'e09aa914e4f7a5d723ac381420949c55c0b90b15744adce5d1406046022186ab', -+ '2.10.4': -+ '5eab795ebb23ac77001cfb68b7d4d50b5d6c7469247b0b01b2c953269f658dac', -+ '2.11.0': -+ 'a45c6b403413abd5706f3582f04c8339d26397c4304b78fa552f2215df64101f', - '2.11.1': -- 'f8db94d307e9c54961b39a1cc799a67d46681480696ed72ecf78d4473770f09b' -+ 'f8db94d307e9c54961b39a1cc799a67d46681480696ed72ecf78d4473770f09b', -+ '2.12.0': -+ '7940a46eeb0255baaa87c553d72778c4f8daa2b8888c8e2a05766a2a8686740c', -+ '2.12.1': -+ 'efe71fd4b8246f1b0b1b9bfca13cfff1c9ad85930340c27df469733bbb620938', - } - # This is the version of FreeType to use when building a local version. It - # must match the value in lib/matplotlib.__init__.py, and the cache path in - # `.circleci/config.yml`. --TESTING_VERSION_OF_FREETYPE = '2.6.1' -+TESTING_VERSION_OF_FREETYPE = '2.12.1' - if sys.platform.startswith('win') and platform.machine() == 'ARM64': - # older versions of freetype are not supported for win/arm64 - # Matplotlib tests will not pass -@@ -584,6 +594,7 @@ class FreeType(SetupPackage): - ext.extra_objects.insert( - 0, str(src_path / 'objs' / '.libs' / libfreetype)) - ext.define_macros.append(('FREETYPE_BUILD_TYPE', 'local')) -+ ext.libraries.append('brotlidec') - - def do_custom_build(self, env): - # We're using a system freetype --- -2.36.1 - diff --git a/0003-Increase-a-few-test-tolerances-on-some-arches.patch b/0003-Increase-a-few-test-tolerances-on-some-arches.patch deleted file mode 100644 index 8585368..0000000 --- a/0003-Increase-a-few-test-tolerances-on-some-arches.patch +++ /dev/null @@ -1,145 +0,0 @@ -From 0939c27b1d47cabd19c09fc09f15ef4fb18331b4 Mon Sep 17 00:00:00 2001 -From: Elliott Sales de Andrade -Date: Tue, 24 Aug 2021 04:47:50 -0400 -Subject: [PATCH 3/4] Increase a few test tolerances on some arches. - -Signed-off-by: Elliott Sales de Andrade ---- - lib/matplotlib/tests/test_axes.py | 6 ++++-- - lib/matplotlib/tests/test_backend_pgf.py | 2 +- - lib/matplotlib/tests/test_colorbar.py | 5 ++++- - lib/matplotlib/tests/test_contour.py | 3 ++- - lib/matplotlib/tests/test_image.py | 4 ++-- - lib/matplotlib/tests/test_lines.py | 4 +++- - lib/matplotlib/tests/test_mathtext.py | 7 +++++-- - 7 files changed, 21 insertions(+), 10 deletions(-) - -diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py -index c8604b8657..da72bb9415 100644 ---- a/lib/matplotlib/tests/test_axes.py -+++ b/lib/matplotlib/tests/test_axes.py -@@ -1031,7 +1031,8 @@ def test_imshow(): - ax.imshow("r", data=data) - - --@image_comparison(['imshow_clip'], style='mpl20') -+@image_comparison(['imshow_clip'], style='mpl20', -+ tol=0 if platform.machine() == 'x86_64' else 1.24) - def test_imshow_clip(): - # As originally reported by Gellule Xg - # use former defaults to match existing baseline image -@@ -2340,7 +2341,8 @@ def test_contour_hatching(): - extend='both', alpha=0.5) - - --@image_comparison(['contour_colorbar'], style='mpl20') -+@image_comparison(['contour_colorbar'], style='mpl20', -+ tol=0 if platform.machine() == 'x86_64' else 0.02) - def test_contour_colorbar(): - x, y, z = contour_dat() - -diff --git a/lib/matplotlib/tests/test_colorbar.py b/lib/matplotlib/tests/test_colorbar.py -index 4336b761f6..7d3927408b 100644 ---- a/lib/matplotlib/tests/test_colorbar.py -+++ b/lib/matplotlib/tests/test_colorbar.py -@@ -1,3 +1,5 @@ -+import platform -+ - import numpy as np - import pytest - -@@ -233,7 +235,8 @@ def test_colorbar_single_ax_panchor_east(constrained): - assert ax.get_anchor() == 'E' - - --@image_comparison(['contour_colorbar.png'], remove_text=True) -+@image_comparison(['contour_colorbar.png'], remove_text=True, -+ tol=0 if platform.machine() == 'x86_64' else 0.01) - def test_contour_colorbar(): - fig, ax = plt.subplots(figsize=(4, 2)) - data = np.arange(1200).reshape(30, 40) - 500 -diff --git a/lib/matplotlib/tests/test_contour.py b/lib/matplotlib/tests/test_contour.py -index 8bf77f0d54..82c0b09ac3 100644 ---- a/lib/matplotlib/tests/test_contour.py -+++ b/lib/matplotlib/tests/test_contour.py -@@ -319,7 +319,8 @@ def test_contourf_log_extension(): - - - @image_comparison(['contour_addlines.png'], -- remove_text=True, style='mpl20', tol=0.03) -+ remove_text=True, style='mpl20', -+ tol=0.03 if platform.machine() == 'x86_64' else 0.15) - # tolerance is because image changed minutely when tick finding on - # colorbars was cleaned up... - def test_contour_addlines(): -diff --git a/lib/matplotlib/tests/test_image.py b/lib/matplotlib/tests/test_image.py -index 46dbe4cfe8..268473c6c0 100644 ---- a/lib/matplotlib/tests/test_image.py -+++ b/lib/matplotlib/tests/test_image.py -@@ -1322,8 +1322,8 @@ def test_nonuniform_and_pcolor(): - ax.set(xlim=(0, 10)) - - --@image_comparison(["rgba_antialias.png"], style="mpl20", -- remove_text=True) -+@image_comparison(["rgba_antialias.png"], style="mpl20", remove_text=True, -+ tol=0 if platform.machine() == 'x86_64' else 0.007) - def test_rgba_antialias(): - fig, axs = plt.subplots(2, 2, figsize=(3.5, 3.5), sharex=False, - sharey=False, constrained_layout=True) -diff --git a/lib/matplotlib/tests/test_lines.py b/lib/matplotlib/tests/test_lines.py -index e7002df8a5..8738fd94a0 100644 ---- a/lib/matplotlib/tests/test_lines.py -+++ b/lib/matplotlib/tests/test_lines.py -@@ -3,6 +3,7 @@ Tests specific to the lines module. - """ - - import itertools -+import platform - import timeit - from types import SimpleNamespace - -@@ -165,7 +166,8 @@ def test_set_drawstyle(): - assert len(line.get_path().vertices) == len(x) - - --@image_comparison(['line_collection_dashes'], remove_text=True, style='mpl20') -+@image_comparison(['line_collection_dashes'], remove_text=True, style='mpl20', -+ tol=0 if platform.machine() == 'x86_64' else 0.62) - def test_set_line_coll_dash_image(): - fig, ax = plt.subplots() - np.random.seed(0) -diff --git a/lib/matplotlib/tests/test_mathtext.py b/lib/matplotlib/tests/test_mathtext.py -index 7f8b06fa0e..d7d5e687fe 100644 ---- a/lib/matplotlib/tests/test_mathtext.py -+++ b/lib/matplotlib/tests/test_mathtext.py -@@ -1,5 +1,6 @@ - import io - from pathlib import Path -+import platform - import re - import shlex - from xml.etree import ElementTree as ET -@@ -198,7 +199,8 @@ def baseline_images(request, fontset, index, text): - @pytest.mark.parametrize( - 'fontset', ['cm', 'stix', 'stixsans', 'dejavusans', 'dejavuserif']) - @pytest.mark.parametrize('baseline_images', ['mathtext'], indirect=True) --@image_comparison(baseline_images=None) -+@image_comparison(baseline_images=None, -+ tol=0.011 if platform.machine() in ('ppc64le', 's390x') else 0) - def test_mathtext_rendering(baseline_images, fontset, index, text): - mpl.rcParams['mathtext.fontset'] = fontset - fig = plt.figure(figsize=(5.25, 0.75)) -@@ -239,7 +241,8 @@ def test_mathtext_rendering_lightweight(baseline_images, fontset, index, text): - @pytest.mark.parametrize( - 'fontset', ['cm', 'stix', 'stixsans', 'dejavusans', 'dejavuserif']) - @pytest.mark.parametrize('baseline_images', ['mathfont'], indirect=True) --@image_comparison(baseline_images=None, extensions=['png']) -+@image_comparison(baseline_images=None, extensions=['png'], -+ tol=0.011 if platform.machine() in ('ppc64le', 's390x') else 0) - def test_mathfont_rendering(baseline_images, fontset, index, text): - mpl.rcParams['mathtext.fontset'] = fontset - fig = plt.figure(figsize=(5.25, 0.75)) --- -2.36.1 - diff --git a/0003-Set-FreeType-version-to-2.12.1-and-update-tolerances.patch b/0003-Set-FreeType-version-to-2.12.1-and-update-tolerances.patch new file mode 100644 index 0000000..25ef6c5 --- /dev/null +++ b/0003-Set-FreeType-version-to-2.12.1-and-update-tolerances.patch @@ -0,0 +1,178 @@ +From 13103ca6deedcc82a8c22cee56688c10e18ee30e Mon Sep 17 00:00:00 2001 +From: Elliott Sales de Andrade +Date: Fri, 14 Feb 2020 06:05:42 -0500 +Subject: [PATCH 3/7] Set FreeType version to 2.12.1 and update tolerances + +Signed-off-by: Elliott Sales de Andrade +--- + lib/matplotlib/__init__.py | 2 +- + lib/matplotlib/tests/test_axes.py | 4 ++-- + lib/matplotlib/tests/test_constrainedlayout.py | 8 ++++---- + lib/matplotlib/tests/test_legend.py | 4 ++-- + lib/matplotlib/tests/test_polar.py | 2 +- + lib/matplotlib/tests/test_tightlayout.py | 10 +++++----- + setupext.py | 15 +++++++++++++-- + 7 files changed, 28 insertions(+), 17 deletions(-) + +diff --git a/lib/matplotlib/__init__.py b/lib/matplotlib/__init__.py +index 27de76f0c4..179d7ed1ff 100644 +--- a/lib/matplotlib/__init__.py ++++ b/lib/matplotlib/__init__.py +@@ -1284,7 +1284,7 @@ def is_interactive(): + def _init_tests(): + # The version of FreeType to install locally for running the + # tests. This must match the value in `setupext.py` +- LOCAL_FREETYPE_VERSION = '2.6.1' ++ LOCAL_FREETYPE_VERSION = '2.12.1' + + from matplotlib import ft2font + if (ft2font.__freetype_version__ != LOCAL_FREETYPE_VERSION or +diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py +index 8bf6051b3e..2072056d9e 100644 +--- a/lib/matplotlib/tests/test_axes.py ++++ b/lib/matplotlib/tests/test_axes.py +@@ -7388,7 +7388,7 @@ def test_normal_axes(): + ] + for nn, b in enumerate(bbaxis): + targetbb = mtransforms.Bbox.from_bounds(*target[nn]) +- assert_array_almost_equal(b.bounds, targetbb.bounds, decimal=2) ++ assert_array_almost_equal(b.bounds, targetbb.bounds, decimal=0) + + target = [ + [150.0, 119.999, 930.0, 11.111], +@@ -7406,7 +7406,7 @@ def test_normal_axes(): + + target = [85.5138, 75.88888, 1021.11, 1017.11] + targetbb = mtransforms.Bbox.from_bounds(*target) +- assert_array_almost_equal(bbtb.bounds, targetbb.bounds, decimal=2) ++ assert_array_almost_equal(bbtb.bounds, targetbb.bounds, decimal=0) + + # test that get_position roundtrips to get_window_extent + axbb = ax.get_position().transformed(fig.transFigure).bounds +diff --git a/lib/matplotlib/tests/test_constrainedlayout.py b/lib/matplotlib/tests/test_constrainedlayout.py +index b0833052ad..c087baa0d5 100644 +--- a/lib/matplotlib/tests/test_constrainedlayout.py ++++ b/lib/matplotlib/tests/test_constrainedlayout.py +@@ -431,7 +431,7 @@ def test_hidden_axes(): + extents1 = np.copy(axs[0, 0].get_position().extents) + + np.testing.assert_allclose( +- extents1, [0.045552, 0.543288, 0.47819, 0.982638], rtol=1e-5) ++ extents1, [0.045552, 0.543288, 0.47819, 0.982638], rtol=1e-2) + + + def test_colorbar_align(): +@@ -637,7 +637,7 @@ def test_compressed1(): + fig.draw_without_rendering() + + pos = axs[0, 0].get_position() +- np.testing.assert_allclose(pos.x0, 0.2344, atol=1e-3) ++ np.testing.assert_allclose(pos.x0, 0.2344, atol=1e-2) + pos = axs[0, 1].get_position() + np.testing.assert_allclose(pos.x1, 0.7024, atol=1e-3) + +@@ -652,10 +652,10 @@ def test_compressed1(): + + pos = axs[0, 0].get_position() + np.testing.assert_allclose(pos.x0, 0.06195, atol=1e-3) +- np.testing.assert_allclose(pos.y1, 0.8537, atol=1e-3) ++ np.testing.assert_allclose(pos.y1, 0.8537, atol=1e-2) + pos = axs[1, 2].get_position() + np.testing.assert_allclose(pos.x1, 0.8618, atol=1e-3) +- np.testing.assert_allclose(pos.y0, 0.1934, atol=1e-3) ++ np.testing.assert_allclose(pos.y0, 0.1934, atol=1e-2) + + + @pytest.mark.parametrize('arg, state', [ +diff --git a/lib/matplotlib/tests/test_legend.py b/lib/matplotlib/tests/test_legend.py +index a8d7fd107d..cbca9e93e9 100644 +--- a/lib/matplotlib/tests/test_legend.py ++++ b/lib/matplotlib/tests/test_legend.py +@@ -522,9 +522,9 @@ def test_figure_legend_outside(): + fig.draw_without_rendering() + + assert_allclose(axs.get_window_extent().extents, +- axbb[nn]) ++ axbb[nn], rtol=1) + assert_allclose(leg.get_window_extent().extents, +- legbb[nn]) ++ legbb[nn], rtol=1) + + + @image_comparison(['legend_stackplot.png']) +diff --git a/lib/matplotlib/tests/test_polar.py b/lib/matplotlib/tests/test_polar.py +index 1f8e6a75ba..ace40f5526 100644 +--- a/lib/matplotlib/tests/test_polar.py ++++ b/lib/matplotlib/tests/test_polar.py +@@ -321,7 +321,7 @@ def test_get_tightbbox_polar(): + fig.canvas.draw() + bb = ax.get_tightbbox(fig.canvas.get_renderer()) + assert_allclose( +- bb.extents, [107.7778, 29.2778, 539.7847, 450.7222], rtol=1e-03) ++ bb.extents, [107.7778, 29.2778, 539.7847, 450.7222], rtol=1) + + + @check_figures_equal(extensions=["png"]) +diff --git a/lib/matplotlib/tests/test_tightlayout.py b/lib/matplotlib/tests/test_tightlayout.py +index 968f0da7b5..89caa81b98 100644 +--- a/lib/matplotlib/tests/test_tightlayout.py ++++ b/lib/matplotlib/tests/test_tightlayout.py +@@ -173,12 +173,12 @@ def test_outward_ticks(): + plt.tight_layout() + # These values were obtained after visual checking that they correspond + # to a tight layouting that did take the ticks into account. +- ans = [[[0.091, 0.607], [0.433, 0.933]], +- [[0.579, 0.607], [0.922, 0.933]], +- [[0.091, 0.140], [0.433, 0.466]], +- [[0.579, 0.140], [0.922, 0.466]]] ++ ans = [[[0.09, 0.61], [0.43, 0.93]], ++ [[0.58, 0.61], [0.92, 0.93]], ++ [[0.09, 0.14], [0.43, 0.47]], ++ [[0.58, 0.14], [0.92, 0.47]]] + for nn, ax in enumerate(fig.axes): +- assert_array_equal(np.round(ax.get_position().get_points(), 3), ++ assert_array_equal(np.round(ax.get_position().get_points(), 2), + ans[nn]) + + +diff --git a/setupext.py b/setupext.py +index a898d642d6..26cd6fe277 100644 +--- a/setupext.py ++++ b/setupext.py +@@ -176,13 +176,23 @@ _freetype_hashes = { + '955e17244e9b38adb0c98df66abb50467312e6bb70eac07e49ce6bd1a20e809a', + '2.10.1': + '3a60d391fd579440561bf0e7f31af2222bc610ad6ce4d9d7bd2165bca8669110', ++ '2.10.2': ++ 'e09aa914e4f7a5d723ac381420949c55c0b90b15744adce5d1406046022186ab', ++ '2.10.4': ++ '5eab795ebb23ac77001cfb68b7d4d50b5d6c7469247b0b01b2c953269f658dac', ++ '2.11.0': ++ 'a45c6b403413abd5706f3582f04c8339d26397c4304b78fa552f2215df64101f', + '2.11.1': +- 'f8db94d307e9c54961b39a1cc799a67d46681480696ed72ecf78d4473770f09b' ++ 'f8db94d307e9c54961b39a1cc799a67d46681480696ed72ecf78d4473770f09b', ++ '2.12.0': ++ '7940a46eeb0255baaa87c553d72778c4f8daa2b8888c8e2a05766a2a8686740c', ++ '2.12.1': ++ 'efe71fd4b8246f1b0b1b9bfca13cfff1c9ad85930340c27df469733bbb620938', + } + # This is the version of FreeType to use when building a local version. It + # must match the value in lib/matplotlib.__init__.py, and the cache path in + # `.circleci/config.yml`. +-TESTING_VERSION_OF_FREETYPE = '2.6.1' ++TESTING_VERSION_OF_FREETYPE = '2.12.1' + if sys.platform.startswith('win') and platform.machine() == 'ARM64': + # older versions of freetype are not supported for win/arm64 + # Matplotlib tests will not pass +@@ -597,6 +607,7 @@ class FreeType(SetupPackage): + ext.extra_objects.insert( + 0, str(src_path / 'objs' / '.libs' / libfreetype)) + ext.define_macros.append(('FREETYPE_BUILD_TYPE', 'local')) ++ ext.libraries.append('brotlidec') + + def do_custom_build(self, env): + # We're using a system freetype +-- +2.39.2 + diff --git a/0004-Use-old-stride_windows-implementation-on-32-bit-x86.patch b/0004-Use-old-stride_windows-implementation-on-32-bit-x86.patch index c07882c..b7af91e 100644 --- a/0004-Use-old-stride_windows-implementation-on-32-bit-x86.patch +++ b/0004-Use-old-stride_windows-implementation-on-32-bit-x86.patch @@ -1,7 +1,7 @@ -From 77d0ef4bac7e14da704556a6f1f99962b0864a6a Mon Sep 17 00:00:00 2001 +From b019c8ef0d18c67ddb0350b8821fcbe93ad2ee84 Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Mon, 22 Aug 2022 18:43:28 -0400 -Subject: [PATCH 4/4] Use old stride_windows implementation on 32-bit x86 +Subject: [PATCH 4/7] Use old stride_windows implementation on 32-bit x86 Signed-off-by: Elliott Sales de Andrade --- @@ -9,7 +9,7 @@ Signed-off-by: Elliott Sales de Andrade 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/mlab.py b/lib/matplotlib/mlab.py -index 5e85a9c119..d75acf6d26 100644 +index 059cf0f162..943eb18e6f 100644 --- a/lib/matplotlib/mlab.py +++ b/lib/matplotlib/mlab.py @@ -52,6 +52,7 @@ Spectral functions @@ -32,5 +32,5 @@ index 5e85a9c119..d75acf6d26 100644 raise ValueError('noverlap must be less than n') return np.lib.stride_tricks.sliding_window_view( -- -2.36.1 +2.39.2 diff --git a/0006-Fix-setting-CSS-with-latest-GTK4.patch b/0006-Fix-setting-CSS-with-latest-GTK4.patch new file mode 100644 index 0000000..5218341 --- /dev/null +++ b/0006-Fix-setting-CSS-with-latest-GTK4.patch @@ -0,0 +1,39 @@ +From 49484f456c93830c25dc7d4afe2110da8450a485 Mon Sep 17 00:00:00 2001 +From: Elliott Sales de Andrade +Date: Tue, 21 Feb 2023 20:52:42 -0500 +Subject: [PATCH 6/7] Fix setting CSS with latest GTK4 + +In the upcoming 4.10 release, the type annotation was fixed [1]. There +may be some overrides added in PyGObject [2] to avoid this difference, +but we don't depend on a specific version of it to be able to rely on +that (and it's not released yet.) This code should work with the +override as well. + +[1] https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/5441 +[2] https://gitlab.gnome.org/GNOME/pygobject/-/merge_requests/231 + +Signed-off-by: Elliott Sales de Andrade +--- + lib/matplotlib/backends/backend_gtk4.py | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/lib/matplotlib/backends/backend_gtk4.py b/lib/matplotlib/backends/backend_gtk4.py +index 8628e14de0..3288192920 100644 +--- a/lib/matplotlib/backends/backend_gtk4.py ++++ b/lib/matplotlib/backends/backend_gtk4.py +@@ -74,7 +74,11 @@ class FigureCanvasGTK4(_FigureCanvasGTK, Gtk.DrawingArea): + self.set_focusable(True) + + css = Gtk.CssProvider() +- css.load_from_data(b".matplotlib-canvas { background-color: white; }") ++ style = '.matplotlib-canvas { background-color: white; }' ++ if Gtk.check_version(4, 9, 3) is None: ++ css.load_from_data(style, -1) ++ else: ++ css.load_from_data(style.encode('utf-8')) + style_ctx = self.get_style_context() + style_ctx.add_provider(css, Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) + style_ctx.add_class("matplotlib-canvas") +-- +2.39.2 + diff --git a/0007-TST-Increase-test_set_line_coll_dash_image-tolerance.patch b/0007-TST-Increase-test_set_line_coll_dash_image-tolerance.patch new file mode 100644 index 0000000..8774158 --- /dev/null +++ b/0007-TST-Increase-test_set_line_coll_dash_image-tolerance.patch @@ -0,0 +1,27 @@ +From 254394ebc1413a363a678ed589adcd30cc986e0c Mon Sep 17 00:00:00 2001 +From: Elliott Sales de Andrade +Date: Mon, 27 Feb 2023 22:19:23 -0500 +Subject: [PATCH 7/7] TST: Increase test_set_line_coll_dash_image tolerance + slightly. + +Signed-off-by: Elliott Sales de Andrade +--- + lib/matplotlib/tests/test_lines.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/matplotlib/tests/test_lines.py b/lib/matplotlib/tests/test_lines.py +index 7eecf5675a..b75d3c01b2 100644 +--- a/lib/matplotlib/tests/test_lines.py ++++ b/lib/matplotlib/tests/test_lines.py +@@ -185,7 +185,7 @@ def test_set_drawstyle(): + + @image_comparison( + ['line_collection_dashes'], remove_text=True, style='mpl20', +- tol=0.62 if platform.machine() in ('aarch64', 'ppc64le', 's390x') else 0) ++ tol=0.65 if platform.machine() in ('aarch64', 'ppc64le', 's390x') else 0) + def test_set_line_coll_dash_image(): + fig, ax = plt.subplots() + np.random.seed(0) +-- +2.39.2 + diff --git a/python-matplotlib.spec b/python-matplotlib.spec index 15d2c5e..3e2a973 100644 --- a/python-matplotlib.spec +++ b/python-matplotlib.spec @@ -30,14 +30,14 @@ %global _docdir_fmt %{name} # Updated test images for new FreeType. -%global mpl_images_version 3.6.1 +%global mpl_images_version 3.7.0 # The version of FreeType in this Fedora branch. %global ftver 2.12.1 Name: python-matplotlib -Version: 3.6.3 -%global Version 3.6.3 +Version: 3.7.0 +%global Version 3.7.0 Release: %autorelease Summary: Python 2D plotting library # qt_editor backend is MIT @@ -53,15 +53,19 @@ Source1: mplsetup.cfg Source1000: https://github.com/QuLogic/mpl-images/archive/v%{mpl_images_version}-with-freetype-%{ftver}/matplotlib-%{mpl_images_version}-with-freetype-%{ftver}.tar.gz # Search in /etc/matplotlibrc: Patch1001: 0001-matplotlibrc-path-search-fix.patch +Patch1002: 0002-Don-t-require-oldest-supported-numpy.patch # Increase tolerances for new FreeType everywhere: -Patch1002: 0002-Set-FreeType-version-to-%{ftver}-and-update-tolerances.patch -Patch1003: 0003-Increase-a-few-test-tolerances-on-some-arches.patch +Patch1003: 0003-Set-FreeType-version-to-%{ftver}-and-update-tolerances.patch # https://github.com/matplotlib/matplotlib/pull/21190#issuecomment-1223271888 Patch0001: 0004-Use-old-stride_windows-implementation-on-32-bit-x86.patch # https://github.com/matplotlib/matplotlib/pull/25068 Source2000: pgf_pdflatex.pdf Source2001: pgf_rcupdate2.pdf +# https://github.com/matplotlib/matplotlib/pull/25280 +Patch0002: 0006-Fix-setting-CSS-with-latest-GTK4.patch +# https://github.com/matplotlib/matplotlib/pull/25341 +Patch0003: 0007-TST-Increase-test_set_line_coll_dash_image-tolerance.patch BuildRequires: gcc BuildRequires: gcc-c++ @@ -300,19 +304,22 @@ Requires: python3-matplotlib%{?_isa} = %{version}-%{release} # Fedora-specific patches follow: %patch1001 -p1 -# Updated test images for new FreeType. %patch1002 -p1 -gzip -dc %SOURCE1000 | tar xf - --transform='s~^mpl-images-%{mpl_images_version}-with-freetype-%{ftver}/\([^/]\+\)/~lib/\1/tests/baseline_images/~' +# Updated test images for new FreeType. +%patch1003 -p1 +gzip -dc %SOURCE1000 | tar xf - --transform='s~^mpl-images-%{mpl_images_version}-with-freetype-%{ftver}/~~' # Copy mplsetup.cfg to the builddir cp -p %{SOURCE1} mplsetup.cfg -%patch1003 -p1 - # Backports or reported upstream %patch0001 -p1 # https://github.com/matplotlib/matplotlib/pull/25068 cp -a %SOURCE2000 %SOURCE2001 lib/matplotlib/tests/baseline_images/test_backend_pgf/ +# https://github.com/matplotlib/matplotlib/pull/25280 +%patch0002 -p1 +# https://github.com/matplotlib/matplotlib/pull/25341 +%patch0003 -p1 %generate_buildrequires @@ -327,7 +334,7 @@ MPLCONFIGDIR=$PWD %pyproject_wheel %if %{with html} # Need to make built matplotlib libs available for the sphinx extensions: MPLCONFIGDIR=$PWD \ -PYTHONPATH="%{pyprojec_site_lib}" \ +PYTHONPATH="%{pyproject_site_lib}" \ make -C doc html %endif # Ensure all example files are non-executable so that the -doc @@ -378,7 +385,7 @@ MPLCONFIGDIR=$PWD \ env %{pytest} -ra -n auto \ -m 'not network' \ -k 'not test_invisible_Line_rendering and not test_form_widget_get_with_datetime_and_date_fields' \ - --pyargs matplotlib mpl_toolkits.tests + --pyargs matplotlib mpl_toolkits.axes_grid1 mpl_toolkits.axisartist mpl_toolkits.mplot3d %endif @@ -401,13 +408,13 @@ MPLCONFIGDIR=$PWD \ %files -n python3-matplotlib %license LICENSE/ -%doc README.rst +%doc README.md %{python3_sitearch}/matplotlib-*.dist-info/ %{python3_sitearch}/matplotlib-*-nspkg.pth %{python3_sitearch}/matplotlib/ %exclude %{python3_sitearch}/matplotlib/tests/baseline_images/* %{python3_sitearch}/mpl_toolkits/ -%exclude %{python3_sitearch}/mpl_toolkits/tests/baseline_images/* +%exclude %{python3_sitearch}/mpl_toolkits/*/tests/baseline_images/* %pycached %{python3_sitearch}/pylab.py %pycached %exclude %{python3_sitearch}/matplotlib/backends/backend_qt5*.py %pycached %exclude %{python3_sitearch}/matplotlib/backends/backend_gtk*.py @@ -421,7 +428,7 @@ MPLCONFIGDIR=$PWD \ %files -n python3-matplotlib-test-data %{python3_sitearch}/matplotlib/tests/baseline_images/ -%{python3_sitearch}/mpl_toolkits/tests/baseline_images/ +%{python3_sitearch}/mpl_toolkits/*/tests/baseline_images/ %files -n python3-matplotlib-qt5 %pycached %{python3_sitearch}/matplotlib/backends/backend_qt5*.py diff --git a/sources b/sources index 5a551fc..9e4ec8d 100644 --- a/sources +++ b/sources @@ -1,4 +1,4 @@ -SHA512 (matplotlib-3.6.3.tar.gz) = 844ca90bcc9953d3d1289a6d471180a3dadb49c75eb59858bbbfb67d4b1292b83b86b366f22ab12d9e97c980376d48b86e745607ec4e812a3010c6fec01398dc -SHA512 (matplotlib-3.6.1-with-freetype-2.12.1.tar.gz) = 9210cfe8db2743519188d924dfd5f4ec4a0b5ae589b8a596f5a35b900234fa3a2fe81a047fc486ec69359259685438f4c19bb96a63ca0f544d2f48fbabb1326e +SHA512 (matplotlib-3.7.0.tar.gz) = 60207fb10394422b7a11faffb2775c23c377e6dd72ef9f3fde1099d50e1810c4be55cf814da74fd87faf49a628459472945bb901a4cbe73c9676df54b862ad5c +SHA512 (matplotlib-3.7.0-with-freetype-2.12.1.tar.gz) = 7c70aaba58d4fcc0bea4f8bc76de71e899c71ceca937ee983531ad79d5604568d8e370bd913bef96ab103903fbc1c5f9318eb5c589fbc33cb2d48b39a04bbb21 SHA512 (pgf_pdflatex.pdf) = dc81cc2247f54a2aaf9507ce1db556d91170674796b564d32bfb4c23f38effab6543394cb6caee3c29a32639c9d848517b400d1cac8d20f90678367818a62aa1 SHA512 (pgf_rcupdate2.pdf) = 8c0a71047871a055de01a4f0a90aeda9da27e53338d1e89cb20bd52bc54e40a1180df933de0f27c9116d3e983d03b0c47008bebfcf110cf282f8d1d19c026070