sagemath: patch for numpy 2.1

This commit is contained in:
Gonzalo Tornaría 2024-08-19 22:20:05 -03:00 committed by Andrew J. Hesford
parent e7829447ef
commit 43ff15a5ea
3 changed files with 259 additions and 2 deletions

View File

@ -0,0 +1,28 @@
commit 241dc39bd0ba1c056f88bee46a0345d59093eaff
Author: Gonzalo Tornaría <tornaria@cmat.edu.uy>
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 c38df5412f0..f587cef651a 100644
--- a/src/sage/matrix/matrix1.pyx
+++ b/src/sage/matrix/matrix1.pyx
@@ -671,7 +671,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.
@@ -732,7 +732,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

View File

@ -0,0 +1,229 @@
commit 8b32fdb87725c1d67ffb51dadec1c331c7c35f3c
Author: Gonzalo Tornaría <tornaria@cmat.edu.uy>
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 b3ebd206cd2..48866824224 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 2a03bb68f67..30b56722e66 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 7ae8ca4966f..4cba22efdba 100644
--- a/src/sage/numerical/optimize.py
+++ b/src/sage/numerical/optimize.py
@@ -385,7 +385,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 23e2517ca56..7375dcd5d1c 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 6be448f1e04..004594b77c4 100644
--- a/src/sage/plot/multigraphics.py
+++ b/src/sage/plot/multigraphics.py
@@ -786,7 +786,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)
@@ -1300,7 +1300,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 d2cb11088c7..6d88517cc15 100644
--- a/src/sage/plot/streamline_plot.py
+++ b/src/sage/plot/streamline_plot.py
@@ -73,7 +73,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 38c30f7627b..cfb8a5ff5f7 100644
--- a/src/sage/rings/integer.pyx
+++ b/src/sage/rings/integer.pyx
@@ -594,7 +594,7 @@ cdef class Integer(sage.structure.element.EuclideanDomainElement):
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: numpy.int8('12') == 12 # needs numpy
True
sage: 12 == numpy.int8('12') # needs numpy
diff --git a/src/sage/rings/real_mpfi.pyx b/src/sage/rings/real_mpfi.pyx
index 76fbfedab95..57de30c9d18 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 70ce616f92f..f604c6d3785 100644
--- 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()
@@ -298,7 +298,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
@@ -322,7 +322,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
@@ -377,7 +377,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))
@@ -529,7 +529,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 6937f6cb410..fb296e00fb6 100644
--- a/src/sage/stats/basic_stats.py
+++ b/src/sage/stats/basic_stats.py
@@ -228,7 +228,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
@@ -307,7 +307,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 955a256e9b4..e5ed6160b79 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 cd89ad2a256..6fdf6d8ef23 100644
--- a/src/sage/symbolic/function.pyx
+++ b/src/sage/symbolic/function.pyx
@@ -965,7 +965,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 5b007d9e5fd..4a096d317e7 100644
--- a/src/sage/symbolic/ring.pyx
+++ b/src/sage/symbolic/ring.pyx
@@ -1163,7 +1163,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

View File

@ -1,7 +1,7 @@
# Template file for 'sagemath' # Template file for 'sagemath'
pkgname=sagemath pkgname=sagemath
version=10.4 version=10.4
revision=2 revision=3
_pypi_version=${version/.beta/b} _pypi_version=${version/.beta/b}
_pypi_version=${_pypi_version/.rc/rc} _pypi_version=${_pypi_version/.rc/rc}
build_style=python3-pep517 build_style=python3-pep517
@ -25,7 +25,7 @@ depends="eclib-devel fflas-ffpack flintlib-devel gcc-fortran meson gd-devel
python3-sympy python3-traitlets sage-data-combinatorial_designs python3-sympy python3-traitlets sage-data-combinatorial_designs
python3-conway-polynomials sage-data-elliptic_curves sage-data-graphs python3-conway-polynomials sage-data-elliptic_curves sage-data-graphs
sage-data-polytopes_db sympow tachyon threejs-sage" 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" short_desc="Open source mathematics software"
maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>" maintainer="Gonzalo Tornaría <tornaria@cmat.edu.uy>"
license="GPL-2.0-or-later" license="GPL-2.0-or-later"