guix_mirror_bot pushed a commit to branch python-team
in repository guix.
commit 7daf347f9a05aeff6e5acbbe6acd9578cccb96e5
Author: Sharlatan Hellseher <[email protected]>
AuthorDate: Mon Dec 8 22:37:16 2025 +0000
gnu: python-scipy: Update to 1.16.3.
* gnu/packages/python-science.scm (python-scipy): Update to 1.16.3.
[arguments] <test-flags>: Use Pytest directly, as seen in project's
GitHub Actions.
<phases>: Remove 'apply-i686-patch; add 'relax-requirements,
'hide-gfortran; rework custom 'check to run Pytest directly.
[native-inputs]: Remove gcc, python-cython-0; add python-cython, and
python-hypothesis.
[inputs]: Remove pybind11-2.10; add boost, pybind11, qhull, and xsimd.
* gnu/packages/patches/python-scipy-i686.patch: Delete file.
* gnu/local.mk (dist_patch_DATA): Deregister patch.
Change-Id: Ibc38577b9b0c915e54ca3b3096727c9c2f82e19c
---
gnu/local.mk | 1 -
gnu/packages/patches/python-scipy-i686.patch | 49 --------------
gnu/packages/python-science.scm | 97 +++++++++++++++++++++-------
3 files changed, 74 insertions(+), 73 deletions(-)
diff --git a/gnu/local.mk b/gnu/local.mk
index 93f3505894..62c4e87e7c 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2196,7 +2196,6 @@ dist_patch_DATA =
\
%D%/packages/patches/python-pytorch-system-libraries.patch \
%D%/packages/patches/python-pytorch-without-kineto.patch \
%D%/packages/patches/python-robotframework-sshlibrary-rf5-compat.patch \
- %D%/packages/patches/python-scipy-i686.patch \
%D%/packages/patches/python-vaex-core-fix-tsl-use.patch \
%D%/packages/patches/python-vega-datasets-remove-la-riots-code.patch \
%D%/packages/patches/python-versioneer-guix-support.patch \
diff --git a/gnu/packages/patches/python-scipy-i686.patch
b/gnu/packages/patches/python-scipy-i686.patch
deleted file mode 100644
index 66b5898c17..0000000000
--- a/gnu/packages/patches/python-scipy-i686.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From https://github.com/scipy/scipy/pull/20135
-
-From 53796772ed735c1564863fc7ca8d902acb628167 Mon Sep 17 00:00:00 2001
-From: Ralf Gommers <[email protected]>
-Date: Thu, 22 Feb 2024 09:10:46 +0100
-Subject: [PATCH] MAINT: interpolate: define `F_INT` as `int` rather than
- `npy_int32`
-
-This fixes an incompatible pointer issue that shows up as a warning in
-Windows CI jobs, and is reported to break the build with GCC 14 on
-Fedora 40 in gh-19993.
-
-Using `#define F_INT int` is done in several other submodules; this
-was the only instance of using `npy_int32`.
-
-Closes gh-19993
----
- scipy/interpolate/src/_fitpackmodule.c | 4 ++--
- scipy/interpolate/src/fitpack.pyf | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/scipy/interpolate/src/_fitpackmodule.c
b/scipy/interpolate/src/_fitpackmodule.c
-index 0e913d1c7e43..dc79b2b28833 100644
---- a/scipy/interpolate/src/_fitpackmodule.c
-+++ b/scipy/interpolate/src/_fitpackmodule.c
-@@ -28,8 +28,8 @@ static PyObject *fitpack_error;
-
- #else
-
--#define F_INT npy_int32
--#define F_INT_NPY NPY_INT32
-+#define F_INT int
-+#define F_INT_NPY NPY_INT
- #define F_INT_MAX NPY_MAX_INT32
- #if NPY_BITSOF_SHORT == 32
- #define F_INT_PYFMT "h"
-diff --git a/scipy/interpolate/src/fitpack.pyf
b/scipy/interpolate/src/fitpack.pyf
-index 08cb0c141c98..a9535a83f479 100644
---- a/scipy/interpolate/src/fitpack.pyf
-+++ b/scipy/interpolate/src/fitpack.pyf
-@@ -16,7 +16,7 @@ python module dfitpack ! in
- #ifdef HAVE_ILP64
- typedef npy_int64 F_INT;
- #else
--typedef npy_int32 F_INT;
-+typedef int F_INT;
- #endif
-
- static double dmax(double* seq, F_INT len) {
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 108dc8dd2f..28298c208a 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -3441,47 +3441,95 @@ cross-validation.")
(define-public python-scipy
(package
(name "python-scipy")
- (version "1.12.0")
+ (version "1.16.3")
+ ;; TODO: PyPI archive bundles extra in subprojects:
+ ;; - https://github.com/boostorg/math
+ ;; - https://github.com/scipy/HiGHS
+ ;; - https://github.com/scipy/xsf
+ ;; - qhull
(source
(origin
(method url-fetch)
(uri (pypi-uri "scipy" version))
(sha256
- (base32 "18rn15wg3lp58z204fbjjhy0h79c53yg3c4qqs9h3liniamspxab"))))
+ (base32 "1jxf6mjr3whbh23p8bnlcyiss5rsamq37qgys8xz8qi781cpds01"))))
(build-system pyproject-build-system)
(arguments
(list
+ ;; tests: 78689 passed, 4982 skipped, 319 xfailed, 19 xpassed, 2660
warnings
+ #:configure-flags
+ ''(("setup-args" . #("-Duse-system-libraries=all")))
+ #:test-flags
+ #~(list "--durations=10"
+ "--numprocesses" (number->string (min 4 (parallel-job-count)))
+ "--pyargs" "scipy"
+ "-k" (string-join
+ ;; Network access is requied.
+ (list "not test_ascent"
+ "test_electrocardiogram"
+ "test_existence_all"
+ "test_face"
+ ;; pycparser.ply.yacc.YaccError: Unable to build
parser
+ "test_callbacks"
+ "test_bad_callbacks"
+ ;; AssertionError: Items are not equal: ACTUAL:
+ ;; np.complex128(inf+nanj) DESIRED: (inf+0j)
+ "test_expm1_complex"
+ ;; AssertionError: Not equal to tolerance
rtol=1e-07, atol=0
+ "test_log1p_complex"
+ ;; AssertionError: Not equal to tolerance
rtol=5e-09, atol=0
+
"test_nctdtr_accuracy[3.0-5.0--2.0-1.5645373999149622e-09-5e-09]"
+ ;; Bad results (X out of Y) for the following points
+ ;; (in output 0):
+ "test_spherical_in_complex"
+ "test_spherical_jn_complex"
+ "test_spherical_kn"
+ "test_spherical_yn_complex"
+ ;; Not equal to tolerance rtol=1e-07, atol=0
+ "test_negative_real_gh14582[spherical_in-False]"
+ "test_negative_real_gh14582[spherical_in-True]"
+ "test_negative_real_gh14582[spherical_jn-False]"
+ "test_negative_real_gh14582[spherical_jn-True]"
+ "test_negative_real_gh14582[spherical_yn-False]"
+ "test_negative_real_gh14582[spherical_yn-True]"
+ ;; Failed: DID NOT WARN. No warnings of type (<class
+ ;; 'RuntimeWarning'>,) were emitted.
+ "test_boost_eval_issue_14606")
+ " and not "))
#:phases
#~(modify-phases %standard-phases
- #$@(if (target-x86-32?)
- #~((add-after 'unpack 'apply-i686-patch
- (lambda _
- (let ((patch-file
- #$(local-file
- (search-patch "python-scipy-i686.patch"))))
- (invoke "patch" "--force" "-p1" "-i"
- patch-file)))))
- #~())
+ (add-after 'unpack 'relax-requirements
+ (lambda _
+ (substitute* "meson.build"
+ ;; boost
+ (("1.88.0") "1.89.0"))))
+ (add-after 'set-paths 'hide-gfortran
+ ;; See: <https://issues.guix.gnu.org/73439#45>.
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((gfortran #$(this-package-native-input "gfortran")))
+ (setenv "CPLUS_INCLUDE_PATH"
+ (string-join
+ (delete (string-append gfortran "/include/c++")
+ (string-split (getenv "CPLUS_INCLUDE_PATH")
#\:))
+ ":")))))
(replace 'check
- (lambda* (#:key tests? #:allow-other-keys)
+ (lambda* (#:key test-flags tests? #:allow-other-keys)
(when tests?
;; Step out of the source directory to avoid interference.
+ ;; See: <.github/workflows/linux.yml> for any other posible
+ ;; tests setup.
(with-directory-excursion "/tmp"
- (invoke "python" "-c"
- (string-append
- "import scipy; scipy.test('fast', parallel="
- (number->string (parallel-job-count))
- ", verbose=2)")))))))))
+ (setenv "HOME" "/tmp")
+ (setenv "PYTHONOPTIMIZE" "2")
+ (apply invoke "pytest" "-vv" test-flags))))))))
(native-inputs
(list gfortran
- ;; XXX: Adding gfortran shadows GCC headers, causing a compilation
- ;; failure. Somehow also providing GCC works around it ...
- gcc
meson-python
pkg-config
python-click
- python-cython-0
+ python-cython
python-doit
+ python-hypothesis
python-mpmath
python-numpydoc
python-pooch
@@ -3495,8 +3543,11 @@ cross-validation.")
python-threadpoolctl
python-typing-extensions))
(inputs
- (list openblas
- pybind11-2.10))
+ (list boost
+ openblas
+ pybind11
+ qhull
+ xsimd))
(propagated-inputs
(list python-numpy))
(home-page "https://scipy.org/")