commit:     6ec85d7db64c6fddce9736d67b374e3aebc7ac62
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jun 22 13:21:07 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jun 22 13:23:36 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=6ec85d7d

dev-python/imageio: Backport numpy-2 patch

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 .../imageio/files/imageio-2.34.1-numpy-2.patch     |  36 +++++++
 dev-python/imageio/imageio-2.34.1-r1.ebuild        | 104 +++++++++++++++++++++
 2 files changed, 140 insertions(+)

diff --git a/dev-python/imageio/files/imageio-2.34.1-numpy-2.patch 
b/dev-python/imageio/files/imageio-2.34.1-numpy-2.patch
new file mode 100644
index 000000000000..c5c8288da471
--- /dev/null
+++ b/dev-python/imageio/files/imageio-2.34.1-numpy-2.patch
@@ -0,0 +1,36 @@
+From 511ad9b3705fc09d4654d69e42bbafef97bcb0a8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Sebastian=20Wallk=C3=B6tter?= <[email protected]>
+Date: Sat, 22 Jun 2024 14:56:11 +0200
+Subject: [PATCH] support numpy 2.0
+
+---
+ imageio/core/util.py      | 2 ++
+ imageio/plugins/_dicom.py | 2 +-
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/imageio/core/util.py b/imageio/core/util.py
+index 6b2830421..bfb7e9fe9 100644
+--- a/imageio/core/util.py
++++ b/imageio/core/util.py
+@@ -163,6 +163,8 @@ def __array_wrap__(self, out, context=None):
+             return out.dtype.type(out)  # Scalar
+         elif out.shape != self.shape:
+             return out.view(type=np.ndarray)
++        elif not isinstance(out, Array):
++            return Array(out, self.meta)
+         else:
+             return out  # Type Array
+ 
+diff --git a/imageio/plugins/_dicom.py b/imageio/plugins/_dicom.py
+index 96fb6fcde..2f2f7ac51 100644
+--- a/imageio/plugins/_dicom.py
++++ b/imageio/plugins/_dicom.py
+@@ -531,7 +531,7 @@ def _apply_slope_and_offset(self, data):
+                 data = data.astype(np.float32)
+             else:
+                 # Determine required range
+-                minReq, maxReq = data.min(), data.max()
++                minReq, maxReq = data.min().item(), data.max().item()
+                 minReq = min([minReq, minReq * slope + offset, maxReq * slope 
+ offset])
+                 maxReq = max([maxReq, minReq * slope + offset, maxReq * slope 
+ offset])
+ 

diff --git a/dev-python/imageio/imageio-2.34.1-r1.ebuild 
b/dev-python/imageio/imageio-2.34.1-r1.ebuild
new file mode 100644
index 000000000000..7b5206ac9e00
--- /dev/null
+++ b/dev-python/imageio/imageio-2.34.1-r1.ebuild
@@ -0,0 +1,104 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..12} )
+
+inherit distutils-r1
+
+TEST_IMAGES_COMMIT=1121036015c70cdbb3015e5c5ba0aaaf7d3d6021
+DESCRIPTION="Python library for reading and writing image data"
+HOMEPAGE="
+       https://imageio.readthedocs.io/en/stable/
+       https://github.com/imageio/imageio/
+       https://pypi.org/project/imageio/
+"
+SRC_URI="
+       https://github.com/imageio/imageio/archive/v${PV}.tar.gz
+               -> ${P}.gh.tar.gz
+       test? (
+               
https://github.com/imageio/test_images/archive/${TEST_IMAGES_COMMIT}.tar.gz
+                       -> imageio-test_images-${TEST_IMAGES_COMMIT}.gh.tar.gz
+       )
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+       >=dev-python/numpy-1.20.0[${PYTHON_USEDEP}]
+       >=dev-python/pillow-8.3.2[${PYTHON_USEDEP}]
+       media-libs/freeimage
+"
+BDEPEND="
+       test? (
+               >=dev-python/imageio-ffmpeg-0.4.9-r1[${PYTHON_USEDEP}]
+               dev-python/psutil[${PYTHON_USEDEP}]
+               dev-python/tifffile[${PYTHON_USEDEP}]
+               || (
+                       media-video/ffmpeg[openh264]
+                       media-video/ffmpeg[x264]
+               )
+       )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+       local PATCHES=(
+               # block silently downloading vulnerable libraries from the 
Internet
+               "${FILESDIR}/imageio-2.22.0-block-download.patch"
+               # https://github.com/imageio/imageio/pull/1089
+               "${FILESDIR}/${P}-numpy-2.patch"
+       )
+
+       if use test; then
+               mv "${WORKDIR}/test_images-${TEST_IMAGES_COMMIT}" .test_images 
|| die
+               # upstream tries to update the image cache, and invalidates it
+               # if "git pull" fails
+               sed -i -e 's:git pull:true:' tests/conftest.py || die
+               # ffmpeg tests expect it there
+               mkdir -p "${HOME}/.imageio/images" || die
+               cp .test_images/cockatoo.mp4 "${HOME}/.imageio/images" || die
+       fi
+
+       distutils-r1_src_prepare
+}
+
+python_test() {
+       local EPYTEST_IGNORE=(
+               # uses fsspec to grab prebuilt .so from GitHub, sigh
+               tests/test_freeimage.py
+       )
+
+       local EPYTEST_DESELECT=(
+               # Note: upstream has a needs_internet marker but it is also
+               # used to mark tests that require test_images checkout that we
+               # supply
+
+               # Tries to download ffmpeg binary ?!
+               tests/test_ffmpeg.py::test_get_exe_installed
+               # blocked by our patch
+               tests/test_core.py::test_fetching
+               tests/test_core.py::test_request
+               # Internet
+               tests/test_bsdf.py::test_from_url
+               tests/test_core.py::test_mvolread_out_of_bytes
+               tests/test_core.py::test_request_read_sources
+               tests/test_pillow.py::test_gif_first_p_frame
+               tests/test_pillow.py::test_png_remote
+               tests/test_pillow_legacy.py::test_png_remote
+               tests/test_swf.py::test_read_from_url
+               # requires pillow-heif, also possibly Internet
+               tests/test_pillow.py::test_avif_remote
+               tests/test_pillow.py::test_heif_remote
+               # not important, requires random system libs
+               tests/test_core.py::test_findlib2
+       )
+
+       local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+       epytest
+}

Reply via email to