Accepting request 979442 from devel:languages:python:numeric

OBS-URL: https://build.opensuse.org/request/show/979442
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-matplotlib?expand=0&rev=94
This commit is contained in:
Dominique Leuenberger 2022-05-30 10:42:37 +00:00 committed by Git OBS Bridge
commit e28dbb0d47
6 changed files with 86 additions and 136 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b2e9810e09c3a47b73ce9cab5a72243a1258f61e7900969097a817232246ce1c
size 35320470

3
matplotlib-3.5.2.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:48cf850ce14fa18067f2d9e0d646763681948487a8080ec0af2686468b4607a2
size 35210006

View File

@ -1,128 +0,0 @@
From 0205618d243c2c9ac43fc66558daae9364c394d0 Mon Sep 17 00:00:00 2001
From: Oscar Gustafsson <oscar.gustafsson@gmail.com>
Date: Mon, 4 Apr 2022 17:50:15 +0200
Subject: [PATCH 1/2] Backport PR #22766: FIX: account for constant
deprecations in Pillow 9.1
---
azure-pipelines.yml | 3 +++
lib/matplotlib/animation.py | 18 ++++++++++--------
lib/matplotlib/backends/backend_pdf.py | 9 +++++++--
3 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 2c794033a494..c9a3ec83b70d 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -134,6 +134,9 @@ stages:
- script: env
displayName: 'print env'
+ - script: pip list
+ displayName: 'print pip'
+
- bash: |
PYTHONFAULTHANDLER=1 python -m pytest --junitxml=junit/test-results.xml -raR --maxfail=50 --timeout=300 --durations=25 --cov-report= --cov=lib -n 2 ||
[[ "$PYTHON_VERSION" = 'Pre' ]]
diff --git a/lib/matplotlib/animation.py b/lib/matplotlib/animation.py
index 879aa945b00d..4eae790d8200 100644
--- a/lib/matplotlib/animation.py
+++ b/lib/matplotlib/animation.py
@@ -17,6 +17,7 @@
# * Can blit be enabled for movies?
# * Need to consider event sources to allow clicking through multiple figures
+
import abc
import base64
import contextlib
@@ -481,14 +482,15 @@ def grab_frame(self, **savefig_kwargs):
def finish(self):
# Call run here now that all frame grabbing is done. All temp files
# are available to be assembled.
- self._run()
- super().finish() # Will call clean-up
-
- def _cleanup(self): # Inline to finish() once cleanup() is removed.
- super()._cleanup()
- if self._tmpdir:
- _log.debug('MovieWriter: clearing temporary path=%s', self._tmpdir)
- self._tmpdir.cleanup()
+ try:
+ self._run()
+ super().finish()
+ finally:
+ if self._tmpdir:
+ _log.debug(
+ 'MovieWriter: clearing temporary path=%s', self._tmpdir
+ )
+ self._tmpdir.cleanup()
@writers.register('pillow')
diff --git a/lib/matplotlib/backends/backend_pdf.py b/lib/matplotlib/backends/backend_pdf.py
index 9ca791db0c5a..d035d1680da1 100644
--- a/lib/matplotlib/backends/backend_pdf.py
+++ b/lib/matplotlib/backends/backend_pdf.py
@@ -1718,8 +1718,13 @@ def _writeImg(self, data, id, smask=None):
# Convert to indexed color if there are 256 colors or fewer
# This can significantly reduce the file size
num_colors = len(img_colors)
- img = img.convert(mode='P', dither=Image.NONE,
- palette=Image.ADAPTIVE, colors=num_colors)
+ # These constants were converted to IntEnums and deprecated in
+ # Pillow 9.2
+ dither = getattr(Image, 'Dither', Image).NONE
+ pmode = getattr(Image, 'Palette', Image).ADAPTIVE
+ img = img.convert(
+ mode='P', dither=dither, palette=pmode, colors=num_colors
+ )
png_data, bit_depth, palette = self._writePng(img)
if bit_depth is None or palette is None:
raise RuntimeError("invalid PNG header")
From 520120b1646a16f82c3f1f392c9f8b084a0fec23 Mon Sep 17 00:00:00 2001
From: Oscar Gustafsson <oscar.gustafsson@gmail.com>
Date: Mon, 4 Apr 2022 18:13:01 +0200
Subject: [PATCH 2/2] Revert the clenaup changes
---
lib/matplotlib/animation.py | 18 ++++++++----------
1 file changed, 8 insertions(+), 10 deletions(-)
diff --git a/lib/matplotlib/animation.py b/lib/matplotlib/animation.py
index 4eae790d8200..879aa945b00d 100644
--- a/lib/matplotlib/animation.py
+++ b/lib/matplotlib/animation.py
@@ -17,7 +17,6 @@
# * Can blit be enabled for movies?
# * Need to consider event sources to allow clicking through multiple figures
-
import abc
import base64
import contextlib
@@ -482,15 +481,14 @@ def grab_frame(self, **savefig_kwargs):
def finish(self):
# Call run here now that all frame grabbing is done. All temp files
# are available to be assembled.
- try:
- self._run()
- super().finish()
- finally:
- if self._tmpdir:
- _log.debug(
- 'MovieWriter: clearing temporary path=%s', self._tmpdir
- )
- self._tmpdir.cleanup()
+ self._run()
+ super().finish() # Will call clean-up
+
+ def _cleanup(self): # Inline to finish() once cleanup() is removed.
+ super()._cleanup()
+ if self._tmpdir:
+ _log.debug('MovieWriter: clearing temporary path=%s', self._tmpdir)
+ self._tmpdir.cleanup()
@writers.register('pillow')

View File

@ -0,0 +1,60 @@
From 29ce2c226aafc170cb9b874e81b158c832322cf7 Mon Sep 17 00:00:00 2001
From: Jody Klymak <jklymak@gmail.com>
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)

View File

@ -1,3 +1,18 @@
-------------------------------------------------------------------
Thu May 26 16:23:46 UTC 2022 - Ben Greiner <code@bnavigator.de>
- 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 <dmueller@suse.com>
- update to 3.5.2:
* Preliminary support for Windows on arm64 target has been added; this
requires FreeType 2.11 or above.
- drop matplotlib-pr22780-Pillow-deprecations.patch (upstream)
-------------------------------------------------------------------
Tue Apr 12 21:15:39 UTC 2022 - Ben Greiner <code@bnavigator.de>

View File

@ -31,7 +31,7 @@ ExclusiveArch: x86_64 aarch64
%bcond_with test
%endif
Name: python-matplotlib%{psuffix}
Version: 3.5.1
Version: 3.5.2
Release: 0
Summary: Plotting Library for Python
License: SUSE-Matplotlib
@ -41,8 +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-pr22780-Pillow-deprecations.patch -- gh#matplotlib/matplotlib#22780
Patch1: https://github.com/matplotlib/matplotlib/pull/22780.patch#/matplotlib-pr22780-Pillow-deprecations.patch
# 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}
@ -93,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}
@ -290,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 \