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 +}
