diff --git a/matplotlib-pr22975-fixarray.patch b/matplotlib-pr22975-fixarray.patch new file mode 100644 index 0000000..45a0633 --- /dev/null +++ b/matplotlib-pr22975-fixarray.patch @@ -0,0 +1,60 @@ +From 29ce2c226aafc170cb9b874e81b158c832322cf7 Mon Sep 17 00:00:00 2001 +From: Jody Klymak +Date: Thu, 5 May 2022 04:38:49 +0000 +Subject: [PATCH] FIX: fix check_1d to also check for ndim + +Arrays sometimes don't have all the methods arrays should have, so +add another check here. Plot requires both ndim and shape and this +will extract the numpy array if x does not have those attributes. +Otherwise leave the object alone, because unit support (currently only +in plot) requires the object to retain the unit info. +--- + lib/matplotlib/cbook/__init__.py | 7 ++++++- + lib/matplotlib/tests/test_units.py | 19 +++++++++++++++++++ + 2 files changed, 25 insertions(+), 1 deletion(-) + +diff --git a/lib/matplotlib/cbook/__init__.py b/lib/matplotlib/cbook/__init__.py +index 774643fc9c99..5a955ed459c5 100644 +--- a/lib/matplotlib/cbook/__init__.py ++++ b/lib/matplotlib/cbook/__init__.py +@@ -1333,7 +1333,12 @@ def _check_1d(x): + """Convert scalars to 1D arrays; pass-through arrays as is.""" + # Unpack in case of e.g. Pandas or xarray object + x = _unpack_to_numpy(x) +- if not hasattr(x, 'shape') or len(x.shape) < 1: ++ # plot requires `shape` and `ndim`. If passed an ++ # object that doesn't provide them, then force to numpy array. ++ # Note this will strip unit information. ++ if (not hasattr(x, 'shape') or ++ not hasattr(x, 'ndim') or ++ len(x.shape) < 1): + return np.atleast_1d(x) + else: + return x +diff --git a/lib/matplotlib/tests/test_units.py b/lib/matplotlib/tests/test_units.py +index 93a12cebb2c8..d3b8c5a71643 100644 +--- a/lib/matplotlib/tests/test_units.py ++++ b/lib/matplotlib/tests/test_units.py +@@ -264,3 +264,22 @@ def test_empty_default_limits(quantity_converter): + fig.draw_without_rendering() + assert ax.get_ylim() == (0, 100) + assert ax.get_xlim() == (28.5, 31.5) ++ ++ ++# test array-like objects... ++class Kernel: ++ def __init__(self, array): ++ self._array = np.asanyarray(array) ++ ++ def __array__(self): ++ return self._array ++ ++ @property ++ def shape(self): ++ return self._array.shape ++ ++ ++def test_plot_kernel(): ++ # just a smoketest that fail ++ kernel = Kernel([1, 2, 3, 4, 5]) ++ plt.plot(kernel) diff --git a/python-matplotlib.changes b/python-matplotlib.changes index b9139e7..af010f1 100644 --- a/python-matplotlib.changes +++ b/python-matplotlib.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Thu May 26 16:23:46 UTC 2022 - Ben Greiner + +- Skip a flaky leak test, move sigint test skip to all archs +- Add matplotlib-pr22975-fixarray.patch, + gh#matplotlib/matplotlib#22975, required for astropy 5.1 + ------------------------------------------------------------------- Wed May 4 19:15:13 UTC 2022 - Dirk Müller diff --git a/python-matplotlib.spec b/python-matplotlib.spec index 0cf8910..c54b7d9 100644 --- a/python-matplotlib.spec +++ b/python-matplotlib.spec @@ -41,6 +41,8 @@ Source1: matplotlib-mplsetup.cfg # Bundled version of freetype and qhull for testing purposes only Source98: http://www.qhull.org/download/qhull-2020-src-8.0.2.tgz Source99: https://downloads.sourceforge.net/project/freetype/freetype2/2.6.1/freetype-2.6.1.tar.gz +# PATCH-FIX-UPSTREAM matplotlib-pr22975-fixarray.patch -- gh#matplotlib/matplotlib#22975, required for astropy 5.1 +Patch1: https://github.com/matplotlib/matplotlib/pull/22975.patch#/matplotlib-pr22975-fixarray.patch BuildRequires: %{python_module Cycler >= 0.10} BuildRequires: %{python_module FontTools >= 4.22.0} BuildRequires: %{python_module devel} @@ -91,6 +93,7 @@ BuildRequires: %{python_module matplotlib-testdata = %{version}} BuildRequires: %{python_module matplotlib-tk = %{version}} BuildRequires: %{python_module matplotlib-web = %{version}} BuildRequires: %{python_module matplotlib-wx = %{version}} +BuildRequires: %{python_module psutil} BuildRequires: %{python_module pytest-xdist} BuildRequires: %{python_module pytest-xvfb} BuildRequires: %{python_module pytest} @@ -288,11 +291,13 @@ skip_tests+=" or (test_fig_close and Qt4Agg)" skip_tests+=" or test_invisible_Line_rendering" # too much memory consumption on obs parallel workers skip_tests+=" or (test_agg and chunksize) or test_throw_rendering_complexity_exceeded" +# testing interactive backend leaks inside obs is flaky +skip_tests+=" or (test_backends_interactive and test_figure_leak_20490)" +# flaky signal termination tests inside obs +skip_tests+=" or _sigint" %ifnarch x86_64 # image comparison failures due to precisions dicrepancies to the x86 produced references skip_tests+=" or png or svg or pdf" -# flaky signal termination tests inside obs -skip_tests+=" or _sigint" %endif %{pytest_arch --pyargs matplotlib.tests \ --pyargs mpl_toolkits.tests \