From 1825ad833745404dc45dd4a3b82386c30db78513 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Sun, 11 Aug 2024 22:53:42 -0300 Subject: [PATCH 1/7] python3-Cython: alternative fix for 6122 --- srcpkgs/python3-Cython/patches/fix-regression.patch | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/srcpkgs/python3-Cython/patches/fix-regression.patch b/srcpkgs/python3-Cython/patches/fix-regression.patch index f2e761608e373b..f5957cfa59c2f5 100644 --- a/srcpkgs/python3-Cython/patches/fix-regression.patch +++ b/srcpkgs/python3-Cython/patches/fix-regression.patch @@ -15,3 +15,11 @@ serious regression, e.g. sagemath FTBS with cython 3.0.11 warning(self.pos, "Implicit noexcept declaration is deprecated." " Function declaration should contain 'noexcept' keyword.", +@@ -3128,6 +3126,7 @@ class DefNode(FuncDefNode): + if scope is None: + scope = cfunc.scope + cfunc_type = cfunc.type ++ has_explicit_exc_clause=True + if len(self.args) != len(cfunc_type.args) or cfunc_type.has_varargs: + error(self.pos, "wrong number of arguments") + error(cfunc.pos, "previous declaration here") From 1f322f47ed3beb3b916289142d680bbe1cb4ea4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Mon, 19 Aug 2024 22:02:54 -0300 Subject: [PATCH 2/7] flintlib: C99 compliance --- srcpkgs/flintlib/patches/2027.patch | 322 ++++++++++++++++++++++++++++ srcpkgs/flintlib/template | 2 +- 2 files changed, 323 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/flintlib/patches/2027.patch diff --git a/srcpkgs/flintlib/patches/2027.patch b/srcpkgs/flintlib/patches/2027.patch new file mode 100644 index 00000000000000..f17ff31f2754d7 --- /dev/null +++ b/srcpkgs/flintlib/patches/2027.patch @@ -0,0 +1,322 @@ +See: https://github.com/flintlib/flint/pull/2027 + +From 1b93e73d00881be12e04b7f13e070214a3c9e1cc Mon Sep 17 00:00:00 2001 +From: Dima Pasechnik +Date: Wed, 19 Jun 2024 22:16:34 +0100 +Subject: [PATCH] ensure C99 compliance in headers, as 'I' is reserved +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Note that the following code +---- cut here: save as t.c +---- cut here + +fails to compile with a suffciently new compiler, e.g. clang 16 or gcc 14. + +$ gcc -c t.c +In file included from t.c:1: +/usr/include/flint/mpoly.h:1319:43: error: expected ‘)’ before ‘__extension__’ + 1319 | void mpoly_gcd_info_init(mpoly_gcd_info_t I, slong nvars); + | ^ +In file included from /usr/include/flint/fmpz_types.h:15, + from /usr/include/flint/fmpz_mod_types.h:15, + from /usr/include/flint/mpoly_types.h:15, + from /usr/include/flint/mpoly.h:23, + from t.c:2: +/usr/include/flint/mpoly.h:1319:46: error: expected ‘;’, ‘,’ or ‘)’ before ‘mp_limb_signed_t’ + 1319 | void mpoly_gcd_info_init(mpoly_gcd_info_t I, slong nvars); + +... +--- + src/fft_small.h | 6 +++--- + src/fmpz_mod_mpoly_factor.h | 8 ++++---- + src/fmpz_mpoly.h | 2 +- + src/fmpz_mpoly_factor.h | 18 +++++++++--------- + src/fq_nmod_mpoly_factor.h | 6 +++--- + src/fq_zech_mpoly_factor.h | 6 +++--- + src/mpoly.h | 18 +++++++++--------- + src/nmod_mpoly.h | 4 ++-- + src/nmod_mpoly_factor.h | 6 +++--- + 9 files changed, 37 insertions(+), 37 deletions(-) + +diff --git a/src/fft_small.h b/src/fft_small.h +index 3f62f2e988..b7404f196d 100644 +--- a/src/fft_small.h ++++ b/src/fft_small.h +@@ -242,10 +242,10 @@ FLINT_INLINE double sd_fft_ctx_get_fft_index(double* d, ulong i) + } + + /* sd_fft.c */ +-void sd_fft_trunc(const sd_fft_lctx_t Q, ulong I, ulong S, ulong k, ulong j, ulong itrunc, ulong otrunc); ++void sd_fft_trunc(const sd_fft_lctx_t Q, ulong Iv, ulong S, ulong k, ulong j, ulong itrunc, ulong otrunc); + + /* sd_ifft.c */ +-void sd_ifft_trunc(const sd_fft_lctx_t Q, ulong I, ulong S, ulong k, ulong j, ulong z, ulong n, int f); ++void sd_ifft_trunc(const sd_fft_lctx_t Q, ulong Iv, ulong S, ulong k, ulong j, ulong z, ulong n, int f); + + /* sd_fft_ctx.c */ + void sd_fft_ctx_clear(sd_fft_ctx_t Q); +@@ -428,7 +428,7 @@ typedef struct { + + typedef mpn_ctx_struct mpn_ctx_t[1]; + +-void _convert_block(ulong* Xs, sd_fft_ctx_struct* Rffts, double* d, ulong dstride, ulong np, ulong I); ++void _convert_block(ulong* Xs, sd_fft_ctx_struct* Rffts, double* d, ulong dstride, ulong np, ulong Iv); + ulong flint_mpn_nbits(const ulong* a, ulong an); + int flint_mpn_cmp_ui_2exp(const ulong* a, ulong an, ulong b, ulong e); + unsigned char flint_mpn_add_inplace_c(ulong* z, ulong zn, ulong* a, ulong an, unsigned char cf); +diff --git a/src/fmpz_mod_mpoly_factor.h b/src/fmpz_mod_mpoly_factor.h +index 359fdd1e3d..460695dd23 100644 +--- a/src/fmpz_mod_mpoly_factor.h ++++ b/src/fmpz_mod_mpoly_factor.h +@@ -1203,15 +1203,15 @@ typedef struct { + typedef fmpz_mod_mpoly_pfrac_struct fmpz_mod_mpoly_pfrac_t[1]; + + +-int fmpz_mod_mpoly_pfrac_init(fmpz_mod_mpoly_pfrac_t I, ++int fmpz_mod_mpoly_pfrac_init(fmpz_mod_mpoly_pfrac_t Iv, + flint_bitcnt_t bits, slong l, slong r, const fmpz_mod_mpoly_struct * betas, + const fmpz * alpha, const fmpz_mod_mpoly_ctx_t ctx); + +-void fmpz_mod_mpoly_pfrac_clear(fmpz_mod_mpoly_pfrac_t I, ++void fmpz_mod_mpoly_pfrac_clear(fmpz_mod_mpoly_pfrac_t Iv, + const fmpz_mod_mpoly_ctx_t ctx); + + int fmpz_mod_mpoly_pfrac(slong r, fmpz_mod_mpoly_t t, const slong * deg, +- fmpz_mod_mpoly_pfrac_t I, const fmpz_mod_mpoly_ctx_t ctx); ++ fmpz_mod_mpoly_pfrac_t Iv, const fmpz_mod_mpoly_ctx_t ctx); + + int fmpz_mod_mpoly_hlift(slong m, fmpz_mod_mpoly_struct * f, slong r, + const fmpz * alpha, const fmpz_mod_mpoly_t A, const slong * degs, +@@ -1290,7 +1290,7 @@ int fmpz_mod_mpolyn_gcd_brown_smprime( + fmpz_mod_mpolyn_t B, + slong var, + const fmpz_mod_mpoly_ctx_t ctx, +- const mpoly_gcd_info_t I, ++ const mpoly_gcd_info_t Iv, + fmpz_mod_poly_polyun_mpolyn_stack_t St); + + int fmpz_mod_mpolyl_gcdp_zippel( +diff --git a/src/fmpz_mpoly.h b/src/fmpz_mpoly.h +index b7c9677915..4be3d05c56 100644 +--- a/src/fmpz_mpoly.h ++++ b/src/fmpz_mpoly.h +@@ -1084,7 +1084,7 @@ void fmpz_mpoly_vec_randtest_not_zero(fmpz_mpoly_vec_t vec, flint_rand_t state, + + void fmpz_mpoly_spoly(fmpz_mpoly_t res, const fmpz_mpoly_t f, const fmpz_mpoly_t g, const fmpz_mpoly_ctx_t ctx); + void fmpz_mpoly_vec_set_primitive_unique(fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, const fmpz_mpoly_ctx_t ctx); +-void fmpz_mpoly_reduction_primitive_part(fmpz_mpoly_t res, const fmpz_mpoly_t f, const fmpz_mpoly_vec_t I, const fmpz_mpoly_ctx_t ctx); ++void fmpz_mpoly_reduction_primitive_part(fmpz_mpoly_t res, const fmpz_mpoly_t f, const fmpz_mpoly_vec_t Iv, const fmpz_mpoly_ctx_t ctx); + int fmpz_mpoly_vec_is_groebner(const fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, const fmpz_mpoly_ctx_t ctx); + void fmpz_mpoly_buchberger_naive(fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, const fmpz_mpoly_ctx_t ctx); + int fmpz_mpoly_buchberger_naive_with_limits(fmpz_mpoly_vec_t G, const fmpz_mpoly_vec_t F, +diff --git a/src/fmpz_mpoly_factor.h b/src/fmpz_mpoly_factor.h +index 0da7c1052b..a04ef8021e 100644 +--- a/src/fmpz_mpoly_factor.h ++++ b/src/fmpz_mpoly_factor.h +@@ -298,11 +298,11 @@ void fmpz_mpoly_from_mpolyl_perm_inflate(fmpz_mpoly_t A, + + int fmpz_mpolyl_gcd_brown(fmpz_mpoly_t G, + fmpz_mpoly_t Abar, fmpz_mpoly_t Bbar, fmpz_mpoly_t A, fmpz_mpoly_t B, +- const fmpz_mpoly_ctx_t ctx, const mpoly_gcd_info_t I); ++ const fmpz_mpoly_ctx_t ctx, const mpoly_gcd_info_t Iv); + + int fmpz_mpolyl_gcd_brown_threaded_pool(fmpz_mpoly_t G, + fmpz_mpoly_t Abar, fmpz_mpoly_t Bbar, fmpz_mpoly_t A, fmpz_mpoly_t B, +- const fmpz_mpoly_ctx_t ctx, const mpoly_gcd_info_t I, ++ const fmpz_mpoly_ctx_t ctx, const mpoly_gcd_info_t Iv, + const thread_pool_handle * handles, slong num_handles); + + int fmpz_mpolyl_gcd_zippel(fmpz_mpoly_t G, fmpz_mpoly_t Abar, +@@ -340,15 +340,15 @@ typedef struct { + + typedef fmpz_poly_pfrac_struct fmpz_poly_pfrac_t[1]; + +-void fmpz_poly_pfrac_init(fmpz_poly_pfrac_t I); ++void fmpz_poly_pfrac_init(fmpz_poly_pfrac_t Iv); + +-void fmpz_poly_pfrac_clear(fmpz_poly_pfrac_t I); ++void fmpz_poly_pfrac_clear(fmpz_poly_pfrac_t Iv); + +-int fmpz_poly_pfrac_precompute(fmpz_poly_pfrac_t I, ++int fmpz_poly_pfrac_precompute(fmpz_poly_pfrac_t Iv, + const fmpz_poly_struct * b, slong r); + + int fmpz_poly_pfrac_precomp(fmpz_poly_struct * c, +- const fmpz_poly_t A, fmpz_poly_pfrac_t I); ++ const fmpz_poly_t A, fmpz_poly_pfrac_t Iv); + + typedef struct { + flint_bitcnt_t bits; +@@ -372,15 +372,15 @@ typedef struct { + + typedef fmpz_mpoly_pfrac_struct fmpz_mpoly_pfrac_t[1]; + +-int fmpz_mpoly_pfrac_init(fmpz_mpoly_pfrac_t I, flint_bitcnt_t bits, ++int fmpz_mpoly_pfrac_init(fmpz_mpoly_pfrac_t Iv, flint_bitcnt_t bits, + slong r, slong w, const fmpz_mpoly_struct * betas, + const fmpz * alpha, const fmpz_mpoly_ctx_t ctx); + +-void fmpz_mpoly_pfrac_clear(fmpz_mpoly_pfrac_t I, ++void fmpz_mpoly_pfrac_clear(fmpz_mpoly_pfrac_t Iv, + const fmpz_mpoly_ctx_t ctx); + + int fmpz_mpoly_pfrac(slong l, fmpz_mpoly_t t, const slong * degs, +- fmpz_mpoly_pfrac_t I, const fmpz_mpoly_ctx_t ctx); ++ fmpz_mpoly_pfrac_t Iv, const fmpz_mpoly_ctx_t ctx); + + int fmpz_mpoly_hlift(slong m, fmpz_mpoly_struct * f, slong r, + const fmpz * alpha, const fmpz_mpoly_t A, const slong * degs, +diff --git a/src/fq_nmod_mpoly_factor.h b/src/fq_nmod_mpoly_factor.h +index 6289d3f1c5..29caa99aa4 100644 +--- a/src/fq_nmod_mpoly_factor.h ++++ b/src/fq_nmod_mpoly_factor.h +@@ -427,7 +427,7 @@ typedef fq_nmod_mpoly_pfrac_struct fq_nmod_mpoly_pfrac_t[1]; + + + int fq_nmod_mpoly_pfrac_init( +- fq_nmod_mpoly_pfrac_t I, ++ fq_nmod_mpoly_pfrac_t Iv, + flint_bitcnt_t bits, + slong l, slong r, + const fq_nmod_mpoly_struct * betas, +@@ -435,14 +435,14 @@ int fq_nmod_mpoly_pfrac_init( + const fq_nmod_mpoly_ctx_t ctx); + + void fq_nmod_mpoly_pfrac_clear( +- fq_nmod_mpoly_pfrac_t I, ++ fq_nmod_mpoly_pfrac_t Iv, + const fq_nmod_mpoly_ctx_t ctx); + + int fq_nmod_mpoly_pfrac( + slong r, + fq_nmod_mpoly_t t, + const slong * deg, +- fq_nmod_mpoly_pfrac_t I, ++ fq_nmod_mpoly_pfrac_t Iv, + const fq_nmod_mpoly_ctx_t ctx); + + int fq_nmod_mpoly_hlift( +diff --git a/src/fq_zech_mpoly_factor.h b/src/fq_zech_mpoly_factor.h +index 06f31369f9..3d3c51419f 100644 +--- a/src/fq_zech_mpoly_factor.h ++++ b/src/fq_zech_mpoly_factor.h +@@ -652,7 +652,7 @@ typedef fq_zech_mpoly_pfrac_struct fq_zech_mpoly_pfrac_t[1]; + + + int fq_zech_mpoly_pfrac_init( +- fq_zech_mpoly_pfrac_t I, ++ fq_zech_mpoly_pfrac_t Iv, + flint_bitcnt_t bits, + slong l, slong r, + const fq_zech_mpoly_struct * betas, +@@ -660,14 +660,14 @@ int fq_zech_mpoly_pfrac_init( + const fq_zech_mpoly_ctx_t ctx); + + void fq_zech_mpoly_pfrac_clear( +- fq_zech_mpoly_pfrac_t I, ++ fq_zech_mpoly_pfrac_t Iv, + const fq_zech_mpoly_ctx_t ctx); + + int fq_zech_mpoly_pfrac( + slong r, + fq_zech_mpoly_t t, + const slong * deg, +- fq_zech_mpoly_pfrac_t I, ++ fq_zech_mpoly_pfrac_t Iv, + const fq_zech_mpoly_ctx_t ctx); + + int fq_zech_mpoly_hlift( +diff --git a/src/mpoly.h b/src/mpoly.h +index b0950e3a48..fe0ccbe7c4 100644 +--- a/src/mpoly.h ++++ b/src/mpoly.h +@@ -1363,9 +1363,9 @@ typedef struct + + typedef mpoly_gcd_info_struct mpoly_gcd_info_t[1]; + +-void mpoly_gcd_info_init(mpoly_gcd_info_t I, slong nvars); ++void mpoly_gcd_info_init(mpoly_gcd_info_t Iv, slong nvars); + +-void mpoly_gcd_info_clear(mpoly_gcd_info_t I); ++void mpoly_gcd_info_clear(mpoly_gcd_info_t Iv); + + void mpoly_gcd_info_limits(ulong * Amax_exp, ulong * Amin_exp, + slong * Amax_exp_count, slong * Amin_exp_count, +@@ -1378,25 +1378,25 @@ void mpoly_gcd_info_stride(ulong * strides, + const ulong * Bmax_exp, const ulong * Bmin_exp, + const mpoly_ctx_t mctx); + +-void mpoly_gcd_info_set_perm(mpoly_gcd_info_t I, ++void mpoly_gcd_info_set_perm(mpoly_gcd_info_t Iv, + slong Alength, slong Blength, const mpoly_ctx_t mctx); + +-slong mpoly_gcd_info_get_brown_upper_limit(const mpoly_gcd_info_t I, ++slong mpoly_gcd_info_get_brown_upper_limit(const mpoly_gcd_info_t Iv, + slong var, slong bound); + +-void mpoly_gcd_info_measure_hensel(mpoly_gcd_info_t I, ++void mpoly_gcd_info_measure_hensel(mpoly_gcd_info_t Iv, + slong Alength, slong Blength, const mpoly_ctx_t mctx); + +-void mpoly_gcd_info_measure_brown(mpoly_gcd_info_t I, ++void mpoly_gcd_info_measure_brown(mpoly_gcd_info_t Iv, + slong Alength, slong Blength, const mpoly_ctx_t mctx); + +-void mpoly_gcd_info_measure_bma(mpoly_gcd_info_t I, ++void mpoly_gcd_info_measure_bma(mpoly_gcd_info_t Iv, + slong Alength, slong Blength, const mpoly_ctx_t mctx); + +-void mpoly_gcd_info_measure_zippel(mpoly_gcd_info_t I, ++void mpoly_gcd_info_measure_zippel(mpoly_gcd_info_t Iv, + slong Alength, slong Blength, const mpoly_ctx_t mctx); + +-void mpoly_gcd_info_measure_zippel2(mpoly_gcd_info_t I, ++void mpoly_gcd_info_measure_zippel2(mpoly_gcd_info_t Iv, + slong Alength, slong Blength, const mpoly_ctx_t mctx); + + int mpoly_monomial_cofactors(fmpz * Abarexps, fmpz * Bbarexps, +diff --git a/src/nmod_mpoly.h b/src/nmod_mpoly.h +index 2a8136e6eb..716ac9669a 100644 +--- a/src/nmod_mpoly.h ++++ b/src/nmod_mpoly.h +@@ -1619,13 +1619,13 @@ int nmod_mpolyn_gcd_brown_smprime_bivar( + int nmod_mpolyn_gcd_brown_smprime(nmod_mpolyn_t G, + nmod_mpolyn_t Abar, nmod_mpolyn_t Bbar, + nmod_mpolyn_t A, nmod_mpolyn_t B, slong var, +- const nmod_mpoly_ctx_t ctx, const mpoly_gcd_info_t I, ++ const nmod_mpoly_ctx_t ctx, const mpoly_gcd_info_t Iv, + nmod_poly_stack_t Sp); + + int nmod_mpolyn_gcd_brown_smprime_threaded_pool(nmod_mpolyn_t G, + nmod_mpolyn_t Abar, nmod_mpolyn_t Bbar, + nmod_mpolyn_t A, nmod_mpolyn_t B, slong var, +- const nmod_mpoly_ctx_t ctx, const mpoly_gcd_info_t I, ++ const nmod_mpoly_ctx_t ctx, const mpoly_gcd_info_t Iv, + const thread_pool_handle * handles, slong num_workers); + + int nmod_mpolyn_gcd_brown_lgprime(nmod_mpolyn_t G, +diff --git a/src/nmod_mpoly_factor.h b/src/nmod_mpoly_factor.h +index a46afc860f..b16c802b9b 100644 +--- a/src/nmod_mpoly_factor.h ++++ b/src/nmod_mpoly_factor.h +@@ -362,15 +362,15 @@ typedef struct { + typedef nmod_mpoly_pfrac_struct nmod_mpoly_pfrac_t[1]; + + +-int nmod_mpoly_pfrac_init(nmod_mpoly_pfrac_t I, flint_bitcnt_t bits, ++int nmod_mpoly_pfrac_init(nmod_mpoly_pfrac_t Iv, flint_bitcnt_t bits, + slong l, slong r, const nmod_mpoly_struct * betas, + const mp_limb_t * alpha, const nmod_mpoly_ctx_t ctx); + +-void nmod_mpoly_pfrac_clear(nmod_mpoly_pfrac_t I, ++void nmod_mpoly_pfrac_clear(nmod_mpoly_pfrac_t Iv, + const nmod_mpoly_ctx_t ctx); + + int nmod_mpoly_pfrac(slong r, nmod_mpoly_t t, const slong * deg, +- nmod_mpoly_pfrac_t I, const nmod_mpoly_ctx_t ctx); ++ nmod_mpoly_pfrac_t Iv, const nmod_mpoly_ctx_t ctx); + + int nmod_mpoly_hlift(slong m, nmod_mpoly_struct * f, slong r, + const mp_limb_t * alpha, const nmod_mpoly_t A, const slong * degs, diff --git a/srcpkgs/flintlib/template b/srcpkgs/flintlib/template index 613391a9a0ae1b..465cdf1d0d3f71 100644 --- a/srcpkgs/flintlib/template +++ b/srcpkgs/flintlib/template @@ -1,7 +1,7 @@ # Template file for 'flintlib' pkgname=flintlib version=3.1.2 -revision=1 +revision=2 build_style=gnu-configure configure_args="--prefix=/usr --disable-arch $(vopt_with ntl) $(vopt_if openblas --with-blas-include=${XBPS_CROSS_BASE}/usr/include/openblas)" From bcd8e6b405a9eb73e52a4273f74b1e445e2dffc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Mon, 19 Aug 2024 17:35:53 -0300 Subject: [PATCH 3/7] python3-numpy: update to 2.1.0. --- srcpkgs/python3-numpy/template | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/srcpkgs/python3-numpy/template b/srcpkgs/python3-numpy/template index cab4e3e506df30..7d0e493b32c5bb 100644 --- a/srcpkgs/python3-numpy/template +++ b/srcpkgs/python3-numpy/template @@ -1,6 +1,6 @@ # Template file for 'python3-numpy' pkgname=python3-numpy -version=2.0.1 +version=2.1.0 revision=1 build_style=python3-pep517 build_helper="meson qemu" @@ -19,7 +19,7 @@ license="BSD-3-Clause" homepage="https://www.numpy.org/" changelog="https://github.com/numpy/numpy/releases" distfiles="${PYPI_SITE}/n/numpy/numpy-${version}.tar.gz" -checksum=485b87235796410c3519a699cfe1faab097e509e90ebb05dcd098db2ae87e7b3 +checksum=7dc90da0081f7e1da49ec4e398ede6a8e9cc4f5ebe5f9e06b443ed889ee9aaa2 alternatives="numpy:f2py:/usr/bin/f2py3" build_options="openblas" From b4542c50776ceb0a1274d38b7e04697470f81a29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Wed, 21 Aug 2024 00:00:46 -0300 Subject: [PATCH 4/7] python3-scipy: update to 1.14.1. --- srcpkgs/python3-scipy/template | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/srcpkgs/python3-scipy/template b/srcpkgs/python3-scipy/template index e35cd25b4595c6..00aa693110b985 100644 --- a/srcpkgs/python3-scipy/template +++ b/srcpkgs/python3-scipy/template @@ -1,7 +1,7 @@ # Template file for 'python3-scipy' pkgname=python3-scipy -version=1.14.0 -revision=2 +version=1.14.1 +revision=1 build_style=python3-pep517 build_helper="meson numpy" # SciPy imposes strict and unnecessary restrictions on build dependencies @@ -19,8 +19,9 @@ short_desc="Scientific library for Python3" maintainer="Andrew J. Hesford " license="BSD-3-Clause" homepage="https://scipy.org/" +changelog="https://github.com/scipy/scipy/releases" distfiles="${PYPI_SITE}/s/scipy/scipy-${version}.tar.gz" -checksum=b5923f48cb840380f9854339176ef21763118a7300a88203ccd0bdd26e58527b +checksum=5a275584e726026a5699459aa72f828a610821006228e841b94275c4a7c08417 # must be tested from site dir of installed version (see dev.py:739) make_check_pre='eval env -C "${testdir}/${py3_sitelib}"' From 4b37959f5e5083977b44f6e598d17cf4b4438784 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Mon, 5 Aug 2024 00:21:23 -0300 Subject: [PATCH 5/7] sagemath: update to 10.5.beta2. --- .../sagemath/patches/36641-sympy_1.13.patch | 22 +- .../sagemath/patches/37884-gap_4.13.1.patch | 28 +- .../sagemath/patches/38250-numpy_2.0.patch | 587 ------------------ .../sagemath/patches/38344-ecm_7.0.6.patch | 43 -- srcpkgs/sagemath/patches/get_patches | 4 +- srcpkgs/sagemath/template | 8 +- 6 files changed, 22 insertions(+), 670 deletions(-) delete mode 100644 srcpkgs/sagemath/patches/38250-numpy_2.0.patch delete mode 100644 srcpkgs/sagemath/patches/38344-ecm_7.0.6.patch diff --git a/srcpkgs/sagemath/patches/36641-sympy_1.13.patch b/srcpkgs/sagemath/patches/36641-sympy_1.13.patch index 625c582cdd41b7..01e859ad023f4d 100644 --- a/srcpkgs/sagemath/patches/36641-sympy_1.13.patch +++ b/srcpkgs/sagemath/patches/36641-sympy_1.13.patch @@ -1,8 +1,5 @@ -diff --git a/build/pkgs/sympy/requirements.txt b/build/pkgs/sympy/requirements.txt -new file mode 100644 -index 00000000000..3ef8f90b550 diff --git a/src/sage/doctest/forker.py b/src/sage/doctest/forker.py -index 7e9eab2ff2e..43365cd645e 100644 +index 823a0d14a41..de1c8531814 100644 --- a/src/sage/doctest/forker.py +++ b/src/sage/doctest/forker.py @@ -150,14 +150,15 @@ def init_sage(controller=None): @@ -28,7 +25,7 @@ index 7e9eab2ff2e..43365cd645e 100644 The displayhook sorts dictionary keys to simplify doctesting of dictionary output:: diff --git a/src/sage/functions/hypergeometric.py b/src/sage/functions/hypergeometric.py -index 010c61febe0..bbccbd20032 100644 +index ade7836b310..eb5c6665c0d 100644 --- a/src/sage/functions/hypergeometric.py +++ b/src/sage/functions/hypergeometric.py @@ -124,7 +124,7 @@ @@ -40,21 +37,8 @@ index 010c61febe0..bbccbd20032 100644 sage: hypergeometric((5, 4), (4, 4), 3)._mathematica_init_() # needs sage.symbolic 'HypergeometricPFQ[{5,4},{4,4},3]' -diff --git a/src/sage/symbolic/expression.pyx b/src/sage/symbolic/expression.pyx -index a92fe241355..f62311423be 100644 ---- a/src/sage/symbolic/expression.pyx -+++ b/src/sage/symbolic/expression.pyx -@@ -1167,7 +1167,7 @@ cdef class Expression(Expression_abc): - sage: unicode_art(SR(13 - I)) - 13 - ⅈ - sage: unicode_art(SR(1.3 - I)) -- 1.3 - ⅈ -+ 1.3 - 1.0⋅ⅈ - sage: unicode_art(cos(I)) - cosh(1) - diff --git a/src/sage/typeset/ascii_art.py b/src/sage/typeset/ascii_art.py -index 28024405d27..458fa8724a3 100644 +index 83d92af8959..e470e2bd88d 100644 --- a/src/sage/typeset/ascii_art.py +++ b/src/sage/typeset/ascii_art.py @@ -44,11 +44,12 @@ diff --git a/srcpkgs/sagemath/patches/37884-gap_4.13.1.patch b/srcpkgs/sagemath/patches/37884-gap_4.13.1.patch index 1550d47e2436c6..321e0a94487da3 100644 --- a/srcpkgs/sagemath/patches/37884-gap_4.13.1.patch +++ b/srcpkgs/sagemath/patches/37884-gap_4.13.1.patch @@ -1,21 +1,21 @@ diff --git a/src/sage/algebras/fusion_rings/fusion_double.py b/src/sage/algebras/fusion_rings/fusion_double.py -index 7ce086f70d0..954513572c3 100644 +index 71277561331..3b681d75d3b 100644 --- a/src/sage/algebras/fusion_rings/fusion_double.py +++ b/src/sage/algebras/fusion_rings/fusion_double.py @@ -133,7 +133,7 @@ class FusionDouble(CombinatorialFreeModule): sage: G = SmallPermutationGroup(16,9) - sage: F = FusionDouble(G, prefix="b",inject_variables=True) + sage: F = FusionDouble(G, prefix='b', inject_variables=True) sage: b13^2 # long time (4s) - b0 + b2 + b4 + b15 + b16 + b17 + b18 + b24 + b26 + b27 + b0 + b3 + b4 - """ @staticmethod + def __classcall_private__(cls, G, prefix='s', inject_variables=False): diff --git a/src/sage/categories/simplicial_sets.py b/src/sage/categories/simplicial_sets.py -index e714a4571c4..a2b87a729d1 100644 +index aabd3cdbb4f..14bebdcd080 100644 --- a/src/sage/categories/simplicial_sets.py +++ b/src/sage/categories/simplicial_sets.py -@@ -593,9 +593,9 @@ def _canonical_twisting_operator(self): +@@ -591,9 +591,9 @@ def _canonical_twisting_operator(self): sage: X = simplicial_sets.Torus() sage: d = X._canonical_twisting_operator() sage: d @@ -27,7 +27,7 @@ index e714a4571c4..a2b87a729d1 100644 sage: Y = simplicial_sets.RealProjectiveSpace(2) sage: d2 = Y._canonical_twisting_operator() sage: d2 -@@ -677,10 +677,10 @@ def twisted_chain_complex(self, twisting_operator=None, dimensions=None, augment +@@ -674,10 +674,10 @@ def twisted_chain_complex(self, twisting_operator=None, dimensions=None, augment sage: X = simplicial_sets.Torus() sage: C = X.twisted_chain_complex() sage: C.differential(1) @@ -41,7 +41,7 @@ index e714a4571c4..a2b87a729d1 100644 [ -1 -1] sage: C.differential(3) [] -@@ -848,29 +848,29 @@ def twisted_homology(self, n, reduced=False): +@@ -844,29 +844,29 @@ def twisted_homology(self, n, reduced=False): sage: # needs sage.graphs sage: Y = simplicial_sets.Torus() sage: Y.twisted_homology(1) @@ -80,10 +80,10 @@ index e714a4571c4..a2b87a729d1 100644 [1 0 0 0 0] [0 1 0 0 0] diff --git a/src/sage/combinat/matrices/latin.py b/src/sage/combinat/matrices/latin.py -index 936edcc6ea4..c06a53d9afd 100644 +index e2d818e9480..84e6c4fcc9b 100644 --- a/src/sage/combinat/matrices/latin.py +++ b/src/sage/combinat/matrices/latin.py -@@ -2453,7 +2453,7 @@ def p3_group_bitrade_generators(p): +@@ -2444,7 +2444,7 @@ def p3_group_bitrade_generators(p): EXAMPLES:: sage: from sage.combinat.matrices.latin import * @@ -93,7 +93,7 @@ index 936edcc6ea4..c06a53d9afd 100644 (1,2,3)(4,7,8)(5,6,9), (1,9,2)(3,7,4)(5,8,6), diff --git a/src/sage/groups/cubic_braid.py b/src/sage/groups/cubic_braid.py -index 257b400f1c7..36423c756aa 100644 +index 61db70925e1..521289c7578 100644 --- a/src/sage/groups/cubic_braid.py +++ b/src/sage/groups/cubic_braid.py @@ -282,7 +282,7 @@ def _richcmp_(self, other, op): @@ -106,7 +106,7 @@ index 257b400f1c7..36423c756aa 100644 c1*c0^-1*c1, c0^-1*c1^-1*c0^-1, c0^-1*c1^-1, c1^-1*c0*c1^-1, c0*c1^-1*c0^-1, c0^-1*c1, c0^-1*c1*c0, c0*c1^-1, c1*c0^-1, diff --git a/src/sage/groups/finitely_presented.py b/src/sage/groups/finitely_presented.py -index 4bb52ee4efb..85f572fac6c 100644 +index 4ac2faa783b..7016d08381b 100644 --- a/src/sage/groups/finitely_presented.py +++ b/src/sage/groups/finitely_presented.py @@ -1344,8 +1344,8 @@ def abelianization_map(self): @@ -161,10 +161,10 @@ index 4bb52ee4efb..85f572fac6c 100644 sage: G.characteristic_varieties(groebner=True) {0: [-1 + F1, 1 + F1, 1 - F1 + F1^2, 1 + F1 + F1^2], 1: [1 - F1 + F1^2], 2: []} diff --git a/src/sage/groups/perm_gps/permgroup_named.py b/src/sage/groups/perm_gps/permgroup_named.py -index c1f2683907b..d219e104a2c 100644 +index 5c153b93d4c..bd4afad2942 100644 --- a/src/sage/groups/perm_gps/permgroup_named.py +++ b/src/sage/groups/perm_gps/permgroup_named.py -@@ -3468,16 +3468,14 @@ class SmallPermutationGroup(PermutationGroup_generic): +@@ -3465,16 +3465,14 @@ class SmallPermutationGroup(PermutationGroup_generic): sage: G = SmallPermutationGroup(12,4); G Group of order 12 and GAP Id 4 as a permutation group sage: G.gens() @@ -186,7 +186,7 @@ index c1f2683907b..d219e104a2c 100644 sage: def numgps(n): return ZZ(libgap.NumberSmallGroups(n)) sage: all(SmallPermutationGroup(n,k).id() == [n,k] ....: for n in [1..64] for k in [1..numgps(n)]) -@@ -3486,11 +3484,11 @@ class SmallPermutationGroup(PermutationGroup_generic): +@@ -3483,11 +3481,11 @@ class SmallPermutationGroup(PermutationGroup_generic): sage: H.is_abelian() False sage: [H.centralizer(g) for g in H.conjugacy_classes_representatives()] diff --git a/srcpkgs/sagemath/patches/38250-numpy_2.0.patch b/srcpkgs/sagemath/patches/38250-numpy_2.0.patch deleted file mode 100644 index e28fd857afcb75..00000000000000 --- a/srcpkgs/sagemath/patches/38250-numpy_2.0.patch +++ /dev/null @@ -1,587 +0,0 @@ -diff --git a/src/sage/arith/misc.py b/src/sage/arith/misc.py -index 28f81d7b798..d184c52bf19 100644 ---- a/src/sage/arith/misc.py -+++ b/src/sage/arith/misc.py -@@ -2277,7 +2277,7 @@ def power_mod(a, n, m): - - sage: from numpy import int32 # needs numpy - sage: power_mod(int32(2), int32(390), int32(391)) # needs numpy -- 285 -+ ...285... - sage: from gmpy2 import mpz - sage: power_mod(mpz(2), mpz(390), mpz(391)) - mpz(285) -diff --git a/src/sage/calculus/interpolators.pyx b/src/sage/calculus/interpolators.pyx -index 221b52369e2..bb0be7bab0c 100644 ---- a/src/sage/calculus/interpolators.pyx -+++ b/src/sage/calculus/interpolators.pyx -@@ -27,6 +27,9 @@ Development supported by NSF award No. 0702939. - import numpy as np - cimport numpy as np - -+if int(np.version.short_version[0]) > 1: -+ np.set_printoptions(legacy="1.25") -+ - from math import pi - cdef double TWOPI = 2*pi - -diff --git a/src/sage/calculus/riemann.pyx b/src/sage/calculus/riemann.pyx -index 6ec80d89aa7..c09d93c4260 100644 ---- a/src/sage/calculus/riemann.pyx -+++ b/src/sage/calculus/riemann.pyx -@@ -44,6 +44,9 @@ from sage.calculus.integration import numerical_integral - import numpy as np - cimport numpy as np - -+if int(np.version.short_version[0]) > 1: -+ np.set_printoptions(legacy="1.25") -+ - from math import pi - from math import sin - from math import cos -diff --git a/src/sage/combinat/fully_packed_loop.py b/src/sage/combinat/fully_packed_loop.py -index b198fed0c0d..b3ebd206cd2 100644 ---- a/src/sage/combinat/fully_packed_loop.py -+++ b/src/sage/combinat/fully_packed_loop.py -@@ -66,6 +66,9 @@ def _make_color_list(n, colors=None, color_map=None, randomize=False): - r""" - TESTS:: - -+ sage: import numpy as np -+ sage: if int(np.version.short_version[0]) > 1: -+ ....: np.set_printoptions(legacy="1.25") - sage: from sage.combinat.fully_packed_loop import _make_color_list - sage: _make_color_list(5) - sage: _make_color_list(5, ['blue', 'red']) -diff --git a/src/sage/env.py b/src/sage/env.py -index 722649ab3da..abb9b19f9e3 100644 ---- a/src/sage/env.py -+++ b/src/sage/env.py -@@ -296,7 +296,7 @@ def sage_include_directories(use_sources=False): - sage: import sage.env - sage: sage.env.sage_include_directories() - ['...', -- '.../numpy/core/include', -+ '.../numpy/...core/include', - '.../include/python...'] - - To check that C/C++ files are correctly found, we verify that we can -diff --git a/src/sage/functions/special.py b/src/sage/functions/special.py -index e100ba3ee23..2a03bb68f67 100644 ---- a/src/sage/functions/special.py -+++ b/src/sage/functions/special.py -@@ -217,6 +217,9 @@ class SphericalHarmonic(BuiltinFunction): - sage: spherical_harmonic(1, 1, pi/2, pi).n() # abs tol 1e-14 # needs sage.symbolic - 0.345494149471335 - sage: from scipy.special import sph_harm # NB: arguments x and y are swapped # needs scipy -+ sage: import numpy as np # needs scipy -+ sage: if int(np.version.short_version[0]) > 1: # needs scipy -+ ....: np.set_printoptions(legacy="1.25") # needs scipy - sage: sph_harm(1, 1, pi.n(), (pi/2).n()) # abs tol 1e-14 # needs scipy sage.symbolic - (0.3454941494713355-4.231083042742082e-17j) - -diff --git a/src/sage/graphs/generators/classical_geometries.py b/src/sage/graphs/generators/classical_geometries.py -index da04362eef3..957f88d2061 100644 ---- a/src/sage/graphs/generators/classical_geometries.py -+++ b/src/sage/graphs/generators/classical_geometries.py -@@ -1315,7 +1315,7 @@ def CossidentePenttilaGraph(q): - - from sage.libs.gap.libgap import libgap - adj_list = libgap.function_factory("""function(q) -- local z, e, so, G, nu, G1, G0, B, T, s, O1, O2, x; -+ local z, e, so, G, nu, G1, G0, B, T, s, O1, O2, x, sqo; - LoadPackage("grape"); - G0:=SO(3,q^2); - so:=GeneratorsOfGroup(G0); -diff --git a/src/sage/graphs/generic_graph.py b/src/sage/graphs/generic_graph.py -index 063931ae274..0bafbd00564 100644 ---- a/src/sage/graphs/generic_graph.py -+++ b/src/sage/graphs/generic_graph.py -@@ -18420,6 +18420,9 @@ def shortest_path_all_pairs(self, by_weight=False, algorithm=None, - M = self.adjacency_matrix(vertices=int_to_vertex) - - # We call the Floyd-Warshall method from SciPy -+ import numpy # to ensure numpy 2.0 compatibility -+ if int(numpy.version.short_version[0]) > 1: -+ numpy.set_printoptions(legacy="1.25") - from numpy import array as np_array - from scipy.sparse.csgraph import floyd_warshall - dd, pp = floyd_warshall(np_array(M), directed=self.is_directed(), -diff --git a/src/sage/graphs/graph_generators_pyx.pyx b/src/sage/graphs/graph_generators_pyx.pyx -index 033e8b22adc..04b20d3229b 100644 ---- a/src/sage/graphs/graph_generators_pyx.pyx -+++ b/src/sage/graphs/graph_generators_pyx.pyx -@@ -57,7 +57,7 @@ def RandomGNP(n, p, bint directed=False, bint loops=False, seed=None): - - sage: from numpy import mean # needs numpy - sage: abs(mean([RandomGNP(200, .2).density() for i in range(30)]) - .2) < .001 # needs numpy -- True -+ ...True... - sage: RandomGNP(150, .2, loops=True) - Traceback (most recent call last): - ... -diff --git a/src/sage/matrix/matrix1.pyx b/src/sage/matrix/matrix1.pyx -index a810418389c..c38df5412f0 100644 ---- a/src/sage/matrix/matrix1.pyx -+++ b/src/sage/matrix/matrix1.pyx -@@ -705,12 +705,15 @@ cdef class Matrix(Matrix0): - Type ``numpy.typecodes`` for a list of the possible - typecodes:: - -- sage: import numpy # needs numpy -- sage: sorted(numpy.typecodes.items()) # needs numpy -+ sage: import numpy # needs numpy -+ sage: numpy.typecodes.items() # needs numpy # random - [('All', '?bhilqpBHILQPefdgFDGSUVOMm'), ('AllFloat', 'efdgFDG'), -- ('AllInteger', 'bBhHiIlLqQpP'), ('Character', 'c'), ('Complex', 'FDG'), -- ('Datetime', 'Mm'), ('Float', 'efdg'), ('Integer', 'bhilqp'), -- ('UnsignedInteger', 'BHILQP')] -+ ... -+ -+ For instance, you can see possibilities for real floating point numbers:: -+ -+ sage: numpy.typecodes['Float'] # needs numpy -+ 'efdg' - - Alternatively, numpy automatically calls this function (via - the magic :meth:`__array__` method) to convert Sage matrices -diff --git a/src/sage/modules/free_module_element.pyx b/src/sage/modules/free_module_element.pyx -index d71d22ac1f7..b6f297a3510 100644 ---- a/src/sage/modules/free_module_element.pyx -+++ b/src/sage/modules/free_module_element.pyx -@@ -555,7 +555,11 @@ def vector(arg0, arg1=None, arg2=None, sparse=None, immutable=False): - R = None - - try: -+ import numpy - from numpy import ndarray -+ if int(numpy.version.short_version[0]) > 1: -+ numpy.set_printoptions(legacy="1.25") -+ - except ImportError: - pass - else: -@@ -1188,7 +1192,11 @@ cdef class FreeModuleElement(Vector): # abstract base class - over Rational Field to numpy array of type <... 'float'>: - setting an array element with a sequence. - """ -+ import numpy - from numpy import array -+ if int(numpy.version.short_version[0]) > 1: -+ numpy.set_printoptions(legacy="1.25") -+ - try: - return array(self, dtype=dtype) - except ValueError as e: -diff --git a/src/sage/numerical/optimize.py b/src/sage/numerical/optimize.py -index e3d94d1746e..7ae8ca4966f 100644 ---- a/src/sage/numerical/optimize.py -+++ b/src/sage/numerical/optimize.py -@@ -155,6 +155,10 @@ def find_root(f, a, b, xtol=10e-13, rtol=2.0**-50, maxiter=100, full_output=Fals - b = max(s_1, s_2) - - import scipy.optimize -+ import numpy -+ if int(numpy.version.short_version[0]) > 1: -+ numpy.set_printoptions(legacy="1.25") -+ - g = lambda x: float(f(x)) - brentqRes = scipy.optimize.brentq(g, a, b, - full_output=full_output, xtol=xtol, rtol=rtol, maxiter=maxiter) -@@ -288,6 +292,10 @@ def find_local_minimum(f, a, b, tol=1.48e-08, maxfun=500): - a = float(a) - b = float(b) - import scipy.optimize -+ import numpy -+ if int(numpy.version.short_version[0]) > 1: -+ numpy.set_printoptions(legacy="1.25") -+ - xmin, fval, iter, funcalls = scipy.optimize.fminbound(f, a, b, full_output=1, xtol=tol, maxfun=maxfun) - return fval, xmin - -@@ -376,6 +384,8 @@ def minimize(func, x0, gradient=None, hessian=None, algorithm="default", - sage: def rosen(x): # The Rosenbrock function - ....: return sum(100.0r*(x[1r:]-x[:-1r]**2.0r)**2.0r + (1r-x[:-1r])**2.0r) - sage: import numpy -+ sage: if int(numpy.version.short_version[0]) > 1: -+ ....: numpy.set_printoptions(legacy="1.25") - sage: from numpy import zeros - sage: def rosen_der(x): - ....: xm = x[1r:-1r] -@@ -393,6 +403,9 @@ def minimize(func, x0, gradient=None, hessian=None, algorithm="default", - from sage.structure.element import Expression - from sage.ext.fast_callable import fast_callable - import numpy -+ if int(numpy.version.short_version[0]) > 1: -+ numpy.set_printoptions(legacy="1.25") -+ - from scipy import optimize - if isinstance(func, Expression): - var_list = func.variables() -@@ -530,6 +543,8 @@ def minimize_constrained(func,cons,x0,gradient=None,algorithm='default', **args) - from sage.structure.element import Expression - from sage.ext.fast_callable import fast_callable - import numpy -+ if int(numpy.version.short_version[0]) > 1: -+ numpy.set_printoptions(legacy="1.25") - from scipy import optimize - function_type = type(lambda x,y: x+y) - -@@ -652,6 +667,8 @@ def find_fit(data, model, initial_guess=None, parameters=None, variables=None, s - ``lmdif`` and ``lmder`` algorithms. - """ - import numpy -+ if int(numpy.version.short_version[0]) > 1: -+ numpy.set_printoptions(legacy="1.25") - - if not isinstance(data, numpy.ndarray): - try: -diff --git a/src/sage/plot/arrow.py b/src/sage/plot/arrow.py -index ac1dc79d802..23e2517ca56 100644 ---- a/src/sage/plot/arrow.py -+++ b/src/sage/plot/arrow.py -@@ -53,6 +53,9 @@ def get_minmax_data(self): - - EXAMPLES:: - -+ sage: import numpy # to ensure numpy 2.0 compatibility -+ sage: if int(numpy.version.short_version[0]) > 1: -+ ....: numpy.set_printoptions(legacy="1.25") - sage: from sage.plot.arrow import CurveArrow - sage: b = CurveArrow(path=[[(0,0),(.5,.5),(1,0)],[(.5,1),(0,0)]], - ....: options={}) -diff --git a/src/sage/plot/complex_plot.pyx b/src/sage/plot/complex_plot.pyx -index f1f2671a803..4d71414e1c2 100644 ---- a/src/sage/plot/complex_plot.pyx -+++ b/src/sage/plot/complex_plot.pyx -@@ -1282,15 +1282,13 @@ def rgb_to_hls(rgb): - raise ValueError("Last dimension of input array must be 3; " - "shape {} was found.".format(rgb.shape)) - in_shape = rgb.shape -- rgb = np.array( -- rgb, copy=False, dtype=np.dtype(float), ndmin=2 -- ) -+ rgb = np.asarray(rgb, dtype=np.dtype(float)) - rgb_max = rgb.max(-1) - rgb_min = rgb.min(-1) - l = (rgb_max + rgb_min)/2.0 # lightness - - hls = np.zeros_like(rgb) -- delta = rgb.ptp(-1) -+ delta = np.ptp(rgb, -1) - s = np.zeros_like(delta) - - ipos = delta > 0 -diff --git a/src/sage/plot/graphics.py b/src/sage/plot/graphics.py -index a84d162cb56..94f5db09d83 100644 ---- a/src/sage/plot/graphics.py -+++ b/src/sage/plot/graphics.py -@@ -2754,7 +2754,7 @@ def matplotlib(self, filename=None, - sage: xmin, xmax = sub.get_xlim() - sage: ymin, ymax = sub.get_ylim() - sage: xmin > xmax, ymin > ymax -- (True, True) -+ (...True..., ...True...) - """ - if not isinstance(ticks, (list, tuple)): - ticks = (ticks, None) -diff --git a/src/sage/plot/histogram.py b/src/sage/plot/histogram.py -index fa86a44bd0a..a585cacf9cd 100644 ---- a/src/sage/plot/histogram.py -+++ b/src/sage/plot/histogram.py -@@ -92,6 +92,8 @@ def get_minmax_data(self): - {'xmax': 10.0, 'xmin': 3.0, 'ymax': 0.476190476190..., 'ymin': 0} - """ - import numpy -+ if int(numpy.version.short_version[0]) > 1: -+ numpy.set_printoptions(legacy="1.25") - - # Extract these options (if they are not None) and pass them to - # histogram() -diff --git a/src/sage/plot/multigraphics.py b/src/sage/plot/multigraphics.py -index b583be32317..6be448f1e04 100644 ---- a/src/sage/plot/multigraphics.py -+++ b/src/sage/plot/multigraphics.py -@@ -784,6 +784,9 @@ def _add_subplot(self, figure, index, **options): - True - sage: G.position(1) - (0.2, 0.3, 0.4, 0.1) -+ sage: import numpy # to ensure numpy 2.0 compatibility -+ sage: if int(numpy.version.short_version[0]) > 1: -+ ....: numpy.set_printoptions(legacy="1.25") - sage: ax1.get_position().bounds # tol 1.0e-13 - (0.2, 0.3, 0.4000000000000001, 0.10000000000000003) - -@@ -1295,6 +1298,9 @@ def position(self, index): - sage: g1 = plot(sin(x), (x, -pi, pi)) - sage: g2 = circle((0,1), 1.) - sage: G = graphics_array([g1, g2]) -+ sage: import numpy # to ensure numpy 2.0 compatibility -+ sage: if int(numpy.version.short_version[0]) > 1: -+ ....: numpy.set_printoptions(legacy="1.25") - sage: G.position(0) # tol 5.0e-3 - (0.025045451349937315, - 0.03415488992713045, -diff --git a/src/sage/plot/plot3d/implicit_surface.pyx b/src/sage/plot/plot3d/implicit_surface.pyx -index ce0da48a4e0..f4d5059b620 100644 ---- a/src/sage/plot/plot3d/implicit_surface.pyx -+++ b/src/sage/plot/plot3d/implicit_surface.pyx -@@ -468,6 +468,7 @@ cdef class MarchingCubesTriangles(MarchingCubes): - sage: cube_marcher.y_vertices.tolist() - [[[<1.0, 0.5, 0.0>, None]], [[None, None]]] - sage: cube_marcher.x_vertices.any() # This shouldn't affect the X vertices. -+ ... - """ - (self.y_vertices, self.y_vertices_swapped) = \ - (self.y_vertices_swapped, self.y_vertices) -@@ -574,6 +575,7 @@ cdef class MarchingCubesTriangles(MarchingCubes): - sage: cube_marcher.x_vertices.tolist() - [[None, None], [None, <1.5, 1.0, 1.0>]] - sage: cube_marcher.y_vertices.any() or cube_marcher.z_vertices.any() # This shouldn't affect the Y or Z vertices. -+ ... - """ - cdef bint has_prev = (_prev is not None) - cdef bint has_next = (_next is not None) -diff --git a/src/sage/plot/scatter_plot.py b/src/sage/plot/scatter_plot.py -index 4ad418f040b..781854d372c 100644 ---- a/src/sage/plot/scatter_plot.py -+++ b/src/sage/plot/scatter_plot.py -@@ -63,9 +63,9 @@ def get_minmax_data(self): - sage: s = scatter_plot([[0,1],[2,4],[3.2,6]]) - sage: d = s.get_minmax_data() - sage: d['xmin'] -- 0.0 -+ ...0.0... - sage: d['ymin'] -- 1.0 -+ ...1.0... - """ - return {'xmin': self.xdata.min(), - 'xmax': self.xdata.max(), -diff --git a/src/sage/plot/streamline_plot.py b/src/sage/plot/streamline_plot.py -index 663d3aee70b..d2cb11088c7 100644 ---- a/src/sage/plot/streamline_plot.py -+++ b/src/sage/plot/streamline_plot.py -@@ -71,6 +71,9 @@ def get_minmax_data(self): - EXAMPLES:: - - sage: x, y = var('x y') -+ sage: import numpy # to ensure numpy 2.0 compatibility -+ sage: if int(numpy.version.short_version[0]) > 1: -+ ....: numpy.set_printoptions(legacy="1.25") - sage: d = streamline_plot((.01*x, x+y), (x,10,20), (y,10,20))[0].get_minmax_data() - sage: d['xmin'] - 10.0 -diff --git a/src/sage/probability/probability_distribution.pyx b/src/sage/probability/probability_distribution.pyx -index e2c71af9c25..59ba4a95ab6 100644 ---- a/src/sage/probability/probability_distribution.pyx -+++ b/src/sage/probability/probability_distribution.pyx -@@ -140,6 +140,9 @@ cdef class ProbabilityDistribution: - 1.8, - 2.0] - """ -+ import numpy as np -+ if int(np.version.short_version[0]) > 1: -+ np.set_printoptions(legacy="1.25") - import pylab - ell = [float(self.get_random_element()) for _ in range(num_samples)] - S = pylab.hist(ell, bins, density=True) -diff --git a/src/sage/rings/complex_double.pyx b/src/sage/rings/complex_double.pyx -index c59a2b46d6f..b4dddebb4dc 100644 ---- a/src/sage/rings/complex_double.pyx -+++ b/src/sage/rings/complex_double.pyx -@@ -2558,10 +2558,10 @@ cdef class ComplexToCDF(Morphism): - - sage: # needs numpy - sage: import numpy -- sage: f = CDF.coerce_map_from(numpy.complex_) -- sage: f(numpy.complex_(I)) -+ sage: f = CDF.coerce_map_from(numpy.complex128) -+ sage: f(numpy.complex128(I)) - 1.0*I -- sage: f(numpy.complex_(I)).parent() -+ sage: f(numpy.complex128(I)).parent() - Complex Double Field - """ - def __init__(self, R): -@@ -2578,7 +2578,7 @@ cdef class ComplexToCDF(Morphism): - EXAMPLES:: - - sage: import numpy # needs numpy -- sage: CDF(numpy.complex_(I)) # indirect doctest # needs numpy -+ sage: CDF(numpy.complex128(I)) # indirect doctest # needs numpy - 1.0*I - """ - cdef ComplexDoubleElement z = ComplexDoubleElement.__new__(ComplexDoubleElement) -@@ -2592,7 +2592,7 @@ cdef class ComplexToCDF(Morphism): - EXAMPLES:: - - sage: import numpy # needs numpy -- sage: f = sage.rings.complex_double.ComplexToCDF(numpy.complex_) # needs numpy -+ sage: f = sage.rings.complex_double.ComplexToCDF(numpy.complex128) # needs numpy - sage: f._repr_type() # needs numpy - 'Native' - """ -diff --git a/src/sage/rings/integer.pyx b/src/sage/rings/integer.pyx -index b4a1fa5039b..38c30f7627b 100644 ---- a/src/sage/rings/integer.pyx -+++ b/src/sage/rings/integer.pyx -@@ -593,6 +593,8 @@ cdef class Integer(sage.structure.element.EuclideanDomainElement): - Test comparisons with numpy types (see :issue:`13386` and :issue:`18076`):: - - sage: import numpy # needs numpy -+ sage: if int(numpy.version.short_version[0]) > 1: # needs numpy -+ ....: numpy.set_printoptions(legacy="1.25") # needs numpy - sage: numpy.int8('12') == 12 # needs numpy - True - sage: 12 == numpy.int8('12') # needs numpy -diff --git a/src/sage/rings/polynomial/polynomial_element.pyx b/src/sage/rings/polynomial/polynomial_element.pyx -index dcf2af7cdf2..c87eccd44f1 100644 ---- a/src/sage/rings/polynomial/polynomial_element.pyx -+++ b/src/sage/rings/polynomial/polynomial_element.pyx -@@ -8851,7 +8851,7 @@ cdef class Polynomial(CommutativePolynomial): - 'you expect.') - - import numpy -- from numpy.linalg.linalg import LinAlgError -+ from numpy.linalg import LinAlgError - from sage.rings.complex_double import CDF - - numpy_dtype = ('complex' if input_complex else 'double') -diff --git a/src/sage/rings/real_mpfi.pyx b/src/sage/rings/real_mpfi.pyx -index 95b472e912c..76fbfedab95 100644 ---- a/src/sage/rings/real_mpfi.pyx -+++ b/src/sage/rings/real_mpfi.pyx -@@ -231,6 +231,8 @@ specified if given a non-interval and an interval:: - TESTS:: - - sage: import numpy # needs numpy -+ sage: if int(numpy.version.short_version[0]) > 1: # needs numpy -+ ....: numpy.set_printoptions(legacy="1.25") # needs numpy - sage: RIF(2) == numpy.int8('2') # needs numpy - True - sage: numpy.int8('2') == RIF(2) # needs numpy -diff --git a/src/sage/schemes/elliptic_curves/period_lattice_region.pyx b/src/sage/schemes/elliptic_curves/period_lattice_region.pyx -index 8f240627e77..70ce616f92f 100644 ---- a/src/sage/schemes/elliptic_curves/period_lattice_region.pyx -+++ b/src/sage/schemes/elliptic_curves/period_lattice_region.pyx -@@ -77,6 +77,8 @@ cdef class PeriodicRegion: - EXAMPLES:: - - sage: import numpy as np -+ sage: if int(np.version.short_version[0]) > 1: -+ ....: np.set_printoptions(legacy="1.25") - sage: from sage.schemes.elliptic_curves.period_lattice_region import PeriodicRegion - sage: data = np.zeros((4, 4)) - sage: PeriodicRegion(CDF(2), CDF(2*I), data).is_empty() -@@ -295,6 +297,8 @@ cdef class PeriodicRegion: - EXAMPLES:: - - sage: import numpy as np -+ sage: if int(np.version.short_version[0]) > 1: -+ ....: np.set_printoptions(legacy="1.25") - sage: from sage.schemes.elliptic_curves.period_lattice_region import PeriodicRegion - sage: data = np.zeros((10, 10)) - sage: data[1:4,1:4] = True -@@ -317,6 +321,8 @@ cdef class PeriodicRegion: - EXAMPLES:: - - sage: import numpy as np -+ sage: if int(np.version.short_version[0]) > 1: -+ ....: np.set_printoptions(legacy="1.25") - sage: from sage.schemes.elliptic_curves.period_lattice_region import PeriodicRegion - sage: data = np.zeros((4, 4)) - sage: data[1,1] = True -@@ -370,6 +376,8 @@ cdef class PeriodicRegion: - EXAMPLES:: - - sage: import numpy as np -+ sage: if int(np.version.short_version[0]) > 1: -+ ....: np.set_printoptions(legacy="1.25") - sage: from sage.schemes.elliptic_curves.period_lattice_region import PeriodicRegion - - sage: data = np.zeros((20, 20)) -@@ -520,6 +528,8 @@ cdef class PeriodicRegion: - TESTS:: - - sage: import numpy as np -+ sage: if int(np.version.short_version[0]) > 1: -+ ....: np.set_printoptions(legacy="1.25") - sage: from sage.schemes.elliptic_curves.period_lattice_region import PeriodicRegion - sage: data = np.zeros((4, 4)) - sage: data[1, 1] = True -diff --git a/src/sage/stats/basic_stats.py b/src/sage/stats/basic_stats.py -index b2e6b301bf7..6937f6cb410 100644 ---- a/src/sage/stats/basic_stats.py -+++ b/src/sage/stats/basic_stats.py -@@ -227,6 +227,8 @@ def std(v, bias=False): - - sage: # needs numpy - sage: import numpy -+ sage: if int(numpy.version.short_version[0]) > 1: -+ ....: numpy.set_printoptions(legacy="1.25") - sage: x = numpy.array([1,2,3,4,5]) - sage: std(x, bias=False) - 1.5811388300841898 -@@ -304,6 +306,8 @@ def variance(v, bias=False): - sage: variance([RIF(1.0103, 1.0103), RIF(2)]) - 0.4897530450000000? - sage: import numpy # needs numpy -+ sage: if int(numpy.version.short_version[0]) > 1: # needs numpy -+ ....: numpy.set_printoptions(legacy="1.25") # needs numpy - sage: x = numpy.array([1,2,3,4,5]) # needs numpy - sage: variance(x, bias=False) # needs numpy - 2.5 -diff --git a/src/sage/stats/time_series.pyx b/src/sage/stats/time_series.pyx -index 2e22ec45c69..23adae84fb4 100644 ---- a/src/sage/stats/time_series.pyx -+++ b/src/sage/stats/time_series.pyx -@@ -1718,6 +1718,8 @@ cdef class TimeSeries: - if len(v0) == 1: - return v1[0]/v0[0] - import numpy -+ if int(numpy.version.short_version[0]) > 1: -+ numpy.set_printoptions(legacy="1.25") - coeffs = numpy.polyfit(v0,v1,1) - return coeffs[0] - -diff --git a/src/sage/structure/coerce.pyx b/src/sage/structure/coerce.pyx -index dfbd5ff82fa..955a256e9b4 100644 ---- a/src/sage/structure/coerce.pyx -+++ b/src/sage/structure/coerce.pyx -@@ -520,6 +520,8 @@ cdef class CoercionModel: - Check that :issue:`8426` is fixed (see also :issue:`18076`):: - - sage: import numpy # needs numpy -+ sage: if int(numpy.version.short_version[0]) > 1: # needs numpy -+ ....: numpy.set_printoptions(legacy="1.25") # needs numpy - - sage: # needs sage.rings.real_mpfr - sage: x = polygen(RR) -diff --git a/src/sage/symbolic/function.pyx b/src/sage/symbolic/function.pyx -index 2cb2f09c715..cd89ad2a256 100644 ---- a/src/sage/symbolic/function.pyx -+++ b/src/sage/symbolic/function.pyx -@@ -964,6 +964,9 @@ cdef class BuiltinFunction(Function): - mpc(real='0.83373002513114902', imag='-0.98889770576286506') - - sage: import numpy # needs numpy -+ sage: if int(numpy.version.short_version[0]) > 1: # needs numpy -+ ....: numpy.set_printoptions(legacy="1.25") # needs numpy -+ - sage: sin(numpy.int32(0)) # needs numpy - 0.0 - sage: type(_) # needs numpy -diff --git a/src/sage/symbolic/ring.pyx b/src/sage/symbolic/ring.pyx -index 501b0920898..5b007d9e5fd 100644 ---- a/src/sage/symbolic/ring.pyx -+++ b/src/sage/symbolic/ring.pyx -@@ -1162,6 +1162,8 @@ cdef class NumpyToSRMorphism(Morphism): - We check that :issue:`8949` and :issue:`9769` are fixed (see also :issue:`18076`):: - - sage: import numpy # needs numpy -+ sage: if int(numpy.version.short_version[0]) > 1: # needs numpy -+ ....: numpy.set_printoptions(legacy="1.25") # needs numpy - sage: f(x) = x^2 - sage: f(numpy.int8('2')) # needs numpy - 4 diff --git a/srcpkgs/sagemath/patches/38344-ecm_7.0.6.patch b/srcpkgs/sagemath/patches/38344-ecm_7.0.6.patch deleted file mode 100644 index db0ae9030623b6..00000000000000 --- a/srcpkgs/sagemath/patches/38344-ecm_7.0.6.patch +++ /dev/null @@ -1,43 +0,0 @@ -diff --git a/src/sage/interfaces/ecm.py b/src/sage/interfaces/ecm.py -index 99287dec718..98011970404 100644 ---- a/src/sage/interfaces/ecm.py -+++ b/src/sage/interfaces/ecm.py -@@ -508,7 +508,6 @@ def _find_factor(self, n, factor_digits, B1, **kwds): - """ - n = self._validate(n) - kwds.setdefault('c', 1000000000) -- kwds.setdefault('I', 1) - if factor_digits is not None: - B1 = self.recommended_B1(factor_digits) - kwds['one'] = True -diff --git a/src/sage/libs/libecm.pyx b/src/sage/libs/libecm.pyx -index 886a9b816e4..83fb7adaf8d 100644 ---- a/src/sage/libs/libecm.pyx -+++ b/src/sage/libs/libecm.pyx -@@ -149,11 +149,13 @@ def ecmfactor(number, double B1, verbose=False, sigma=0): - Some special cases:: - - sage: ecmfactor(1, 100) -- (True, 1, ...) -+ Traceback (most recent call last): -+ ... -+ ValueError: Input number (1) must be greater than 1 - sage: ecmfactor(0, 100) - Traceback (most recent call last): - ... -- ValueError: Input number (0) must be positive -+ ValueError: Input number (0) must be greater than 1 - """ - cdef mpz_t n, f - cdef int res -@@ -164,8 +166,8 @@ def ecmfactor(number, double B1, verbose=False, sigma=0): - sage_int_number = Integer(number) - sage_int_sigma = Integer(sigma) - -- if number <= 0: -- raise ValueError("Input number (%s) must be positive"%number) -+ if number <= 1: -+ raise ValueError("Input number (%s) must be greater than 1"%number) - - if verbose: - print("Performing one curve with B1=%1.0f" % B1) diff --git a/srcpkgs/sagemath/patches/get_patches b/srcpkgs/sagemath/patches/get_patches index 28162dff8a38e1..5cab228f286365 100755 --- a/srcpkgs/sagemath/patches/get_patches +++ b/srcpkgs/sagemath/patches/get_patches @@ -19,7 +19,7 @@ get_pr() { echo "curl -sL \"$url\" | filterdiff ... > \"$pr-$desc.patch\"" if [ -z "$dry" ]; then curl -sL "$url" | - filterdiff -p1 -x src/setup.py -x build/* -x src/doc/* | + filterdiff -p1 -x src/setup.py -x environment* -x src/environment* -x build/* -x src/doc/* | cat > "$pr-$desc.patch" fi } @@ -29,8 +29,6 @@ cd $(dirname "$0") get_pr 36641 "sympy 1.13" get_pr 37884 "gap 4.13.1" -get_pr 38250 "numpy 2.0" -get_pr 38344 "ecm 7.0.6" #get_pr 37645 "fix doctest" #get_pr 37885 "cython warnings" diff --git a/srcpkgs/sagemath/template b/srcpkgs/sagemath/template index befe33a0188687..f5e1d8c68cfcbe 100644 --- a/srcpkgs/sagemath/template +++ b/srcpkgs/sagemath/template @@ -1,7 +1,7 @@ # Template file for 'sagemath' pkgname=sagemath -version=10.4 -revision=2 +version=10.5.beta2 +revision=1 _pypi_version=${version/.beta/b} _pypi_version=${_pypi_version/.rc/rc} build_style=python3-pep517 @@ -25,14 +25,14 @@ depends="eclib-devel fflas-ffpack flintlib-devel gcc-fortran meson gd-devel python3-sympy python3-traitlets sage-data-combinatorial_designs python3-conway-polynomials sage-data-elliptic_curves sage-data-graphs sage-data-polytopes_db sympow tachyon threejs-sage" -checkdepends="$depends pythran python3-Sphinx gdb" +checkdepends="$depends python3-pytest pythran python3-Sphinx gdb" short_desc="Open source mathematics software" maintainer="Gonzalo Tornaría " license="GPL-2.0-or-later" homepage="https://www.sagemath.org/" changelog="https://github.com/sagemath/sage/releases" distfiles="${PYPI_SITE}/s/sagemath-standard/sagemath_standard-${_pypi_version}.tar.gz" -checksum=f6579e85f33bd9bb6e9b991bfc4c49dab1e649858ed9ee41c7cec75cb92d4c62 +checksum=0fe0c82dd6959951fc07d55737d270290f64947e183a403ca25709e21b751dee nocross="due to ntl (eclib, singular), fflas-ffpack, givaro, linbox, sympow, maxima" # main repo `.../src/sage/` is `.../sage/` here From 69c04f99d3fa1bae9c234e3a161e4dba41ec275e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Wed, 14 Aug 2024 00:12:02 -0300 Subject: [PATCH 6/7] sagemath: enable all cython warnings --- srcpkgs/sagemath/patches/37885-cython_warnings.patch | 12 ++++++++++++ srcpkgs/sagemath/patches/get_patches | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/sagemath/patches/37885-cython_warnings.patch diff --git a/srcpkgs/sagemath/patches/37885-cython_warnings.patch b/srcpkgs/sagemath/patches/37885-cython_warnings.patch new file mode 100644 index 00000000000000..fa4b648cfc1577 --- /dev/null +++ b/srcpkgs/sagemath/patches/37885-cython_warnings.patch @@ -0,0 +1,12 @@ +diff --git a/src/sage_setup/command/sage_build_cython.py b/src/sage_setup/command/sage_build_cython.py +index f4b1357c543..3435c196d49 100644 +--- a/src/sage_setup/command/sage_build_cython.py ++++ b/src/sage_setup/command/sage_build_cython.py +@@ -226,6 +226,7 @@ def run(self): + compiler_directives=self.cython_directives, + compile_time_env=self.compile_time_env, + create_extension=self.create_extension, ++ show_all_warnings=True, + # Debugging + gdb_debug=self.debug, + output_dir=os.path.join(self.build_lib, "sage"), diff --git a/srcpkgs/sagemath/patches/get_patches b/srcpkgs/sagemath/patches/get_patches index 5cab228f286365..c182576ea553cd 100755 --- a/srcpkgs/sagemath/patches/get_patches +++ b/srcpkgs/sagemath/patches/get_patches @@ -31,4 +31,4 @@ get_pr 36641 "sympy 1.13" get_pr 37884 "gap 4.13.1" #get_pr 37645 "fix doctest" -#get_pr 37885 "cython warnings" +get_pr 37885 "cython warnings" From 7b24a6d2d50891008f6ffa4e4ca5b1de276e1a7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gonzalo=20Tornar=C3=ADa?= Date: Tue, 20 Aug 2024 17:56:06 -0300 Subject: [PATCH 7/7] sagemath: patch for numpy 2.1 --- srcpkgs/sagemath/patches/numpy_2.1a.patch | 28 +++ srcpkgs/sagemath/patches/numpy_2.1b.patch | 229 ++++++++++++++++++++++ 2 files changed, 257 insertions(+) create mode 100644 srcpkgs/sagemath/patches/numpy_2.1a.patch create mode 100644 srcpkgs/sagemath/patches/numpy_2.1b.patch diff --git a/srcpkgs/sagemath/patches/numpy_2.1a.patch b/srcpkgs/sagemath/patches/numpy_2.1a.patch new file mode 100644 index 00000000000000..493c75e2f8f8e0 --- /dev/null +++ b/srcpkgs/sagemath/patches/numpy_2.1a.patch @@ -0,0 +1,28 @@ +commit d755b32cbed462abf01a1cd782ba57cb92fbf713 +Author: Gonzalo Tornaría +Date: Mon Aug 19 23:25:32 2024 -0300 + + add copy parameter to numpy (needed for v2.1) + +diff --git a/src/sage/matrix/matrix1.pyx b/src/sage/matrix/matrix1.pyx +index 3edb9ead54d..2c76fd1e557 100644 +--- a/src/sage/matrix/matrix1.pyx ++++ b/src/sage/matrix/matrix1.pyx +@@ -670,7 +670,7 @@ cdef class Matrix(Matrix0): + entries = [[sib(v, 2) for v in row] for row in self.rows()] + return sib.name('matrix')(self.base_ring(), entries) + +- def numpy(self, dtype=None): ++ def numpy(self, dtype=None, copy=True): + """ + Return the Numpy matrix associated to this matrix. + +@@ -731,7 +731,7 @@ cdef class Matrix(Matrix0): + (3, 4) + """ + import numpy +- A = numpy.matrix(self.list(), dtype=dtype) ++ A = numpy.matrix(self.list(), dtype=dtype, copy=copy) + return numpy.resize(A,(self.nrows(), self.ncols())) + + # Define the magic "__array__" function so that numpy.array(m) can convert diff --git a/srcpkgs/sagemath/patches/numpy_2.1b.patch b/srcpkgs/sagemath/patches/numpy_2.1b.patch new file mode 100644 index 00000000000000..8dc0eec2b5a9d8 --- /dev/null +++ b/srcpkgs/sagemath/patches/numpy_2.1b.patch @@ -0,0 +1,229 @@ +commit 8260d18c3cf8e356db3d95fc46f6e68f75b453fd +Author: Gonzalo Tornaría +Date: Tue Aug 20 00:05:33 2024 -0300 + + silence np.set_printoptions (for numpy 2.1) + +diff --git a/src/sage/combinat/fully_packed_loop.py b/src/sage/combinat/fully_packed_loop.py +index 74a14fa1ecd..82e6c7eb3c8 100644 +--- a/src/sage/combinat/fully_packed_loop.py ++++ b/src/sage/combinat/fully_packed_loop.py +@@ -68,7 +68,7 @@ def _make_color_list(n, colors=None, color_map=None, randomize=False): + + sage: import numpy as np + sage: if int(np.version.short_version[0]) > 1: +- ....: np.set_printoptions(legacy="1.25") ++ ....: _token = np.set_printoptions(legacy="1.25") + sage: from sage.combinat.fully_packed_loop import _make_color_list + sage: _make_color_list(5) + sage: _make_color_list(5, ['blue', 'red']) +diff --git a/src/sage/functions/special.py b/src/sage/functions/special.py +index 308171af3cd..6f66624ef87 100644 +--- a/src/sage/functions/special.py ++++ b/src/sage/functions/special.py +@@ -219,7 +219,7 @@ class SphericalHarmonic(BuiltinFunction): + sage: from scipy.special import sph_harm # NB: arguments x and y are swapped # needs scipy + sage: import numpy as np # needs scipy + sage: if int(np.version.short_version[0]) > 1: # needs scipy +- ....: np.set_printoptions(legacy="1.25") # needs scipy ++ ....: _token = np.set_printoptions(legacy="1.25") # needs scipy + sage: sph_harm(1, 1, pi.n(), (pi/2).n()) # abs tol 1e-14 # needs scipy sage.symbolic + (0.3454941494713355-4.231083042742082e-17j) + +diff --git a/src/sage/numerical/optimize.py b/src/sage/numerical/optimize.py +index b3e42a6a6a2..13ffa4d1789 100644 +--- a/src/sage/numerical/optimize.py ++++ b/src/sage/numerical/optimize.py +@@ -381,7 +381,7 @@ def minimize(func, x0, gradient=None, hessian=None, algorithm='default', + ....: return sum(100.0r*(x[1r:]-x[:-1r]**2.0r)**2.0r + (1r-x[:-1r])**2.0r) + sage: import numpy + sage: if int(numpy.version.short_version[0]) > 1: +- ....: numpy.set_printoptions(legacy="1.25") ++ ....: _token = numpy.set_printoptions(legacy="1.25") + sage: from numpy import zeros + sage: def rosen_der(x): + ....: xm = x[1r:-1r] +diff --git a/src/sage/plot/arrow.py b/src/sage/plot/arrow.py +index 02442f90ba4..1fe3f0b051a 100644 +--- a/src/sage/plot/arrow.py ++++ b/src/sage/plot/arrow.py +@@ -55,7 +55,7 @@ class CurveArrow(GraphicPrimitive): + + sage: import numpy # to ensure numpy 2.0 compatibility + sage: if int(numpy.version.short_version[0]) > 1: +- ....: numpy.set_printoptions(legacy="1.25") ++ ....: _token = numpy.set_printoptions(legacy="1.25") + sage: from sage.plot.arrow import CurveArrow + sage: b = CurveArrow(path=[[(0,0),(.5,.5),(1,0)],[(.5,1),(0,0)]], + ....: options={}) +diff --git a/src/sage/plot/multigraphics.py b/src/sage/plot/multigraphics.py +index d2f70b44526..2eaacc6879e 100644 +--- a/src/sage/plot/multigraphics.py ++++ b/src/sage/plot/multigraphics.py +@@ -766,7 +766,7 @@ class MultiGraphics(WithEqualityById, SageObject): + (0.2, 0.3, 0.4, 0.1) + sage: import numpy # to ensure numpy 2.0 compatibility + sage: if int(numpy.version.short_version[0]) > 1: +- ....: numpy.set_printoptions(legacy="1.25") ++ ....: _token = numpy.set_printoptions(legacy="1.25") + sage: ax1.get_position().bounds # tol 1.0e-13 + (0.2, 0.3, 0.4000000000000001, 0.10000000000000003) + """ +@@ -1269,7 +1269,7 @@ class GraphicsArray(MultiGraphics): + sage: G = graphics_array([g1, g2]) + sage: import numpy # to ensure numpy 2.0 compatibility + sage: if int(numpy.version.short_version[0]) > 1: +- ....: numpy.set_printoptions(legacy="1.25") ++ ....: _token = numpy.set_printoptions(legacy="1.25") + sage: G.position(0) # tol 5.0e-3 + (0.025045451349937315, + 0.03415488992713045, +diff --git a/src/sage/plot/streamline_plot.py b/src/sage/plot/streamline_plot.py +index b69a05b37bf..25e404bfc7d 100644 +--- a/src/sage/plot/streamline_plot.py ++++ b/src/sage/plot/streamline_plot.py +@@ -72,7 +72,7 @@ class StreamlinePlot(GraphicPrimitive): + sage: x, y = var('x y') + sage: import numpy # to ensure numpy 2.0 compatibility + sage: if int(numpy.version.short_version[0]) > 1: +- ....: numpy.set_printoptions(legacy="1.25") ++ ....: _token = numpy.set_printoptions(legacy="1.25") + sage: d = streamline_plot((.01*x, x+y), (x,10,20), (y,10,20))[0].get_minmax_data() + sage: d['xmin'] + 10.0 +diff --git a/src/sage/rings/integer.pyx b/src/sage/rings/integer.pyx +index 11811b9587f..8ce0f7f2683 100644 +--- a/src/sage/rings/integer.pyx ++++ b/src/sage/rings/integer.pyx +@@ -595,7 +595,7 @@ cdef class Integer(sage.structure.element.EuclideanDomainElement): + sage: # needs numpy + sage: import numpy + sage: if int(numpy.version.short_version[0]) > 1: +- ....: numpy.set_printoptions(legacy="1.25") ++ ....: _token = numpy.set_printoptions(legacy="1.25") + sage: numpy.int8('12') == 12 + True + sage: 12 == numpy.int8('12') +diff --git a/src/sage/rings/real_mpfi.pyx b/src/sage/rings/real_mpfi.pyx +index 11953a50ab5..6aafcceed89 100644 +--- a/src/sage/rings/real_mpfi.pyx ++++ b/src/sage/rings/real_mpfi.pyx +@@ -232,7 +232,7 @@ TESTS:: + + sage: import numpy # needs numpy + sage: if int(numpy.version.short_version[0]) > 1: # needs numpy +- ....: numpy.set_printoptions(legacy="1.25") # needs numpy ++ ....: _token = numpy.set_printoptions(legacy="1.25") # needs numpy + sage: RIF(2) == numpy.int8('2') # needs numpy + True + sage: numpy.int8('2') == RIF(2) # needs numpy +diff --git a/src/sage/schemes/elliptic_curves/period_lattice_region.pyx b/src/sage/schemes/elliptic_curves/period_lattice_region.pyx +index 40b92ab23eb..3838bcccb8a 100755 +--- a/src/sage/schemes/elliptic_curves/period_lattice_region.pyx ++++ b/src/sage/schemes/elliptic_curves/period_lattice_region.pyx +@@ -78,7 +78,7 @@ cdef class PeriodicRegion: + + sage: import numpy as np + sage: if int(np.version.short_version[0]) > 1: +- ....: np.set_printoptions(legacy="1.25") ++ ....: _token = np.set_printoptions(legacy="1.25") + sage: from sage.schemes.elliptic_curves.period_lattice_region import PeriodicRegion + sage: data = np.zeros((4, 4)) + sage: PeriodicRegion(CDF(2), CDF(2*I), data).is_empty() +@@ -296,7 +296,7 @@ cdef class PeriodicRegion: + + sage: import numpy as np + sage: if int(np.version.short_version[0]) > 1: +- ....: np.set_printoptions(legacy="1.25") ++ ....: _token = np.set_printoptions(legacy="1.25") + sage: from sage.schemes.elliptic_curves.period_lattice_region import PeriodicRegion + sage: data = np.zeros((10, 10)) + sage: data[1:4,1:4] = True +@@ -320,7 +320,7 @@ cdef class PeriodicRegion: + + sage: import numpy as np + sage: if int(np.version.short_version[0]) > 1: +- ....: np.set_printoptions(legacy="1.25") ++ ....: _token = np.set_printoptions(legacy="1.25") + sage: from sage.schemes.elliptic_curves.period_lattice_region import PeriodicRegion + sage: data = np.zeros((4, 4)) + sage: data[1,1] = True +@@ -375,7 +375,7 @@ cdef class PeriodicRegion: + + sage: import numpy as np + sage: if int(np.version.short_version[0]) > 1: +- ....: np.set_printoptions(legacy="1.25") ++ ....: _token = np.set_printoptions(legacy="1.25") + sage: from sage.schemes.elliptic_curves.period_lattice_region import PeriodicRegion + + sage: data = np.zeros((20, 20)) +@@ -528,7 +528,7 @@ cdef class PeriodicRegion: + + sage: import numpy as np + sage: if int(np.version.short_version[0]) > 1: +- ....: np.set_printoptions(legacy="1.25") ++ ....: _token = np.set_printoptions(legacy="1.25") + sage: from sage.schemes.elliptic_curves.period_lattice_region import PeriodicRegion + sage: data = np.zeros((4, 4)) + sage: data[1, 1] = True +diff --git a/src/sage/stats/basic_stats.py b/src/sage/stats/basic_stats.py +index 47d890cf0ab..ba7f0cdb0f9 100644 +--- a/src/sage/stats/basic_stats.py ++++ b/src/sage/stats/basic_stats.py +@@ -222,7 +222,7 @@ def std(v, bias=False): + sage: # needs numpy + sage: import numpy + sage: if int(numpy.version.short_version[0]) > 1: +- ....: numpy.set_printoptions(legacy="1.25") ++ ....: _token = numpy.set_printoptions(legacy="1.25") + sage: x = numpy.array([1,2,3,4,5]) + sage: std(x, bias=False) + 1.5811388300841898 +@@ -299,7 +299,7 @@ def variance(v, bias=False): + 0.4897530450000000? + sage: import numpy # needs numpy + sage: if int(numpy.version.short_version[0]) > 1: # needs numpy +- ....: numpy.set_printoptions(legacy="1.25") # needs numpy ++ ....: _token = numpy.set_printoptions(legacy="1.25") # needs numpy + sage: x = numpy.array([1,2,3,4,5]) # needs numpy + sage: variance(x, bias=False) # needs numpy + 2.5 +diff --git a/src/sage/structure/coerce.pyx b/src/sage/structure/coerce.pyx +index cc15eff82e9..e32e7fd28b3 100644 +--- a/src/sage/structure/coerce.pyx ++++ b/src/sage/structure/coerce.pyx +@@ -521,7 +521,7 @@ cdef class CoercionModel: + + sage: import numpy # needs numpy + sage: if int(numpy.version.short_version[0]) > 1: # needs numpy +- ....: numpy.set_printoptions(legacy="1.25") # needs numpy ++ ....: _token = numpy.set_printoptions(legacy="1.25") # needs numpy + + sage: # needs sage.rings.real_mpfr + sage: x = polygen(RR) +diff --git a/src/sage/symbolic/function.pyx b/src/sage/symbolic/function.pyx +index 362d01ea297..92bce28b032 100644 +--- a/src/sage/symbolic/function.pyx ++++ b/src/sage/symbolic/function.pyx +@@ -962,7 +962,7 @@ cdef class BuiltinFunction(Function): + + sage: import numpy # needs numpy + sage: if int(numpy.version.short_version[0]) > 1: # needs numpy +- ....: numpy.set_printoptions(legacy="1.25") # needs numpy ++ ....: _token = numpy.set_printoptions(legacy="1.25") # needs numpy + + sage: sin(numpy.int32(0)) # needs numpy + 0.0 +diff --git a/src/sage/symbolic/ring.pyx b/src/sage/symbolic/ring.pyx +index 32afe8d3a62..63734e68f63 100644 +--- a/src/sage/symbolic/ring.pyx ++++ b/src/sage/symbolic/ring.pyx +@@ -1154,7 +1154,7 @@ cdef class NumpyToSRMorphism(Morphism): + + sage: import numpy # needs numpy + sage: if int(numpy.version.short_version[0]) > 1: # needs numpy +- ....: numpy.set_printoptions(legacy="1.25") # needs numpy ++ ....: _token = numpy.set_printoptions(legacy="1.25") # needs numpy + sage: f(x) = x^2 + sage: f(numpy.int8('2')) # needs numpy + 4