Version 9.8

Also:
- Drop upstreamed patches: -fes-build, -python3.11
- Add patches: -catch-value, -gap-split-root, -bind2nd, -mem-fun-ref
This commit is contained in:
Jerry James 2023-03-13 16:09:59 -06:00
parent a560530636
commit d510b9edac
15 changed files with 553 additions and 1223 deletions

20
sagemath-bind2nd.patch Normal file
View file

@ -0,0 +1,20 @@
diff -up src/sage/modular/arithgroup/farey.cpp.orig src/sage/modular/arithgroup/farey.cpp
--- src/sage/modular/arithgroup/farey.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/modular/arithgroup/farey.cpp 2023-03-13 12:54:35.465197691 -0600
@@ -24,6 +24,7 @@
#include <sstream>
#include <algorithm>
#include <cassert>
+#include <functional>
#include <gmpxx.h>
#include <Python.h>
@@ -737,7 +738,7 @@ size_t FareySymbol::nu3() const {
size_t FareySymbol::rank_pi() const {
if( index() == 2 ) return 1;
return count_if(pairing.begin(), pairing.end(),
- bind2nd(greater<int>(), 0))/2;
+ bind(greater<int>(), placeholders::_1, 0))/2;
}
size_t FareySymbol::number_of_cusps() const {

232
sagemath-catch-value.patch Normal file
View file

@ -0,0 +1,232 @@
diff -up src/sage/graphs/base/boost_interface.cpp.orig src/sage/graphs/base/boost_interface.cpp
--- src/sage/graphs/base/boost_interface.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/graphs/base/boost_interface.cpp 2023-03-13 11:32:02.724494081 -0600
@@ -240,7 +240,7 @@ public:
try {
boost::dijkstra_shortest_paths(graph, vertices[s], distance_map(boost::make_iterator_property_map(distances.begin(), index))
.predecessor_map(boost::make_iterator_property_map(predecessors.begin(), index)));
- } catch (boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::negative_edge> > e) {
+ } catch (boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::negative_edge> >& e) {
return to_return;
}
diff -up src/sage/symbolic/ginac/function.cpp.orig src/sage/symbolic/ginac/function.cpp
--- src/sage/symbolic/ginac/function.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/function.cpp 2023-03-13 11:32:31.540967570 -0600
@@ -961,12 +961,12 @@ ex function::evalf(int level, PyObject*
try {
return n.try_py_method(get_name());
}
- catch (std::logic_error) {
+ catch (std::logic_error&) {
try {
const numeric& nn = ex_to<numeric>(n.evalf()).try_py_method(get_name());
return nn.to_dict_parent(kwds);
}
- catch (std::logic_error) {}
+ catch (std::logic_error&) {}
}
}
return function(serial,eseq).hold();
diff -up src/sage/symbolic/ginac/inifcns_trans.cpp.orig src/sage/symbolic/ginac/inifcns_trans.cpp
--- src/sage/symbolic/ginac/inifcns_trans.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/inifcns_trans.cpp 2023-03-13 11:32:57.173499217 -0600
@@ -379,7 +379,7 @@ static ex log_series(const ex &arg,
// maybe substitution of rel into arg fails because of a pole
try {
arg_pt = arg.subs(rel, subs_options::no_pattern);
- } catch (pole_error) {
+ } catch (pole_error&) {
must_expand_arg = true;
}
// or we are at the branch point anyways
diff -up src/sage/symbolic/ginac/mpoly-singular.cpp.orig src/sage/symbolic/ginac/mpoly-singular.cpp
--- src/sage/symbolic/ginac/mpoly-singular.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/mpoly-singular.cpp 2023-03-13 11:33:28.275930939 -0600
@@ -76,7 +76,7 @@ static CanonicalForm num2canonical(const
try {
return n.to_canonical();
}
- catch (std::runtime_error) {
+ catch (std::runtime_error&) {
if (not n.is_real()) {
numeric re = n.real();
numeric im = n.imag();
@@ -233,7 +233,7 @@ const CanonicalForm ex::to_canonical(ex_
try {
return ::power(var, n.to_long());
}
- catch (std::runtime_error) {
+ catch (std::runtime_error&) {
throw std::runtime_error("exponent too big");
}
}
@@ -261,7 +261,7 @@ const CanonicalForm ex::to_canonical(ex_
try {
return ::power(var, n.to_long());
}
- catch (std::runtime_error) {
+ catch (std::runtime_error&) {
throw std::runtime_error("exponent too big");
}
}
diff -up src/sage/symbolic/ginac/numeric.cpp.orig src/sage/symbolic/ginac/numeric.cpp
--- src/sage/symbolic/ginac/numeric.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/numeric.cpp 2023-03-13 12:53:12.671709229 -0600
@@ -3636,11 +3636,11 @@ const numeric numeric::real() const {
try {
return try_py_method("real");
}
- catch (std::logic_error) {}
+ catch (std::logic_error&) {}
try {
return try_py_method("real_part");
}
- catch (std::logic_error) {}
+ catch (std::logic_error&) {}
return *this;
}
default:
@@ -3664,11 +3664,11 @@ const numeric numeric::imag() const {
try {
return try_py_method("imag");
}
- catch (std::logic_error) {}
+ catch (std::logic_error&) {}
try {
return try_py_method("imag_part");
}
- catch (std::logic_error) {}
+ catch (std::logic_error&) {}
return *_num0_p;
}
default:
@@ -4945,11 +4945,11 @@ const numeric Li2(const numeric &x, PyOb
try {
return x.try_py_method("dilog");
}
- catch (std::logic_error) {}
+ catch (std::logic_error&) {}
try {
return x.try_py_method("polylog", *_num2_p);
}
- catch (std::logic_error) {}
+ catch (std::logic_error&) {}
return x.Li2(*_num2_p, parent);
}
diff -up src/sage/symbolic/ginac/pseries.cpp.orig src/sage/symbolic/ginac/pseries.cpp
--- src/sage/symbolic/ginac/pseries.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/pseries.cpp 2023-03-13 11:34:56.953310716 -0600
@@ -855,7 +855,7 @@ ex mul::series(const relational & r, int
bool flag_redo = false;
try {
real_ldegree = buf.expand().ldegree(sym-r.rhs()).to_int();
- } catch (std::runtime_error) {}
+ } catch (std::runtime_error&) {}
if (real_ldegree == 0) {
if ( factor < 0 ) {
@@ -1053,7 +1053,7 @@ ex power::series(const relational & r, i
if (is_exactly_a<infinity>(basis_subs)) {
must_expand_basis = true;
}
- } catch (pole_error) {
+ } catch (pole_error&) {
must_expand_basis = true;
}
@@ -1063,7 +1063,7 @@ ex power::series(const relational & r, i
if (is_exactly_a<infinity>(exponent_subs)) {
exponent_is_regular = false;
}
- } catch (pole_error) {
+ } catch (pole_error&) {
exponent_is_regular = false;
}
@@ -1133,7 +1133,7 @@ ex power::series(const relational & r, i
ex result;
try {
result = ex_to<pseries>(e).power_const(numexp, order);
- } catch (pole_error) {
+ } catch (pole_error&) {
epvector ser;
ser.emplace_back(Order(_ex1), order);
result = pseries(r, ser);
@@ -1203,7 +1203,7 @@ ex ex::series(const ex & r, int order, u
order,
options);
}
- catch(flint_error) {
+ catch(flint_error&) {
;
}
}
diff -up src/sage/symbolic/ginac/sum.cpp.orig src/sage/symbolic/ginac/sum.cpp
--- src/sage/symbolic/ginac/sum.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/sum.cpp 2023-03-13 11:35:12.139033264 -0600
@@ -562,7 +562,7 @@ ex gosper_sum_definite(ex f, ex s, ex a,
return res;
return t;
}
- catch (gosper_domain_error) {
+ catch (gosper_domain_error&) {
*success = 0;
return _ex0;
}
@@ -579,7 +579,7 @@ ex gosper_sum_indefinite(ex f, ex s, int
return res;
return t;
}
- catch (gosper_domain_error) {
+ catch (gosper_domain_error&) {
*success = 0;
return _ex0;
}
diff -up src/sage/symbolic/ginac/upoly-ginac.cpp.orig src/sage/symbolic/ginac/upoly-ginac.cpp
--- src/sage/symbolic/ginac/upoly-ginac.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/upoly-ginac.cpp 2023-03-13 11:35:36.657585291 -0600
@@ -240,7 +240,7 @@ ex decomp_rational(const ex &a, const ex
try {
q = quo(numer, denom, x);
}
- catch (std::logic_error) {
+ catch (std::logic_error&) {
return a;
}
return q + rem(numer, denom, x) / denom;
@@ -536,7 +536,7 @@ ex parfrac(const ex & a, const ex & x)
// Convert N(x)/D(x) -> Q(x) + R(x)/D(x), so degree(R) < degree(D)
qr = quo_rem(numer, denom, x, true);
}
- catch (std::logic_error) {
+ catch (std::logic_error&) {
return a;
}
// Factorize denominator and compute cofactors
diff -up src/sage/symbolic/ginac/useries.cpp.orig src/sage/symbolic/ginac/useries.cpp
--- src/sage/symbolic/ginac/useries.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/useries.cpp 2023-03-13 11:35:59.505167856 -0600
@@ -322,10 +322,10 @@ bool useries_can_handle(const ex& the_ex
(void) nd.op(1).degree(s).to_long();
(void) nd.op(1).ldegree(s).to_long();
}
- catch (conversion_error) {
+ catch (conversion_error&) {
throw std::runtime_error("exponent too big");
}
- catch (std::runtime_error) {}
+ catch (std::runtime_error&) {}
}
return ok;
}
@@ -406,7 +406,7 @@ ex useries(const ex& the_ex, const symbo
try {
ldeg = low_series_degree(the_ex);
}
- catch (ldegree_error) {
+ catch (ldegree_error&) {
may_extend = true;
}

View file

@ -33,7 +33,7 @@ diff -up src/sage/env.py.orig src/sage/env.py
+MTXLIB = var("MTXLIB", join(DOT_SAGE, "meataxe")) +MTXLIB = var("MTXLIB", join(DOT_SAGE, "meataxe"))
THREEJS_DIR = var("THREEJS_DIR", join(SAGE_SHARE, "threejs-sage")) THREEJS_DIR = var("THREEJS_DIR", join(SAGE_SHARE, "threejs-sage"))
-PPLPY_DOCS = var("PPLPY_DOCS", join(SAGE_SHARE, "doc", "pplpy")) -PPLPY_DOCS = var("PPLPY_DOCS", join(SAGE_SHARE, "doc", "pplpy"))
+PPLPY_DOCS = var("PPLPY_DOCS", join("/usr", "share", "doc", "python3-pplpy")) +PPLPY_DOCS = var("PPLPY_DOCS", join("/usr", "share", "doc", "python3-pplpy-devel"))
MAXIMA = var("MAXIMA", "maxima") MAXIMA = var("MAXIMA", "maxima")
MAXIMA_FAS = var("MAXIMA_FAS") MAXIMA_FAS = var("MAXIMA_FAS")
KENZO_FAS = var("KENZO_FAS") KENZO_FAS = var("KENZO_FAS")

View file

@ -1,7 +1,7 @@
diff -up src/sage/graphs/strongly_regular_db.pyx.orig src/sage/graphs/strongly_regular_db.pyx diff -up src/sage/graphs/strongly_regular_db.pyx.orig src/sage/graphs/strongly_regular_db.pyx
--- src/sage/graphs/strongly_regular_db.pyx.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/graphs/strongly_regular_db.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/graphs/strongly_regular_db.pyx 2023-01-15 16:25:07.239217420 -0700 +++ src/sage/graphs/strongly_regular_db.pyx 2023-03-13 08:43:22.143746071 -0600
@@ -2424,7 +2424,7 @@ def strongly_regular_from_two_intersecti @@ -2443,7 +2443,7 @@ def strongly_regular_from_two_intersecti
A set of points in the projective geometry `PG(k,q)` is said to be a A set of points in the projective geometry `PG(k,q)` is said to be a
2-intersection set if it intersects every hyperplane in either `h_1` or 2-intersection set if it intersects every hyperplane in either `h_1` or
@ -11,8 +11,8 @@ diff -up src/sage/graphs/strongly_regular_db.pyx.orig src/sage/graphs/strongly_r
From a 2-intersection set `S` can be defined a strongly-regular graph in the From a 2-intersection set `S` can be defined a strongly-regular graph in the
following way: following way:
diff -up src/sage/groups/group.pyx.orig src/sage/groups/group.pyx diff -up src/sage/groups/group.pyx.orig src/sage/groups/group.pyx
--- src/sage/groups/group.pyx.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/groups/group.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/groups/group.pyx 2023-01-15 16:25:07.239217420 -0700 +++ src/sage/groups/group.pyx 2023-03-13 08:43:22.143746071 -0600
@@ -51,7 +51,7 @@ def is_Group(x): @@ -51,7 +51,7 @@ def is_Group(x):
@ -23,8 +23,8 @@ diff -up src/sage/groups/group.pyx.orig src/sage/groups/group.pyx
TESTS:: TESTS::
diff -up src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx diff -up src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx
--- src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx 2023-01-15 16:25:08.856187835 -0700 +++ src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx 2023-03-13 08:43:22.144746053 -0600
@@ -105,7 +105,7 @@ cdef class LinearBinaryCodeStruct(Binary @@ -105,7 +105,7 @@ cdef class LinearBinaryCodeStruct(Binary
self.ith_word = &ith_word_linear self.ith_word = &ith_word_linear
@ -34,96 +34,9 @@ diff -up src/sage/groups/perm_gps/partn_ref/refinement_binary.pyx.orig src/sage/
Perform the canonical labeling and automorphism group computation, Perform the canonical labeling and automorphism group computation,
storing results to self. storing results to self.
diff -up src/sage/libs/eclib/newforms.pyx.orig src/sage/libs/eclib/newforms.pyx
--- src/sage/libs/eclib/newforms.pyx.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/sage/libs/eclib/newforms.pyx 2023-01-15 16:25:10.727153601 -0700
@@ -22,7 +22,7 @@ from sage.modular.all import Cusp
cdef class ECModularSymbol:
- """
+ r"""
Modular symbol associated with an elliptic curve, using John Cremona's newforms class.
EXAMPLES::
diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx
--- src/sage/libs/fes.pyx.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/sage/libs/fes.pyx 2023-01-15 16:25:10.727153601 -0700
@@ -292,7 +292,7 @@ def find_coordinate_change(As, max_tries
def prepare_polynomials(f):
- """
+ r"""
Finds a linear combination of the equations that is faster to solve by FES
INPUT:
diff -up src/sage/libs/ntl/ntl_GF2E.pyx.orig src/sage/libs/ntl/ntl_GF2E.pyx
--- src/sage/libs/ntl/ntl_GF2E.pyx.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/sage/libs/ntl/ntl_GF2E.pyx 2023-01-15 16:25:10.727153601 -0700
@@ -73,7 +73,7 @@ def ntl_GF2E_random(ntl_GF2EContext_clas
cdef class ntl_GF2E():
r"""
- The \\class{GF2E} represents a finite extension field over GF(2)
+ The \class{GF2E} represents a finite extension field over GF(2)
using NTL. Elements are represented as polynomials over GF(2)
modulo a modulus.
@@ -439,7 +439,7 @@ cdef class ntl_GF2E():
return l
def _sage_(ntl_GF2E self, k=None):
- """
+ r"""
Returns a \class{FiniteFieldElement} representation
of this element. If a \class{FiniteField} k is provided
it is constructed in this field if possible. A \class{FiniteField}
diff -up src/sage/libs/ntl/ntl_mat_GF2E.pyx.orig src/sage/libs/ntl/ntl_mat_GF2E.pyx
--- src/sage/libs/ntl/ntl_mat_GF2E.pyx.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/sage/libs/ntl/ntl_mat_GF2E.pyx 2023-01-15 16:25:10.728153583 -0700
@@ -181,7 +181,7 @@ cdef class ntl_mat_GF2E():
return unpickle_class_args, (ntl_mat_GF2E, (self.modulus_context(), self.x.NumRows(), self.x.NumCols(), self.list()))
def __repr__(self):
- """
+ r"""
Return the string representation of self.
EXAMPLES::
@@ -446,7 +446,7 @@ cdef class ntl_mat_GF2E():
return r
def gauss(self,ncols=-1):
- """
+ r"""
Performs unitary row operations so as to bring this matrix
into row echelon form. If the optional argument \code{ncols}
is supplied, stops when first ncols columns are in echelon
diff -up src/sage/libs/ntl/ntl_mat_GF2.pyx.orig src/sage/libs/ntl/ntl_mat_GF2.pyx
--- src/sage/libs/ntl/ntl_mat_GF2.pyx.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/sage/libs/ntl/ntl_mat_GF2.pyx 2023-01-15 16:33:39.175760142 -0700
@@ -5,7 +5,7 @@
# distutils: extra_link_args = NTL_LIBEXTRA
# distutils: language = c++
-"""
+r"""
Matrices over the `\GF{2}` via NTL
This class is only provided to have a complete NTL interface and for
@@ -376,7 +376,7 @@ cdef class ntl_mat_GF2():
return r
def gauss(self,ncols=-1):
- """
+ r"""
Performs unitary row operations so as to bring this matrix
into row echelon form (not reduced!). If the optional
argument \code{ncols} is supplied, stops when first ncols
diff -up src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig src/sage/libs/ntl/ntl_mat_ZZ.pyx diff -up src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig src/sage/libs/ntl/ntl_mat_ZZ.pyx
--- src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/ntl/ntl_mat_ZZ.pyx 2023-01-15 16:25:10.728153583 -0700 +++ src/sage/libs/ntl/ntl_mat_ZZ.pyx 2023-03-13 08:43:33.262545927 -0600
@@ -129,7 +129,7 @@ cdef class ntl_mat_ZZ(): @@ -129,7 +129,7 @@ cdef class ntl_mat_ZZ():
return unpickle_class_args, (ntl_mat_ZZ, (self.__nrows, self.__ncols, self.list())) return unpickle_class_args, (ntl_mat_ZZ, (self.__nrows, self.__ncols, self.list()))
@ -133,45 +46,9 @@ diff -up src/sage/libs/ntl/ntl_mat_ZZ.pyx.orig src/sage/libs/ntl/ntl_mat_ZZ.pyx
Return the string representation of self. Return the string representation of self.
EXAMPLES:: EXAMPLES::
diff -up src/sage/libs/ntl/ntl_ZZ_pEX.pyx.orig src/sage/libs/ntl/ntl_ZZ_pEX.pyx
--- src/sage/libs/ntl/ntl_ZZ_pEX.pyx.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/sage/libs/ntl/ntl_ZZ_pEX.pyx 2023-01-15 17:03:36.337323674 -0700
@@ -5,7 +5,7 @@
# distutils: extra_link_args = NTL_LIBEXTRA
# distutils: language = c++
-"""
+r"""
Wrapper for NTL's polynomials over finite ring extensions of `\Z / p\Z.`
AUTHORS:
diff -up src/sage/libs/ntl/ntl_ZZX.pyx.orig src/sage/libs/ntl/ntl_ZZX.pyx
--- src/sage/libs/ntl/ntl_ZZX.pyx.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/sage/libs/ntl/ntl_ZZX.pyx 2023-01-15 16:25:10.729153564 -0700
@@ -692,7 +692,7 @@ cdef class ntl_ZZX():
return (self*other).quo_rem(g)[0]
def xgcd(self, ntl_ZZX other, proof=None):
- """
+ r"""
If self and other are coprime over the rationals, return r, s,
t such that r = s*self + t*other. Otherwise return 0. This
is \emph{not} the same as the \sage function on polynomials
diff -up src/sage/libs/singular/polynomial.pyx.orig src/sage/libs/singular/polynomial.pyx
--- src/sage/libs/singular/polynomial.pyx.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/sage/libs/singular/polynomial.pyx 2023-01-15 16:25:10.729153564 -0700
@@ -22,7 +22,7 @@ cdef extern from *: # hack to get at cyt
int unlikely(int)
import re
-plusminus_pattern = re.compile("([^\(^])([\+\-])")
+plusminus_pattern = re.compile(r"([^\(^])([\+\-])")
parenthvar_pattern = re.compile(r"\(([a-zA-Z][a-zA-Z0-9]*)\)")
from sage.cpython.string cimport bytes_to_str, str_to_bytes
diff -up src/sage/libs/symmetrica/sc.pxi.orig src/sage/libs/symmetrica/sc.pxi diff -up src/sage/libs/symmetrica/sc.pxi.orig src/sage/libs/symmetrica/sc.pxi
--- src/sage/libs/symmetrica/sc.pxi.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/libs/symmetrica/sc.pxi.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/symmetrica/sc.pxi 2023-01-15 16:25:10.729153564 -0700 +++ src/sage/libs/symmetrica/sc.pxi 2023-03-13 08:43:36.725482994 -0600
@@ -103,7 +103,7 @@ def charvalue_symmetrica(irred, cls, tab @@ -103,7 +103,7 @@ def charvalue_symmetrica(irred, cls, tab
@ -182,8 +59,8 @@ diff -up src/sage/libs/symmetrica/sc.pxi.orig src/sage/libs/symmetrica/sc.pxi
MATRIX object, the charactertable of S_b \wr S_a, co becomes a MATRIX object, the charactertable of S_b \wr S_a, co becomes a
VECTOR object of classorders and cl becomes a VECTOR object of VECTOR object of classorders and cl becomes a VECTOR object of
diff -up src/sage/matrix/matrix_integer_dense.pyx.orig src/sage/matrix/matrix_integer_dense.pyx diff -up src/sage/matrix/matrix_integer_dense.pyx.orig src/sage/matrix/matrix_integer_dense.pyx
--- src/sage/matrix/matrix_integer_dense.pyx.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/matrix/matrix_integer_dense.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/matrix/matrix_integer_dense.pyx 2023-01-15 16:25:13.768097961 -0700 +++ src/sage/matrix/matrix_integer_dense.pyx 2023-03-13 08:43:36.727482958 -0600
@@ -757,7 +757,7 @@ cdef class Matrix_integer_dense(Matrix_d @@ -757,7 +757,7 @@ cdef class Matrix_integer_dense(Matrix_d
return ans return ans
@ -194,8 +71,8 @@ diff -up src/sage/matrix/matrix_integer_dense.pyx.orig src/sage/matrix/matrix_in
sage: n = 3 sage: n = 3
diff -up src/sage/matrix/matrix_modn_dense_template.pxi.orig src/sage/matrix/matrix_modn_dense_template.pxi diff -up src/sage/matrix/matrix_modn_dense_template.pxi.orig src/sage/matrix/matrix_modn_dense_template.pxi
--- src/sage/matrix/matrix_modn_dense_template.pxi.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/matrix/matrix_modn_dense_template.pxi.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/matrix/matrix_modn_dense_template.pxi 2023-01-15 16:25:13.768097961 -0700 +++ src/sage/matrix/matrix_modn_dense_template.pxi 2023-03-13 08:43:36.728482940 -0600
@@ -649,7 +649,7 @@ cdef class Matrix_modn_dense_template(Ma @@ -649,7 +649,7 @@ cdef class Matrix_modn_dense_template(Ma
return (word_size, little_endian, s), 10 return (word_size, little_endian, s), 10
@ -214,99 +91,9 @@ diff -up src/sage/matrix/matrix_modn_dense_template.pxi.orig src/sage/matrix/mat
Reduces ``row1`` and ``row2`` by a unimodular transformation Reduces ``row1`` and ``row2`` by a unimodular transformation
using the xgcd relation between their first coefficients ``a`` and using the xgcd relation between their first coefficients ``a`` and
``b``. ``b``.
diff -up src/sage/matroids/basis_exchange_matroid.pyx.orig src/sage/matroids/basis_exchange_matroid.pyx
--- src/sage/matroids/basis_exchange_matroid.pyx.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/matroids/basis_exchange_matroid.pyx 2023-01-15 16:25:13.770097924 -0700
@@ -2115,7 +2115,7 @@ cdef class BasisExchangeMatroid(Matroid)
return EQ[0]
cpdef _is_isomorphism(self, other, morphism):
- """
+ r"""
Version of is_isomorphism() that does no type checking.
INPUT:
diff -up src/sage/matroids/linear_matroid.pyx.orig src/sage/matroids/linear_matroid.pyx
--- src/sage/matroids/linear_matroid.pyx.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/matroids/linear_matroid.pyx 2023-01-15 16:25:13.771097906 -0700
@@ -800,7 +800,7 @@ cdef class LinearMatroid(BasisExchangeMa
# (field) isomorphism
cpdef bint _is_field_isomorphism(self, LinearMatroid other, morphism): # not safe if self == other
- """
+ r"""
Version of :meth:`<LinearMatroid.is_field_isomorphism>` that does no
type checking.
@@ -966,7 +966,7 @@ cdef class LinearMatroid(BasisExchangeMa
return self._is_field_isomorphism(other, morphism)
cpdef is_field_isomorphism(self, other, morphism):
- """
+ r"""
Test if a provided morphism induces a bijection between represented
matroids.
diff -up src/sage/matroids/matroid.pyx.orig src/sage/matroids/matroid.pyx
--- src/sage/matroids/matroid.pyx.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/matroids/matroid.pyx 2023-01-15 16:25:13.772097888 -0700
@@ -3150,7 +3150,7 @@ cdef class Matroid(SageObject):
return Polyhedron(vertices)
def independence_matroid_polytope(self):
- """
+ r"""
Return the independence matroid polytope of ``self``.
This is defined as the convex hull of the vertices
@@ -3430,7 +3430,7 @@ cdef class Matroid(SageObject):
return self._is_isomorphism(other, morphism)
cpdef is_isomorphism(self, other, morphism):
- """
+ r"""
Test if a provided morphism induces a matroid isomorphism.
A *morphism* is a map from the groundset of ``self`` to the groundset
@@ -3553,7 +3553,7 @@ cdef class Matroid(SageObject):
return self._is_isomorphism(other, mf)
cpdef _is_isomorphism(self, other, morphism):
- """
+ r"""
Version of is_isomorphism() that does no type checking.
INPUT:
@@ -4313,7 +4313,7 @@ cdef class Matroid(SageObject):
return self.dual().extension(element, subsets).dual()
cpdef modular_cut(self, subsets):
- """
+ r"""
Compute the modular cut generated by ``subsets``.
A *modular cut* is a collection `C` of flats such that
@@ -4714,7 +4714,7 @@ cdef class Matroid(SageObject):
return True
cpdef is_cosimple(self):
- """
+ r"""
Test if the matroid is cosimple.
A matroid is *cosimple* if it contains no cocircuits of length 1 or 2.
@@ -7480,7 +7480,7 @@ cdef class Matroid(SageObject):
return A
cpdef tutte_polynomial(self, x=None, y=None):
- """
+ r"""
Return the Tutte polynomial of the matroid.
The *Tutte polynomial* of a matroid is the polynomial
diff -up src/sage/misc/cachefunc.pyx.orig src/sage/misc/cachefunc.pyx diff -up src/sage/misc/cachefunc.pyx.orig src/sage/misc/cachefunc.pyx
--- src/sage/misc/cachefunc.pyx.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/misc/cachefunc.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/misc/cachefunc.pyx 2023-01-15 16:25:13.772097888 -0700 +++ src/sage/misc/cachefunc.pyx 2023-03-13 08:43:39.550431661 -0600
@@ -834,7 +834,7 @@ cdef class CachedFunction(): @@ -834,7 +834,7 @@ cdef class CachedFunction():
## forward other questions to the cached function. ## forward other questions to the cached function.
@ -317,8 +104,8 @@ diff -up src/sage/misc/cachefunc.pyx.orig src/sage/misc/cachefunc.pyx
A cached function shall inherit the documentation A cached function shall inherit the documentation
diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
--- src/sage/misc/sageinspect.py.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/misc/sageinspect.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/misc/sageinspect.py 2023-01-15 16:40:43.609846146 -0700 +++ src/sage/misc/sageinspect.py 2023-03-13 08:43:39.551431643 -0600
@@ -948,7 +948,7 @@ def _grep_first_pair_of_parentheses(s): @@ -948,7 +948,7 @@ def _grep_first_pair_of_parentheses(s):
@ -328,22 +115,10 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
Split off a sub-expression from the start of a given string. Split off a sub-expression from the start of a given string.
INPUT: INPUT:
diff -up src/sage/modules/free_module_element.pyx.orig src/sage/modules/free_module_element.pyx
--- src/sage/modules/free_module_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/modules/free_module_element.pyx 2023-01-15 16:25:19.760988310 -0700
@@ -3743,7 +3743,7 @@ cdef class FreeModuleElement(Vector):
from sage.misc.latex import latex
vector_delimiters = latex.vector_delimiters()
s = '\\left' + vector_delimiters[0]
- s += ',\,'.join(latex(a) for a in self.list())
+ s += ',\\,'.join(latex(a) for a in self.list())
return s + '\\right' + vector_delimiters[1]
def dense_vector(self):
diff -up src/sage/numerical/backends/generic_backend.pyx.orig src/sage/numerical/backends/generic_backend.pyx diff -up src/sage/numerical/backends/generic_backend.pyx.orig src/sage/numerical/backends/generic_backend.pyx
--- src/sage/numerical/backends/generic_backend.pyx.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/numerical/backends/generic_backend.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/numerical/backends/generic_backend.pyx 2023-01-15 16:25:19.761988291 -0700 +++ src/sage/numerical/backends/generic_backend.pyx 2023-03-13 08:43:39.552431625 -0600
@@ -1384,7 +1384,7 @@ cdef class GenericBackend: @@ -1388,7 +1388,7 @@ cdef class GenericBackend:
raise NotImplementedError() raise NotImplementedError()
cpdef bint is_variable_basic(self, int index): cpdef bint is_variable_basic(self, int index):
@ -352,7 +127,7 @@ diff -up src/sage/numerical/backends/generic_backend.pyx.orig src/sage/numerical
Test whether the given variable is basic. Test whether the given variable is basic.
This assumes that the problem has been solved with the simplex method This assumes that the problem has been solved with the simplex method
@@ -1414,7 +1414,7 @@ cdef class GenericBackend: @@ -1418,7 +1418,7 @@ cdef class GenericBackend:
raise NotImplementedError() raise NotImplementedError()
cpdef bint is_variable_nonbasic_at_lower_bound(self, int index): cpdef bint is_variable_nonbasic_at_lower_bound(self, int index):
@ -361,7 +136,7 @@ diff -up src/sage/numerical/backends/generic_backend.pyx.orig src/sage/numerical
Test whether the given variable is nonbasic at lower bound. Test whether the given variable is nonbasic at lower bound.
This assumes that the problem has been solved with the simplex method This assumes that the problem has been solved with the simplex method
@@ -1444,7 +1444,7 @@ cdef class GenericBackend: @@ -1448,7 +1448,7 @@ cdef class GenericBackend:
raise NotImplementedError() raise NotImplementedError()
cpdef bint is_slack_variable_basic(self, int index): cpdef bint is_slack_variable_basic(self, int index):
@ -370,7 +145,7 @@ diff -up src/sage/numerical/backends/generic_backend.pyx.orig src/sage/numerical
Test whether the slack variable of the given row is basic. Test whether the slack variable of the given row is basic.
This assumes that the problem has been solved with the simplex method This assumes that the problem has been solved with the simplex method
@@ -1474,7 +1474,7 @@ cdef class GenericBackend: @@ -1478,7 +1478,7 @@ cdef class GenericBackend:
raise NotImplementedError() raise NotImplementedError()
cpdef bint is_slack_variable_nonbasic_at_lower_bound(self, int index): cpdef bint is_slack_variable_nonbasic_at_lower_bound(self, int index):
@ -380,8 +155,8 @@ diff -up src/sage/numerical/backends/generic_backend.pyx.orig src/sage/numerical
This assumes that the problem has been solved with the simplex method This assumes that the problem has been solved with the simplex method
diff -up src/sage/numerical/backends/glpk_backend.pyx.orig src/sage/numerical/backends/glpk_backend.pyx diff -up src/sage/numerical/backends/glpk_backend.pyx.orig src/sage/numerical/backends/glpk_backend.pyx
--- src/sage/numerical/backends/glpk_backend.pyx.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/numerical/backends/glpk_backend.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/numerical/backends/glpk_backend.pyx 2023-01-15 16:25:19.762988273 -0700 +++ src/sage/numerical/backends/glpk_backend.pyx 2023-03-13 08:43:39.553431607 -0600
@@ -2316,7 +2316,7 @@ cdef class GLPKBackend(GenericBackend): @@ -2316,7 +2316,7 @@ cdef class GLPKBackend(GenericBackend):
raise ValueError("This parameter is not available.") raise ValueError("This parameter is not available.")
@ -419,8 +194,8 @@ diff -up src/sage/numerical/backends/glpk_backend.pyx.orig src/sage/numerical/ba
This assumes that the problem has been solved with the simplex method This assumes that the problem has been solved with the simplex method
diff -up src/sage/numerical/backends/interactivelp_backend.pyx.orig src/sage/numerical/backends/interactivelp_backend.pyx diff -up src/sage/numerical/backends/interactivelp_backend.pyx.orig src/sage/numerical/backends/interactivelp_backend.pyx
--- src/sage/numerical/backends/interactivelp_backend.pyx.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/numerical/backends/interactivelp_backend.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/numerical/backends/interactivelp_backend.pyx 2023-01-15 16:25:19.763988255 -0700 +++ src/sage/numerical/backends/interactivelp_backend.pyx 2023-03-13 08:43:39.553431607 -0600
@@ -1065,7 +1065,7 @@ cdef class InteractiveLPBackend: @@ -1065,7 +1065,7 @@ cdef class InteractiveLPBackend:
problem_type, ring, objective_constant_term=d) problem_type, ring, objective_constant_term=d)
@ -476,8 +251,8 @@ diff -up src/sage/numerical/backends/interactivelp_backend.pyx.orig src/sage/num
EXAMPLES:: EXAMPLES::
diff -up src/sage/rings/complex_interval.pyx.orig src/sage/rings/complex_interval.pyx diff -up src/sage/rings/complex_interval.pyx.orig src/sage/rings/complex_interval.pyx
--- src/sage/rings/complex_interval.pyx.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/rings/complex_interval.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/complex_interval.pyx 2023-01-15 16:44:08.256030310 -0700 +++ src/sage/rings/complex_interval.pyx 2023-03-13 08:43:39.553431607 -0600
@@ -1114,7 +1114,7 @@ cdef class ComplexIntervalFieldElement(s @@ -1114,7 +1114,7 @@ cdef class ComplexIntervalFieldElement(s
return x return x
@ -487,113 +262,9 @@ diff -up src/sage/rings/complex_interval.pyx.orig src/sage/rings/complex_interva
Return the multiplicative inverse of ``self``. Return the multiplicative inverse of ``self``.
EXAMPLES:: EXAMPLES::
diff -up src/sage/rings/complex_mpc.pyx.orig src/sage/rings/complex_mpc.pyx
--- src/sage/rings/complex_mpc.pyx.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/rings/complex_mpc.pyx 2023-01-15 16:25:22.175944120 -0700
@@ -137,15 +137,15 @@ cdef inline mpfr_rnd_t rnd_im(mpc_rnd_t
sign = '[+-]'
digit_ten = '[0123456789]'
exponent_ten = '[e@]' + sign + '?[0123456789]+'
-number_ten = 'inf(?:inity)?|@inf@|nan(?:\([0-9A-Z_]*\))?|@nan@(?:\([0-9A-Z_]*\))?'\
- '|(?:' + digit_ten + '*\.' + digit_ten + '+|' + digit_ten + '+\.?)(?:' + exponent_ten + ')?'
-imaginary_ten = 'i(?:\s*\*\s*(?:' + number_ten + '))?|(?:' + number_ten + ')\s*\*\s*i'
-complex_ten = '(?P<im_first>(?P<im_first_im_sign>' + sign + ')?\s*(?P<im_first_im_abs>' + imaginary_ten + ')' \
- '(\s*(?P<im_first_re_sign>' + sign + ')\s*(?P<im_first_re_abs>' + number_ten + '))?)' \
+number_ten = r'inf(?:inity)?|@inf@|nan(?:\([0-9A-Z_]*\))?|@nan@(?:\([0-9A-Z_]*\))?'\
+ '|(?:' + digit_ten + r'*\.' + digit_ten + '+|' + digit_ten + r'+\.?)(?:' + exponent_ten + ')?'
+imaginary_ten = r'i(?:\s*\*\s*(?:' + number_ten + '))?|(?:' + number_ten + r')\s*\*\s*i'
+complex_ten = '(?P<im_first>(?P<im_first_im_sign>' + sign + r')?\s*(?P<im_first_im_abs>' + imaginary_ten + ')' \
+ r'(\s*(?P<im_first_re_sign>' + sign + r')\s*(?P<im_first_re_abs>' + number_ten + '))?)' \
'|' \
- '(?P<re_first>(?P<re_first_re_sign>' + sign + ')?\s*(?P<re_first_re_abs>' + number_ten + ')' \
- '(\s*(?P<re_first_im_sign>' + sign + ')\s*(?P<re_first_im_abs>' + imaginary_ten + '))?)'
-re_complex_ten = re.compile('^\s*(?:' + complex_ten + ')\s*$', re.I)
+ '(?P<re_first>(?P<re_first_re_sign>' + sign + r')?\s*(?P<re_first_re_abs>' + number_ten + ')' \
+ r'(\s*(?P<re_first_im_sign>' + sign + r')\s*(?P<re_first_im_abs>' + imaginary_ten + '))?)'
+re_complex_ten = re.compile(r'^\s*(?:' + complex_ten + r')\s*$', re.I)
cpdef inline split_complex_string(string, int base=10):
"""
@@ -185,17 +185,17 @@ cpdef inline split_complex_string(string
# Warning: number, imaginary, and complex should be enclosed in parentheses
# when used as regexp because of alternatives '|'
- number = '@nan@(?:\([0-9A-Z_]*\))?|@inf@|(?:' + digit + '*\.' + digit + '+|' + digit + '+\.?)(?:' + exponent + ')?'
+ number = r'@nan@(?:\([0-9A-Z_]*\))?|@inf@|(?:' + digit + r'*\.' + digit + '+|' + digit + r'+\.?)(?:' + exponent + ')?'
if base <= 10:
- number = 'nan(?:\([0-9A-Z_]*\))?|inf(?:inity)?|' + number
- imaginary = 'i(?:\s*\*\s*(?:' + number + '))?|(?:' + number + ')\s*\*\s*i'
- complex = '(?P<im_first>(?P<im_first_im_sign>' + sign + ')?\s*(?P<im_first_im_abs>' + imaginary + ')' \
- '(\s*(?P<im_first_re_sign>' + sign + ')\s*(?P<im_first_re_abs>' + number + '))?)' \
+ number = r'nan(?:\([0-9A-Z_]*\))?|inf(?:inity)?|' + number
+ imaginary = r'i(?:\s*\*\s*(?:' + number + '))?|(?:' + number + r')\s*\*\s*i'
+ complex = '(?P<im_first>(?P<im_first_im_sign>' + sign + r')?\s*(?P<im_first_im_abs>' + imaginary + ')' \
+ r'(\s*(?P<im_first_re_sign>' + sign + r')\s*(?P<im_first_re_abs>' + number + '))?)' \
'|' \
- '(?P<re_first>(?P<re_first_re_sign>' + sign + ')?\s*(?P<re_first_re_abs>' + number + ')' \
- '(\s*(?P<re_first_im_sign>' + sign + ')\s*(?P<re_first_im_abs>' + imaginary + '))?)'
+ '(?P<re_first>(?P<re_first_re_sign>' + sign + r')?\s*(?P<re_first_re_abs>' + number + ')' \
+ r'(\s*(?P<re_first_im_sign>' + sign + r')\s*(?P<re_first_im_abs>' + imaginary + '))?)'
- z = re.match('^\s*(?:' + complex + ')\s*$', string, re.I)
+ z = re.match(r'^\s*(?:' + complex + r')\s*$', string, re.I)
x, y = None, None
if z is not None:
@@ -207,18 +207,18 @@ cpdef inline split_complex_string(string
return None
if z.group(prefix + '_re_abs') is not None:
- x = z.expand('\g<' + prefix + '_re_abs>')
+ x = z.expand(r'\g<' + prefix + '_re_abs>')
if z.group(prefix + '_re_sign') is not None:
- x = z.expand('\g<' + prefix + '_re_sign>') + x
+ x = z.expand(r'\g<' + prefix + '_re_sign>') + x
if z.group(prefix + '_im_abs') is not None:
- y = re.search('(?P<im_part>' + number + ')', z.expand('\g<' + prefix + '_im_abs>'), re.I)
+ y = re.search('(?P<im_part>' + number + ')', z.expand(r'\g<' + prefix + '_im_abs>'), re.I)
if y is None:
y = '1'
else:
- y = y.expand('\g<im_part>')
+ y = y.expand(r'\g<im_part>')
if z.group(prefix + '_im_sign') is not None:
- y = z.expand('\g<' + prefix + '_im_sign>') + y
+ y = z.expand(r'\g<' + prefix + '_im_sign>') + y
return x, y
@@ -1701,7 +1701,7 @@ cdef class MPComplexNumber(sage.structur
return z
def cosh(self):
- """
+ r"""
Return the hyperbolic cosine of this complex number:
.. MATH::
@@ -1721,7 +1721,7 @@ cdef class MPComplexNumber(sage.structur
return z
def sinh(self):
- """
+ r"""
Return the hyperbolic sine of this complex number:
.. MATH::
@@ -2063,7 +2063,7 @@ cdef class MPComplexNumber(sage.structur
return z
def exp(self):
- """
+ r"""
Return the exponential of this complex number:
.. MATH::
diff -up src/sage/rings/finite_rings/hom_finite_field.pyx.orig src/sage/rings/finite_rings/hom_finite_field.pyx diff -up src/sage/rings/finite_rings/hom_finite_field.pyx.orig src/sage/rings/finite_rings/hom_finite_field.pyx
--- src/sage/rings/finite_rings/hom_finite_field.pyx.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/rings/finite_rings/hom_finite_field.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/finite_rings/hom_finite_field.pyx 2023-01-15 16:25:22.175944120 -0700 +++ src/sage/rings/finite_rings/hom_finite_field.pyx 2023-03-13 08:43:39.554431588 -0600
@@ -147,7 +147,7 @@ cdef class SectionFiniteFieldHomomorphis @@ -147,7 +147,7 @@ cdef class SectionFiniteFieldHomomorphis
@ -604,9 +275,9 @@ diff -up src/sage/rings/finite_rings/hom_finite_field.pyx.orig src/sage/rings/fi
EXAMPLES:: EXAMPLES::
diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_rings/integer_mod.pyx diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_rings/integer_mod.pyx
--- src/sage/rings/finite_rings/integer_mod.pyx.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/rings/finite_rings/integer_mod.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/finite_rings/integer_mod.pyx 2023-01-15 16:25:22.176944101 -0700 +++ src/sage/rings/finite_rings/integer_mod.pyx 2023-03-13 08:43:39.555431570 -0600
@@ -2245,7 +2245,7 @@ cdef class IntegerMod_gmp(IntegerMod_abs @@ -2243,7 +2243,7 @@ cdef class IntegerMod_gmp(IntegerMod_abs
return int(self.lift()) return int(self.lift())
def __pow__(IntegerMod_gmp self, exp, m): # NOTE: m ignored, always use modulus of parent ring def __pow__(IntegerMod_gmp self, exp, m): # NOTE: m ignored, always use modulus of parent ring
@ -615,7 +286,7 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_
EXAMPLES:: EXAMPLES::
sage: R = Integers(10^10) sage: R = Integers(10^10)
@@ -3544,7 +3544,7 @@ cdef class IntegerMod_int64(IntegerMod_a @@ -3540,7 +3540,7 @@ cdef class IntegerMod_int64(IntegerMod_a
return self._new_c(self.ivalue >> (-k)) return self._new_c(self.ivalue >> (-k))
def __pow__(IntegerMod_int64 self, exp, m): # NOTE: m ignored, always use modulus of parent ring def __pow__(IntegerMod_int64 self, exp, m): # NOTE: m ignored, always use modulus of parent ring
@ -624,127 +295,10 @@ diff -up src/sage/rings/finite_rings/integer_mod.pyx.orig src/sage/rings/finite_
EXAMPLES:: EXAMPLES::
sage: R = Integers(10) sage: R = Integers(10)
diff -up src/sage/rings/number_field/number_field_element.pyx.orig src/sage/rings/number_field/number_field_element.pyx
--- src/sage/rings/number_field/number_field_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/rings/number_field/number_field_element.pyx 2023-01-15 16:25:22.176944101 -0700
@@ -493,7 +493,7 @@ cdef class NumberFieldElement(FieldEleme
return codomain(f(im_gens[0]))
def _latex_(self):
- """
+ r"""
Returns the latex representation for this element.
EXAMPLES::
diff -up src/sage/rings/number_field/number_field_morphisms.pyx.orig src/sage/rings/number_field/number_field_morphisms.pyx
--- src/sage/rings/number_field/number_field_morphisms.pyx.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/rings/number_field/number_field_morphisms.pyx 2023-01-15 16:25:22.176944101 -0700
@@ -340,7 +340,7 @@ cdef class EmbeddedNumberFieldConversion
cpdef matching_root(poly, target, ambient_field=None, margin=1, max_prec=None):
- """
+ r"""
Given a polynomial and a target, this function chooses the root that
target best approximates as compared in ambient_field.
@@ -403,7 +403,7 @@ cpdef matching_root(poly, target, ambien
cpdef closest(target, values, margin=1):
- """
+ r"""
This is a utility function that returns the item in values closest to
target (with respect to the \code{abs} function). If margin is greater
than 1, and x and y are the first and second closest elements to target,
diff -up src/sage/rings/padics/local_generic_element.pyx.orig src/sage/rings/padics/local_generic_element.pyx
--- src/sage/rings/padics/local_generic_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/rings/padics/local_generic_element.pyx 2023-01-15 16:25:22.177944083 -0700
@@ -408,7 +408,7 @@ cdef class LocalGenericElement(Commutati
return ans
def _latex_(self):
- """
+ r"""
Returns a latex representation of self.
EXAMPLES::
diff -up src/sage/rings/padics/padic_capped_absolute_element.pyx.orig src/sage/rings/padics/padic_capped_absolute_element.pyx
--- src/sage/rings/padics/padic_capped_absolute_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/rings/padics/padic_capped_absolute_element.pyx 2023-01-15 16:25:22.177944083 -0700
@@ -383,7 +383,7 @@ cdef class pAdicCappedAbsoluteElement(CA
return ans
def _exp_binary_splitting(self, aprec):
- """
+ r"""
Compute the exponential power series of this element
This is a helper method for :meth:`exp`.
@@ -443,7 +443,7 @@ cdef class pAdicCappedAbsoluteElement(CA
return ans
def _exp_newton(self, aprec, log_algorithm=None):
- """
+ r"""
Compute the exponential power series of this element
This is a helper method for :meth:`exp`.
diff -up src/sage/rings/padics/padic_fixed_mod_element.pyx.orig src/sage/rings/padics/padic_fixed_mod_element.pyx
--- src/sage/rings/padics/padic_fixed_mod_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/rings/padics/padic_fixed_mod_element.pyx 2023-01-15 16:25:22.177944083 -0700
@@ -449,7 +449,7 @@ cdef class pAdicFixedModElement(FMElemen
return ans
def _exp_binary_splitting(self, aprec):
- """
+ r"""
Compute the exponential power series of this element
This is a helper method for :meth:`exp`.
@@ -508,7 +508,7 @@ cdef class pAdicFixedModElement(FMElemen
return ans
def _exp_newton(self, aprec, log_algorithm=None):
- """
+ r"""
Compute the exponential power series of this element
This is a helper method for :meth:`exp`.
diff -up src/sage/rings/padics/padic_generic_element.pyx.orig src/sage/rings/padics/padic_generic_element.pyx
--- src/sage/rings/padics/padic_generic_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/rings/padics/padic_generic_element.pyx 2023-01-15 16:25:22.178944065 -0700
@@ -544,7 +544,7 @@ cdef class pAdicGenericElement(LocalGene
return self._repr_(mode=mode)
def _repr_(self, mode=None, do_latex=False):
- """
+ r"""
Returns a string representation of this element.
INPUT:
@@ -3028,7 +3028,7 @@ cdef class pAdicGenericElement(LocalGene
return series_unit*nfactorial_unit.inverse_of_unit()<<(series_val-nfactorial_val)
def _exp_binary_splitting(self, aprec):
- """
+ r"""
Compute the exponential power series of this element
This is a helper method for :meth:`exp`.
@@ -3074,7 +3074,7 @@ cdef class pAdicGenericElement(LocalGene
raise NotImplementedError("the binary splitting algorithm is not implemented for the parent: %s" % self.parent())
def _exp_newton(self, aprec, log_algorithm=None):
- """
+ r"""
Compute the exponential power series of this element
This is a helper method for :meth:`exp`.
diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sage/rings/polynomial/multi_polynomial_libsingular.pyx diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
--- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2023-01-15 16:25:22.179944047 -0700 +++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2023-03-13 08:43:44.190347338 -0600
@@ -2485,7 +2485,7 @@ cdef class MPolynomial_libsingular(MPoly @@ -2487,7 +2487,7 @@ cdef class MPolynomial_libsingular(MPoly
return char_to_str(s) return char_to_str(s)
def _latex_(self): def _latex_(self):
@ -753,44 +307,10 @@ diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sag
Return a polynomial LaTeX representation of this polynomial. Return a polynomial LaTeX representation of this polynomial.
EXAMPLES:: EXAMPLES::
diff -up src/sage/rings/polynomial/ore_polynomial_element.pyx.orig src/sage/rings/polynomial/ore_polynomial_element.pyx
--- src/sage/rings/polynomial/ore_polynomial_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/rings/polynomial/ore_polynomial_element.pyx 2023-01-15 16:25:22.179944047 -0700
@@ -1707,8 +1707,8 @@ cdef class OrePolynomial(AlgebraElement)
var = ""
s += "%s %s"%(x,var)
s = s.replace(" + -", " - ")
- s = re.sub(" 1(\.0+)? \|"," ", s)
- s = re.sub(" -1(\.0+)? \|", " -", s)
+ s = re.sub(r" 1(\.0+)? \|"," ", s)
+ s = re.sub(r" -1(\.0+)? \|", " -", s)
s = s.replace("|","")
if s == " ":
return "0"
diff -up src/sage/rings/polynomial/polynomial_element.pyx.orig src/sage/rings/polynomial/polynomial_element.pyx diff -up src/sage/rings/polynomial/polynomial_element.pyx.orig src/sage/rings/polynomial/polynomial_element.pyx
--- src/sage/rings/polynomial/polynomial_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/rings/polynomial/polynomial_element.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/polynomial/polynomial_element.pyx 2023-01-15 16:25:22.181944010 -0700 +++ src/sage/rings/polynomial/polynomial_element.pyx 2023-03-13 08:43:44.194347266 -0600
@@ -2744,8 +2744,8 @@ cdef class Polynomial(CommutativeAlgebra @@ -6832,8 +6832,8 @@ cdef class Polynomial(CommutativeAlgebra
var = ""
s += "%s %s" % (x, var)
s = s.replace(" + -", " - ")
- s = re.sub(" 1(\.0+)? \|"," ", s)
- s = re.sub(" -1(\.0+)? \|", " -", s)
+ s = re.sub(r" 1(\.0+)? \|"," ", s)
+ s = re.sub(r" -1(\.0+)? \|", " -", s)
s = s.replace("|","")
if s == " ":
return "0"
@@ -2845,7 +2845,7 @@ cdef class Polynomial(CommutativeAlgebra
raise IndexError("polynomials are immutable")
cpdef _floordiv_(self, right):
- """
+ r"""
Quotient of division of self by other. This is denoted //.
If self = quotient \* right + remainder, this function returns
@@ -6825,8 +6825,8 @@ cdef class Polynomial(CommutativeAlgebra
where the roots `a` and `b` are to be considered in the algebraic where the roots `a` and `b` are to be considered in the algebraic
closure of the fraction field of the coefficients and counted with closure of the fraction field of the coefficients and counted with
multiplicities. If the polynomials are not monic this quantity is multiplicities. If the polynomials are not monic this quantity is
@ -801,42 +321,9 @@ diff -up src/sage/rings/polynomial/polynomial_element.pyx.orig src/sage/rings/po
`p_2` respectively. `p_2` respectively.
INPUT: INPUT:
diff -up src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx.orig src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx
--- src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/rings/polynomial/polynomial_integer_dense_flint.pyx 2023-01-15 16:25:22.181944010 -0700
@@ -1394,7 +1394,7 @@ cdef class Polynomial_integer_dense_flin
return smallInteger(fmpz_poly_degree(self.__poly))
def pseudo_divrem(self, B):
- """
+ r"""
Write ``A = self``. This function computes polynomials `Q` and `R`
and an integer `d` such that
diff -up src/sage/rings/polynomial/real_roots.pyx.orig src/sage/rings/polynomial/real_roots.pyx
--- src/sage/rings/polynomial/real_roots.pyx.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/rings/polynomial/real_roots.pyx 2023-01-15 16:25:22.182943992 -0700
@@ -1259,7 +1259,7 @@ def de_casteljau_intvec(Vector_integer_d
cdef double half_ulp = ldexp(1.0 * 65/64, -54)
def intvec_to_doublevec(Vector_integer_dense b, long err):
- """
+ r"""
Given a vector of integers A = [a1, ..., an], and an integer
error bound E, returns a vector of floating-point numbers
B = [b1, ..., bn], lower and upper error bounds F1 and F2, and
@@ -2149,7 +2149,7 @@ def subsample_vec_doctest(a, slen, llen)
return subsample_vec(a, slen, llen)
def maximum_root_first_lambda(p):
- """
+ r"""
Given a polynomial with real coefficients, computes an upper bound
on its largest real root, using the first-\lambda algorithm from
"Implementations of a New Theorem for Computing Bounds for Positive
diff -up src/sage/rings/real_double_element_gsl.pyx.orig src/sage/rings/real_double_element_gsl.pyx diff -up src/sage/rings/real_double_element_gsl.pyx.orig src/sage/rings/real_double_element_gsl.pyx
--- src/sage/rings/real_double_element_gsl.pyx.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/rings/real_double_element_gsl.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/real_double_element_gsl.pyx 2023-01-15 16:25:22.182943992 -0700 +++ src/sage/rings/real_double_element_gsl.pyx 2023-03-13 08:43:45.742319138 -0600
@@ -227,7 +227,7 @@ cdef class RealDoubleElement_gsl(RealDou @@ -227,7 +227,7 @@ cdef class RealDoubleElement_gsl(RealDou
return a return a
@ -847,8 +334,8 @@ diff -up src/sage/rings/real_double_element_gsl.pyx.orig src/sage/rings/real_dou
INPUT: INPUT:
diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
--- src/sage/rings/real_mpfi.pyx.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/rings/real_mpfi.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/real_mpfi.pyx 2023-01-15 16:25:22.183943974 -0700 +++ src/sage/rings/real_mpfi.pyx 2023-03-13 08:43:45.743319120 -0600
@@ -1309,7 +1309,7 @@ cdef class RealIntervalFieldElement(Ring @@ -1309,7 +1309,7 @@ cdef class RealIntervalFieldElement(Ring
return self.str(10) return self.str(10)
@ -857,22 +344,10 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
+ r""" + r"""
Return a latex representation of ``self``. Return a latex representation of ``self``.
EXAMPLES::
diff -up src/sage/rings/semirings/tropical_semiring.pyx.orig src/sage/rings/semirings/tropical_semiring.pyx
--- src/sage/rings/semirings/tropical_semiring.pyx.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/rings/semirings/tropical_semiring.pyx 2023-01-15 16:25:22.183943974 -0700
@@ -99,7 +99,7 @@ cdef class TropicalSemiringElement(Eleme
return repr(self._val)
def _latex_(self):
- """
+ r"""
Return a latex representation of ``self``.
EXAMPLES:: EXAMPLES::
diff -up src/sage/rings/tate_algebra_element.pyx.orig src/sage/rings/tate_algebra_element.pyx diff -up src/sage/rings/tate_algebra_element.pyx.orig src/sage/rings/tate_algebra_element.pyx
--- src/sage/rings/tate_algebra_element.pyx.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/rings/tate_algebra_element.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/tate_algebra_element.pyx 2023-01-15 16:25:22.183943974 -0700 +++ src/sage/rings/tate_algebra_element.pyx 2023-03-13 08:43:46.838299224 -0600
@@ -3448,7 +3448,7 @@ cdef class TateAlgebraElement(Commutativ @@ -3448,7 +3448,7 @@ cdef class TateAlgebraElement(Commutativ
@coerce_binop @coerce_binop
@ -883,8 +358,8 @@ diff -up src/sage/rings/tate_algebra_element.pyx.orig src/sage/rings/tate_algebr
INPUT: INPUT:
diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
--- src/sage/symbolic/expression.pyx.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/symbolic/expression.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/expression.pyx 2023-01-15 16:25:22.185943937 -0700 +++ src/sage/symbolic/expression.pyx 2023-03-13 08:43:46.840299188 -0600
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
# distutils: include_dirs = SINGULAR_INCDIR # distutils: include_dirs = SINGULAR_INCDIR
# pynac/basic.h includes # pynac/basic.h includes

View file

@ -1,7 +1,7 @@
diff -up src/sage/env.py.orig src/sage/env.py diff -up src/sage/env.py.orig src/sage/env.py
--- src/sage/env.py.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/env.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/env.py 2022-03-04 16:04:55.067452303 -0700 +++ src/sage/env.py 2023-03-13 09:26:16.468693261 -0600
@@ -496,7 +496,8 @@ def cython_aliases(required_modules=None @@ -523,7 +523,8 @@ def cython_aliases(required_modules=None
aliases[var + "INCDIR"] = pc['include_dirs'] aliases[var + "INCDIR"] = pc['include_dirs']
aliases[var + "LIBDIR"] = pc['library_dirs'] aliases[var + "LIBDIR"] = pc['library_dirs']
aliases[var + "LIBEXTRA"] = list(filter(lambda s: not s.startswith(('-l','-L')), libs.split())) aliases[var + "LIBEXTRA"] = list(filter(lambda s: not s.startswith(('-l','-L')), libs.split()))
@ -12,8 +12,8 @@ diff -up src/sage/env.py.orig src/sage/env.py
# uname-specific flags # uname-specific flags
UNAME = os.uname() UNAME = os.uname()
diff -up src/sage/graphs/mcqd.pyx.orig src/sage/graphs/mcqd.pyx diff -up src/sage/graphs/mcqd.pyx.orig src/sage/graphs/mcqd.pyx
--- src/sage/graphs/mcqd.pyx.orig 2022-03-04 16:04:55.068452305 -0700 --- src/sage/graphs/mcqd.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/graphs/mcqd.pyx 2022-03-04 16:05:55.226537259 -0700 +++ src/sage/graphs/mcqd.pyx 2023-03-13 09:26:16.468693261 -0600
@@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
# distutils: language = c++ # distutils: language = c++
+# distutils: libraries = mcqd +# distutils: libraries = mcqd
@ -21,8 +21,8 @@ diff -up src/sage/graphs/mcqd.pyx.orig src/sage/graphs/mcqd.pyx
from cysignals.signals cimport sig_on, sig_off from cysignals.signals cimport sig_on, sig_off
diff -up src/sage/libs/arb/arb.pxd.orig src/sage/libs/arb/arb.pxd diff -up src/sage/libs/arb/arb.pxd.orig src/sage/libs/arb/arb.pxd
--- src/sage/libs/arb/arb.pxd.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/libs/arb/arb.pxd.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/arb/arb.pxd 2022-03-04 16:05:03.939464830 -0700 +++ src/sage/libs/arb/arb.pxd 2023-03-13 09:26:16.468693261 -0600
@@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
# distutils: libraries = gmp flint ARB_LIBRARY # distutils: libraries = gmp flint ARB_LIBRARY
+# distutils: include_dirs = /usr/include/arb /usr/include/flint +# distutils: include_dirs = /usr/include/arb /usr/include/flint
@ -30,8 +30,8 @@ diff -up src/sage/libs/arb/arb.pxd.orig src/sage/libs/arb/arb.pxd
from sage.libs.arb.types cimport * from sage.libs.arb.types cimport *
diff -up src/sage/libs/arb/arb_version.pyx.orig src/sage/libs/arb/arb_version.pyx diff -up src/sage/libs/arb/arb_version.pyx.orig src/sage/libs/arb/arb_version.pyx
--- src/sage/libs/arb/arb_version.pyx.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/libs/arb/arb_version.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/arb/arb_version.pyx 2022-03-04 16:05:03.939464830 -0700 +++ src/sage/libs/arb/arb_version.pyx 2023-03-13 09:26:16.468693261 -0600
@@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
# -*- coding: utf-8 # -*- coding: utf-8
+# distutils: include_dirs = /usr/include/arb /usr/include/flint +# distutils: include_dirs = /usr/include/arb /usr/include/flint
@ -39,48 +39,48 @@ diff -up src/sage/libs/arb/arb_version.pyx.orig src/sage/libs/arb/arb_version.py
from sage.cpython.string cimport char_to_str from sage.cpython.string cimport char_to_str
diff -up src/sage/libs/arb/arith.pyx.orig src/sage/libs/arb/arith.pyx diff -up src/sage/libs/arb/arith.pyx.orig src/sage/libs/arb/arith.pyx
--- src/sage/libs/arb/arith.pyx.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/libs/arb/arith.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/arb/arith.pyx 2022-03-04 16:05:03.939464830 -0700 +++ src/sage/libs/arb/arith.pyx 2023-03-13 09:26:16.468693261 -0600
@@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/arb /usr/include/flint +# distutils: include_dirs = /usr/include/arb /usr/include/flint
""" """
Arithmetic functions using the arb library Arithmetic functions using the arb library
""" """
diff -up src/sage/libs/mpmath/ext_impl.pyx.orig src/sage/libs/mpmath/ext_impl.pyx diff -up src/sage/libs/mpmath/ext_impl.pyx.orig src/sage/libs/mpmath/ext_impl.pyx
--- src/sage/libs/mpmath/ext_impl.pyx.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/libs/mpmath/ext_impl.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/mpmath/ext_impl.pyx 2022-03-04 16:05:03.939464830 -0700 +++ src/sage/libs/mpmath/ext_impl.pyx 2023-03-13 09:26:16.469693242 -0600
@@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/flint +# distutils: include_dirs = /usr/include/flint
""" """
This module provides the core implementation of multiprecision This module provides the core implementation of multiprecision
floating-point arithmetic. Operations are done in-place. floating-point arithmetic. Operations are done in-place.
diff -up src/sage/libs/mpmath/ext_libmp.pyx.orig src/sage/libs/mpmath/ext_libmp.pyx diff -up src/sage/libs/mpmath/ext_libmp.pyx.orig src/sage/libs/mpmath/ext_libmp.pyx
--- src/sage/libs/mpmath/ext_libmp.pyx.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/libs/mpmath/ext_libmp.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/mpmath/ext_libmp.pyx 2022-03-04 16:05:03.940464832 -0700 +++ src/sage/libs/mpmath/ext_libmp.pyx 2023-03-13 09:26:16.469693242 -0600
@@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/flint +# distutils: include_dirs = /usr/include/flint
""" """
Faster versions of some key functions in mpmath.libmp Faster versions of some key functions in mpmath.libmp
""" """
diff -up src/sage/libs/mpmath/ext_main.pyx.orig src/sage/libs/mpmath/ext_main.pyx diff -up src/sage/libs/mpmath/ext_main.pyx.orig src/sage/libs/mpmath/ext_main.pyx
--- src/sage/libs/mpmath/ext_main.pyx.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/libs/mpmath/ext_main.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/mpmath/ext_main.pyx 2022-03-04 16:05:03.940464832 -0700 +++ src/sage/libs/mpmath/ext_main.pyx 2023-03-13 09:26:16.469693242 -0600
@@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/flint +# distutils: include_dirs = /usr/include/flint
""" """
mpmath floating-point numbers mpmath floating-point numbers
diff -up src/sage/libs/mpmath/utils.pyx.orig src/sage/libs/mpmath/utils.pyx diff -up src/sage/libs/mpmath/utils.pyx.orig src/sage/libs/mpmath/utils.pyx
--- src/sage/libs/mpmath/utils.pyx.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/libs/mpmath/utils.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/mpmath/utils.pyx 2022-03-04 16:05:03.940464832 -0700 +++ src/sage/libs/mpmath/utils.pyx 2023-03-13 09:26:16.470693224 -0600
@@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/flint +# distutils: include_dirs = /usr/include/flint
""" """
Utilities for Sage-mpmath interaction Utilities for Sage-mpmath interaction
diff -up src/sage/matrix/matrix_complex_ball_dense.pyx.orig src/sage/matrix/matrix_complex_ball_dense.pyx diff -up src/sage/matrix/matrix_complex_ball_dense.pyx.orig src/sage/matrix/matrix_complex_ball_dense.pyx
--- src/sage/matrix/matrix_complex_ball_dense.pyx.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/matrix/matrix_complex_ball_dense.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/matrix/matrix_complex_ball_dense.pyx 2022-03-04 16:05:03.941464833 -0700 +++ src/sage/matrix/matrix_complex_ball_dense.pyx 2023-03-13 09:26:16.470693224 -0600
@@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
# distutils: libraries = ARB_LIBRARY # distutils: libraries = ARB_LIBRARY
+# distutils: include_dirs = /usr/include/arb /usr/include/flint +# distutils: include_dirs = /usr/include/arb /usr/include/flint
@ -88,8 +88,8 @@ diff -up src/sage/matrix/matrix_complex_ball_dense.pyx.orig src/sage/matrix/matr
Arbitrary precision complex ball matrices using Arb Arbitrary precision complex ball matrices using Arb
diff -up src/sage/matrix/matrix_cyclo_dense.pyx.orig src/sage/matrix/matrix_cyclo_dense.pyx diff -up src/sage/matrix/matrix_cyclo_dense.pyx.orig src/sage/matrix/matrix_cyclo_dense.pyx
--- src/sage/matrix/matrix_cyclo_dense.pyx.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/matrix/matrix_cyclo_dense.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/matrix/matrix_cyclo_dense.pyx 2022-03-04 16:05:03.941464833 -0700 +++ src/sage/matrix/matrix_cyclo_dense.pyx 2023-03-13 09:26:16.470693224 -0600
@@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
# distutils: language = c++ # distutils: language = c++
# distutils: libraries = NTL_LIBRARIES # distutils: libraries = NTL_LIBRARIES
@ -100,16 +100,16 @@ diff -up src/sage/matrix/matrix_cyclo_dense.pyx.orig src/sage/matrix/matrix_cycl
# distutils: extra_link_args = NTL_LIBEXTRA # distutils: extra_link_args = NTL_LIBEXTRA
""" """
diff -up src/sage/matrix/matrix_mpolynomial_dense.pyx.orig src/sage/matrix/matrix_mpolynomial_dense.pyx diff -up src/sage/matrix/matrix_mpolynomial_dense.pyx.orig src/sage/matrix/matrix_mpolynomial_dense.pyx
--- src/sage/matrix/matrix_mpolynomial_dense.pyx.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/matrix/matrix_mpolynomial_dense.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/matrix/matrix_mpolynomial_dense.pyx 2022-03-04 16:05:03.941464833 -0700 +++ src/sage/matrix/matrix_mpolynomial_dense.pyx 2023-03-13 09:26:16.471693206 -0600
@@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/singular /usr/include/factory +# distutils: include_dirs = /usr/include/singular /usr/include/factory
""" """
Dense matrices over multivariate polynomials over fields Dense matrices over multivariate polynomials over fields
diff -up src/sage/rings/complex_arb.pyx.orig src/sage/rings/complex_arb.pyx diff -up src/sage/rings/complex_arb.pyx.orig src/sage/rings/complex_arb.pyx
--- src/sage/rings/complex_arb.pyx.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/rings/complex_arb.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/complex_arb.pyx 2022-03-04 16:05:03.942464834 -0700 +++ src/sage/rings/complex_arb.pyx 2023-03-13 09:26:16.471693206 -0600
@@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
# -*- coding: utf-8 # -*- coding: utf-8
+# distutils: include_dirs = /usr/include/arb /usr/include/flint +# distutils: include_dirs = /usr/include/arb /usr/include/flint
@ -117,43 +117,43 @@ diff -up src/sage/rings/complex_arb.pyx.orig src/sage/rings/complex_arb.pyx
Arbitrary precision complex balls using Arb Arbitrary precision complex balls using Arb
diff -up src/sage/rings/number_field/number_field_element_quadratic.pyx.orig src/sage/rings/number_field/number_field_element_quadratic.pyx diff -up src/sage/rings/number_field/number_field_element_quadratic.pyx.orig src/sage/rings/number_field/number_field_element_quadratic.pyx
--- src/sage/rings/number_field/number_field_element_quadratic.pyx.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/rings/number_field/number_field_element_quadratic.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/number_field/number_field_element_quadratic.pyx 2022-03-04 16:05:03.942464834 -0700 +++ src/sage/rings/number_field/number_field_element_quadratic.pyx 2023-03-13 10:54:33.688631507 -0600
@@ -4,6 +4,7 @@ @@ -1,6 +1,6 @@
# distutils: libraries = NTL_LIBRARIES
# distutils: extra_compile_args = NTL_CFLAGS
-# distutils: include_dirs = NTL_INCDIR
+# distutils: include_dirs = NTL_INCDIR /usr/include/arb /usr/include/flint
# distutils: library_dirs = NTL_LIBDIR # distutils: library_dirs = NTL_LIBDIR
# distutils: extra_link_args = NTL_LIBEXTRA # distutils: extra_link_args = NTL_LIBEXTRA
# distutils: language = c++ # distutils: language = c++
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
"""
Optimized Quadratic Number Field Elements
diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sage/rings/polynomial/multi_polynomial_libsingular.pyx diff -up src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig src/sage/rings/polynomial/multi_polynomial_libsingular.pyx
--- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2022-03-04 15:50:57.344269364 -0700 --- src/sage/rings/polynomial/multi_polynomial_libsingular.pyx.orig 2023-03-13 08:43:44.190347338 -0600
+++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2022-03-04 16:05:03.943464836 -0700 +++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2023-03-13 09:26:16.473693169 -0600
@@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/singular /usr/include/factory +# distutils: include_dirs = /usr/include/singular /usr/include/factory
r""" r"""
Multivariate Polynomials via libSINGULAR Multivariate Polynomials via libSINGULAR
diff -up src/sage/rings/polynomial/multi_polynomial.pyx.orig src/sage/rings/polynomial/multi_polynomial.pyx diff -up src/sage/rings/polynomial/multi_polynomial.pyx.orig src/sage/rings/polynomial/multi_polynomial.pyx
--- src/sage/rings/polynomial/multi_polynomial.pyx.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/rings/polynomial/multi_polynomial.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/polynomial/multi_polynomial.pyx 2022-03-04 16:05:03.944464837 -0700 +++ src/sage/rings/polynomial/multi_polynomial.pyx 2023-03-13 09:26:16.473693169 -0600
@@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/singular /usr/include/factory +# distutils: include_dirs = /usr/include/singular /usr/include/factory
r""" r"""
Base class for elements of multivariate polynomial rings Base class for elements of multivariate polynomial rings
""" """
diff -up src/sage/rings/polynomial/plural.pyx.orig src/sage/rings/polynomial/plural.pyx diff -up src/sage/rings/polynomial/plural.pyx.orig src/sage/rings/polynomial/plural.pyx
--- src/sage/rings/polynomial/plural.pyx.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/rings/polynomial/plural.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/polynomial/plural.pyx 2022-03-04 16:05:03.944464837 -0700 +++ src/sage/rings/polynomial/plural.pyx 2023-03-13 09:26:16.474693151 -0600
@@ -1,3 +1,4 @@ @@ -1,3 +1,4 @@
+# distutils: include_dirs = /usr/include/singular /usr/include/factory +# distutils: include_dirs = /usr/include/singular /usr/include/factory
r""" r"""
Noncommutative Polynomials via libSINGULAR/Plural Noncommutative polynomials via libSINGULAR/Plural
diff -up src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig src/sage/rings/polynomial/polynomial_complex_arb.pyx diff -up src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig src/sage/rings/polynomial/polynomial_complex_arb.pyx
--- src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/polynomial/polynomial_complex_arb.pyx 2022-03-04 16:05:03.944464837 -0700 +++ src/sage/rings/polynomial/polynomial_complex_arb.pyx 2023-03-13 09:26:16.474693151 -0600
@@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
# -*- coding: utf-8 # -*- coding: utf-8
+# distutils: include_dirs = /usr/include/arb /usr/include/flint +# distutils: include_dirs = /usr/include/arb /usr/include/flint
@ -161,8 +161,8 @@ diff -up src/sage/rings/polynomial/polynomial_complex_arb.pyx.orig src/sage/ring
Univariate polynomials over `\CC` with interval coefficients using Arb. Univariate polynomials over `\CC` with interval coefficients using Arb.
diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx
--- src/sage/rings/real_arb.pyx.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage/rings/real_arb.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/real_arb.pyx 2022-03-04 16:05:03.945464839 -0700 +++ src/sage/rings/real_arb.pyx 2023-03-13 09:26:16.474693151 -0600
@@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
# -*- coding: utf-8 # -*- coding: utf-8
+# distutils: include_dirs = /usr/include/arb /usr/include/flint +# distutils: include_dirs = /usr/include/arb /usr/include/flint
@ -170,9 +170,9 @@ diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx
Arbitrary precision real balls using Arb Arbitrary precision real balls using Arb
diff -up src/sage_setup/command/sage_build_cython.py.orig src/sage_setup/command/sage_build_cython.py diff -up src/sage_setup/command/sage_build_cython.py.orig src/sage_setup/command/sage_build_cython.py
--- src/sage_setup/command/sage_build_cython.py.orig 2022-01-30 06:41:50.000000000 -0700 --- src/sage_setup/command/sage_build_cython.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage_setup/command/sage_build_cython.py 2022-03-04 16:05:03.945464839 -0700 +++ src/sage_setup/command/sage_build_cython.py 2023-03-13 09:26:16.475693132 -0600
@@ -209,6 +209,7 @@ class sage_build_cython(Command): @@ -205,6 +205,7 @@ class sage_build_cython(Command):
self.library_order = library_order self.library_order = library_order
# Search for dependencies in the source tree and add to the list of include directories # Search for dependencies in the source tree and add to the list of include directories
self.sage_include_dirs = sage_include_directories(use_sources=True) self.sage_include_dirs = sage_include_directories(use_sources=True)

View file

@ -1,30 +0,0 @@
diff -up src/sage/libs/fes.pyx.orig src/sage/libs/fes.pyx
--- src/sage/libs/fes.pyx.orig 2020-10-30 11:34:23.271984468 -0600
+++ src/sage/libs/fes.pyx 2020-10-30 14:44:49.462736771 -0600
@@ -14,7 +14,7 @@ variables. Performing a full exhaustive
take a **long** time. The number of variables can be artificially
reduced to 64 by specializing some of them.
-Note that the FES library **requires** at least of the equations to be
+Note that the FES library **requires** at least one of the equations to be
non-linear.
AUTHORS:
@@ -72,7 +72,7 @@ from cysignals.signals cimport sig_on, s
cdef extern from "fes_interface.h":
ctypedef int (*solution_callback_t)(void *, uint64_t)
- void exhaustive_search_wrapper(int n, int n_eqs, int degree, int ***coeffs, solution_callback_t callback, void* callback_state, int verbose)
+ void exhaustive_search_wrapper(int n, int n_eqs, int degree, int ***coeffs, solution_callback_t callback, void* callback_state, int verbose, int T)
from sage.rings.integer import Integer
@@ -218,7 +218,7 @@ def exhaustive_search(eqs, max_sols=Inf
# ------- runs the library
sig_on()
- exhaustive_search_wrapper(n, len(eqs), degree, coeffs, report_solution, <void *> internal_state, verbose)
+ exhaustive_search_wrapper(n, len(eqs), degree, coeffs, report_solution, <void *> internal_state, verbose, 0)
sig_off()
# ------- frees memory occupied by the dense representation of the equations

View file

@ -1,15 +1,15 @@
diff -up src/sage_docbuild/conf.py.orig src/sage_docbuild/conf.py diff -up src/sage_docbuild/conf.py.orig src/sage_docbuild/conf.py
--- src/sage_docbuild/conf.py.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage_docbuild/conf.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage_docbuild/conf.py 2023-01-15 19:50:03.796496416 -0700 +++ src/sage_docbuild/conf.py 2023-03-13 09:53:42.670555040 -0600
@@ -209,9 +209,8 @@ def set_intersphinx_mappings(app, config @@ -228,9 +228,8 @@ def set_intersphinx_mappings(app, config
app.config.intersphinx_mapping = { app.config.intersphinx_mapping = {
'python': ('https://docs.python.org/', 'python': ('https://docs.python.org/',
- os.path.join(SAGE_DOC_SRC, "common", - os.path.join(SAGE_DOC_SRC, "common",
- "python{}.inv".format(python_version))), - "python{}.inv".format(python_version))),
- 'pplpy': (PPLPY_DOCS, None)} - 'pplpy': (PPLPY_DOCS, None)}
+ '/usr/share/doc/python3-docs/html/objects.inv'), + '/usr/share/doc/python3-docs/html/objects.inv'),
+ 'pplpy': (PPLPY_DOCS, '/usr/share/doc/python3-pplpy/objects.inv')} + 'pplpy': (PPLPY_DOCS, '/usr/share/doc/python3-pplpy-devel/objects.inv')}
# Add master intersphinx mapping # Add master intersphinx mapping
dst = os.path.join(invpath, 'objects.inv') dst = os.path.join(invpath, 'objects.inv')

View file

@ -1,6 +1,6 @@
diff -up src/doc/en/thematic_tutorials/lie/weyl_groups.rst.orig src/doc/en/thematic_tutorials/lie/weyl_groups.rst diff -up src/doc/en/thematic_tutorials/lie/weyl_groups.rst.orig src/doc/en/thematic_tutorials/lie/weyl_groups.rst
--- src/doc/en/thematic_tutorials/lie/weyl_groups.rst.orig 2022-09-19 16:38:18.000000000 -0600 --- src/doc/en/thematic_tutorials/lie/weyl_groups.rst.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/doc/en/thematic_tutorials/lie/weyl_groups.rst 2023-01-15 17:13:38.581179558 -0700 +++ src/doc/en/thematic_tutorials/lie/weyl_groups.rst 2023-03-13 09:42:01.111404689 -0600
@@ -139,12 +139,12 @@ string, which you can print:: @@ -139,12 +139,12 @@ string, which you can print::
X.1 1 1 1 1 1 1 1 1 1 1 1 1 1 X.1 1 1 1 1 1 1 1 1 1 1 1 1 1
X.2 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 X.2 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1
@ -21,9 +21,9 @@ diff -up src/doc/en/thematic_tutorials/lie/weyl_groups.rst.orig src/doc/en/thema
X.11 4 2 . -1 . . . -2 . . 1 . -4 X.11 4 2 . -1 . . . -2 . . 1 . -4
X.12 6 . -2 . . -2 -2 . . . . 2 6 X.12 6 . -2 . . -2 -2 . . . . 2 6
diff -up src/sage/coding/linear_code.py.orig src/sage/coding/linear_code.py diff -up src/sage/coding/linear_code.py.orig src/sage/coding/linear_code.py
--- src/sage/coding/linear_code.py.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/coding/linear_code.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/coding/linear_code.py 2023-01-15 17:13:38.582179539 -0700 +++ src/sage/coding/linear_code.py 2023-03-13 09:42:01.112404670 -0600
@@ -466,7 +466,10 @@ class AbstractLinearCode(AbstractLinearC @@ -465,7 +465,10 @@ class AbstractLinearCode(AbstractLinearC
0 0
sage: C = codes.HammingCode(GF(4, 'z'), 3) sage: C = codes.HammingCode(GF(4, 'z'), 3)
sage: C.automorphism_group_gens() sage: C.automorphism_group_gens()
@ -35,7 +35,7 @@ diff -up src/sage/coding/linear_code.py.orig src/sage/coding/linear_code.py
Defn: z |--> z + 1), Defn: z |--> z + 1),
((z + 1, 1, 1, z, z + 1, z, z, z + 1, z + 1, z + 1, 1, z + 1, z, z, 1, z + 1, 1, z, z + 1, z + 1, z); (1,18,6,19,2,9,17,10,13,14,21,11,4,5,12)(3,20,7,16,8), Ring endomorphism of Finite Field in z of size 2^2 ((z + 1, 1, 1, z, z + 1, z, z, z + 1, z + 1, z + 1, 1, z + 1, z, z, 1, z + 1, 1, z, z + 1, z + 1, z); (1,18,6,19,2,9,17,10,13,14,21,11,4,5,12)(3,20,7,16,8), Ring endomorphism of Finite Field in z of size 2^2
Defn: z |--> z), Defn: z |--> z),
@@ -474,19 +477,20 @@ class AbstractLinearCode(AbstractLinearC @@ -473,19 +476,20 @@ class AbstractLinearCode(AbstractLinearC
Defn: z |--> z)], Defn: z |--> z)],
362880) 362880)
sage: C.automorphism_group_gens(equivalence="linear") sage: C.automorphism_group_gens(equivalence="linear")
@ -61,7 +61,7 @@ diff -up src/sage/coding/linear_code.py.orig src/sage/coding/linear_code.py
Defn: z |--> z), Defn: z |--> z),
((1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); (2,13)(3,14)(4,20)(5,11)(8,18)(9,19)(10,15)(16,21), Ring endomorphism of Finite Field in z of size 2^2 ((1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); (2,13)(3,14)(4,20)(5,11)(8,18)(9,19)(10,15)(16,21), Ring endomorphism of Finite Field in z of size 2^2
Defn: z |--> z)], Defn: z |--> z)],
@@ -692,10 +696,10 @@ class AbstractLinearCode(AbstractLinearC @@ -691,10 +695,10 @@ class AbstractLinearCode(AbstractLinearC
sage: C_iso == aut_group_can_label.get_canonical_form() sage: C_iso == aut_group_can_label.get_canonical_form()
True True
sage: aut_group_can_label.get_autom_gens() sage: aut_group_can_label.get_autom_gens()
@ -76,9 +76,9 @@ diff -up src/sage/coding/linear_code.py.orig src/sage/coding/linear_code.py
Defn: z |--> z)] Defn: z |--> z)]
""" """
diff -up src/sage/combinat/root_system/hecke_algebra_representation.py.orig src/sage/combinat/root_system/hecke_algebra_representation.py diff -up src/sage/combinat/root_system/hecke_algebra_representation.py.orig src/sage/combinat/root_system/hecke_algebra_representation.py
--- src/sage/combinat/root_system/hecke_algebra_representation.py.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/combinat/root_system/hecke_algebra_representation.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/combinat/root_system/hecke_algebra_representation.py 2023-01-15 17:13:38.583179521 -0700 +++ src/sage/combinat/root_system/hecke_algebra_representation.py 2023-03-13 09:42:01.112404670 -0600
@@ -355,7 +355,7 @@ class HeckeAlgebraRepresentation(WithEqu @@ -357,7 +357,7 @@ class HeckeAlgebraRepresentation(WithEqu
sage: q1, q2 = K.gens() sage: q1, q2 = K.gens()
sage: KW = W.algebra(K) sage: KW = W.algebra(K)
sage: x = KW.an_element(); x sage: x = KW.an_element(); x
@ -88,8 +88,8 @@ diff -up src/sage/combinat/root_system/hecke_algebra_representation.py.orig src/
sage: T = KW.demazure_lusztig_operators(q1,q2) sage: T = KW.demazure_lusztig_operators(q1,q2)
sage: T12 = T.Tw( (1,2) ) sage: T12 = T.Tw( (1,2) )
diff -up src/sage/combinat/symmetric_group_algebra.py.orig src/sage/combinat/symmetric_group_algebra.py diff -up src/sage/combinat/symmetric_group_algebra.py.orig src/sage/combinat/symmetric_group_algebra.py
--- src/sage/combinat/symmetric_group_algebra.py.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/combinat/symmetric_group_algebra.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/combinat/symmetric_group_algebra.py 2023-01-15 17:13:38.583179521 -0700 +++ src/sage/combinat/symmetric_group_algebra.py 2023-03-13 09:42:01.113404652 -0600
@@ -101,7 +101,7 @@ def SymmetricGroupAlgebra(R, W, category @@ -101,7 +101,7 @@ def SymmetricGroupAlgebra(R, W, category
sage: SGA.group() sage: SGA.group()
Weyl Group of type ['A', 3] (as a matrix group acting on the ambient space) Weyl Group of type ['A', 3] (as a matrix group acting on the ambient space)
@ -99,9 +99,21 @@ diff -up src/sage/combinat/symmetric_group_algebra.py.orig src/sage/combinat/sym
The preferred way to construct the symmetric group algebra is to The preferred way to construct the symmetric group algebra is to
go through the usual ``algebra`` method:: go through the usual ``algebra`` method::
diff -up src/sage/env.py.orig src/sage/env.py
--- src/sage/env.py.orig 2023-03-13 09:26:16.468693261 -0600
+++ src/sage/env.py 2023-03-13 14:09:36.725081542 -0600
@@ -197,7 +197,7 @@ CONWAY_POLYNOMIALS_DATA_DIR = var("CONWA
GRAPHS_DATA_DIR = var("GRAPHS_DATA_DIR", join(SAGE_SHARE, "graphs"))
ELLCURVE_DATA_DIR = var("ELLCURVE_DATA_DIR", join(SAGE_SHARE, "ellcurves"))
POLYTOPE_DATA_DIR = var("POLYTOPE_DATA_DIR", join(SAGE_SHARE, "reflexive_polytopes"))
-GAP_ROOT_DIR = var("GAP_ROOT_DIR", join(SAGE_SHARE, "gap"))
+GAP_ROOT_DIRS = var("GAP_ROOT_DIR", ["/usr/share/gap", "/usr/lib64/gap"])
THEBE_DIR = var("THEBE_DIR", join(SAGE_SHARE, "thebe"))
COMBINATORIAL_DESIGN_DATA_DIR = var("COMBINATORIAL_DESIGN_DATA_DIR", join(SAGE_SHARE, "combinatorial_designs"))
CREMONA_MINI_DATA_DIR = var("CREMONA_MINI_DATA_DIR", join(SAGE_SHARE, "cremona"))
diff -up src/sage/groups/abelian_gps/abelian_group_gap.py.orig src/sage/groups/abelian_gps/abelian_group_gap.py diff -up src/sage/groups/abelian_gps/abelian_group_gap.py.orig src/sage/groups/abelian_gps/abelian_group_gap.py
--- src/sage/groups/abelian_gps/abelian_group_gap.py.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/groups/abelian_gps/abelian_group_gap.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/groups/abelian_gps/abelian_group_gap.py 2023-01-15 17:13:38.583179521 -0700 +++ src/sage/groups/abelian_gps/abelian_group_gap.py 2023-03-13 09:42:01.113404652 -0600
@@ -338,7 +338,7 @@ class AbelianGroup_gap(UniqueRepresentat @@ -338,7 +338,7 @@ class AbelianGroup_gap(UniqueRepresentat
if isinstance(x, AbelianGroupElement_gap): if isinstance(x, AbelianGroupElement_gap):
try: try:
@ -121,8 +133,8 @@ diff -up src/sage/groups/abelian_gps/abelian_group_gap.py.orig src/sage/groups/a
return Hom(phi) return Hom(phi)
diff -up src/sage/groups/finitely_presented.py.orig src/sage/groups/finitely_presented.py diff -up src/sage/groups/finitely_presented.py.orig src/sage/groups/finitely_presented.py
--- src/sage/groups/finitely_presented.py.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/groups/finitely_presented.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/groups/finitely_presented.py 2023-01-15 17:13:38.584179501 -0700 +++ src/sage/groups/finitely_presented.py 2023-03-13 09:42:01.113404652 -0600
@@ -596,9 +596,9 @@ class RewritingSystem(): @@ -596,9 +596,9 @@ class RewritingSystem():
sage: k = G.rewriting_system() sage: k = G.rewriting_system()
sage: k.gap() sage: k.gap()
@ -137,8 +149,8 @@ diff -up src/sage/groups/finitely_presented.py.orig src/sage/groups/finitely_pre
return self._gap return self._gap
diff -up src/sage/groups/fqf_orthogonal.py.orig src/sage/groups/fqf_orthogonal.py diff -up src/sage/groups/fqf_orthogonal.py.orig src/sage/groups/fqf_orthogonal.py
--- src/sage/groups/fqf_orthogonal.py.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/groups/fqf_orthogonal.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/groups/fqf_orthogonal.py 2023-01-15 17:13:38.584179501 -0700 +++ src/sage/groups/fqf_orthogonal.py 2023-03-13 09:42:01.114404634 -0600
@@ -143,7 +143,7 @@ class FqfOrthogonalGroup(AbelianGroupAut @@ -143,7 +143,7 @@ class FqfOrthogonalGroup(AbelianGroupAut
[2/3 0 0] [2/3 0 0]
[ 0 2/3 0] [ 0 2/3 0]
@ -149,8 +161,8 @@ diff -up src/sage/groups/fqf_orthogonal.py.orig src/sage/groups/fqf_orthogonal.p
sage: T = TorsionQuadraticForm(q) sage: T = TorsionQuadraticForm(q)
sage: T.orthogonal_group().order() sage: T.orthogonal_group().order()
diff -up src/sage/groups/libgap_wrapper.pyx.orig src/sage/groups/libgap_wrapper.pyx diff -up src/sage/groups/libgap_wrapper.pyx.orig src/sage/groups/libgap_wrapper.pyx
--- src/sage/groups/libgap_wrapper.pyx.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/groups/libgap_wrapper.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/groups/libgap_wrapper.pyx 2023-01-15 17:13:38.584179501 -0700 +++ src/sage/groups/libgap_wrapper.pyx 2023-03-13 09:42:01.114404634 -0600
@@ -25,7 +25,7 @@ Note how we call the constructor of both @@ -25,7 +25,7 @@ Note how we call the constructor of both
its output via LibGAP:: its output via LibGAP::
@ -179,8 +191,8 @@ diff -up src/sage/groups/libgap_wrapper.pyx.orig src/sage/groups/libgap_wrapper.
(f1,) (f1,)
""" """
diff -up src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx diff -up src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx
--- src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx 2023-01-15 17:13:38.584179501 -0700 +++ src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx 2023-03-13 09:42:01.114404634 -0600
@@ -427,7 +427,7 @@ cdef class LabelledBranching: @@ -427,7 +427,7 @@ cdef class LabelledBranching:
sage: from sage.groups.perm_gps.partn_ref2.refinement_generic import LabelledBranching sage: from sage.groups.perm_gps.partn_ref2.refinement_generic import LabelledBranching
sage: L = LabelledBranching(3) sage: L = LabelledBranching(3)
@ -191,9 +203,9 @@ diff -up src/sage/groups/perm_gps/partn_ref2/refinement_generic.pyx.orig src/sag
sage: L.small_generating_set() sage: L.small_generating_set()
[(1,2,3)] [(1,2,3)]
diff -up src/sage/groups/perm_gps/permgroup.py.orig src/sage/groups/perm_gps/permgroup.py diff -up src/sage/groups/perm_gps/permgroup.py.orig src/sage/groups/perm_gps/permgroup.py
--- src/sage/groups/perm_gps/permgroup.py.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/groups/perm_gps/permgroup.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/groups/perm_gps/permgroup.py 2023-01-15 17:13:38.585179483 -0700 +++ src/sage/groups/perm_gps/permgroup.py 2023-03-13 09:42:01.115404615 -0600
@@ -927,7 +927,7 @@ class PermutationGroup_generic(FiniteGro @@ -926,7 +926,7 @@ class PermutationGroup_generic(FiniteGro
sage: f = PG._coerce_map_from_(MG) sage: f = PG._coerce_map_from_(MG)
sage: mg = MG.an_element() sage: mg = MG.an_element()
sage: p = f(mg); p sage: p = f(mg); p
@ -202,7 +214,7 @@ diff -up src/sage/groups/perm_gps/permgroup.py.orig src/sage/groups/perm_gps/per
sage: PG(p._gap_()) == p sage: PG(p._gap_()) == p
True True
@@ -973,12 +973,12 @@ class PermutationGroup_generic(FiniteGro @@ -972,12 +972,12 @@ class PermutationGroup_generic(FiniteGro
sage: P = G.as_permutation_group(algorithm='smaller', seed=5) sage: P = G.as_permutation_group(algorithm='smaller', seed=5)
sage: P1 = G.as_permutation_group() sage: P1 = G.as_permutation_group()
sage: P == P1 sage: P == P1
@ -218,7 +230,7 @@ diff -up src/sage/groups/perm_gps/permgroup.py.orig src/sage/groups/perm_gps/per
Another check for :trac:`5583`:: Another check for :trac:`5583`::
@@ -4375,7 +4375,7 @@ class PermutationGroup_generic(FiniteGro @@ -4372,7 +4372,7 @@ class PermutationGroup_generic(FiniteGro
sage: G = PermutationGroup([[(1,2,3,4,5)],[(1,2)]]) #S_5 on [1..5] sage: G = PermutationGroup([[(1,2,3,4,5)],[(1,2)]]) #S_5 on [1..5]
sage: G.is_transitive([1,4,5]) sage: G.is_transitive([1,4,5])
@ -227,7 +239,7 @@ diff -up src/sage/groups/perm_gps/permgroup.py.orig src/sage/groups/perm_gps/per
sage: G.is_transitive([2..6]) sage: G.is_transitive([2..6])
False False
sage: G.is_transitive(G.non_fixed_points()) sage: G.is_transitive(G.non_fixed_points())
@@ -4440,7 +4440,7 @@ class PermutationGroup_generic(FiniteGro @@ -4437,7 +4437,7 @@ class PermutationGroup_generic(FiniteGro
sage: G.is_primitive([1..4]) sage: G.is_primitive([1..4])
False False
sage: G.is_primitive([1,2,3]) sage: G.is_primitive([1,2,3])
@ -237,8 +249,8 @@ diff -up src/sage/groups/perm_gps/permgroup.py.orig src/sage/groups/perm_gps/per
sage: G.is_primitive(G.non_fixed_points()) sage: G.is_primitive(G.non_fixed_points())
True True
diff -up src/sage/interfaces/gap.py.orig src/sage/interfaces/gap.py diff -up src/sage/interfaces/gap.py.orig src/sage/interfaces/gap.py
--- src/sage/interfaces/gap.py.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/interfaces/gap.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/interfaces/gap.py 2023-01-15 17:13:38.586179464 -0700 +++ src/sage/interfaces/gap.py 2023-03-13 09:42:01.115404615 -0600
@@ -1512,6 +1512,8 @@ def gap_reset_workspace(max_workspace_si @@ -1512,6 +1512,8 @@ def gap_reset_workspace(max_workspace_si
""" """
# Create new workspace with filename WORKSPACE # Create new workspace with filename WORKSPACE
@ -249,8 +261,8 @@ diff -up src/sage/interfaces/gap.py.orig src/sage/interfaces/gap.py
from sage.tests.gap_packages import all_installed_packages from sage.tests.gap_packages import all_installed_packages
for pkg in all_installed_packages(gap=g): for pkg in all_installed_packages(gap=g):
diff -up src/sage/libs/gap/element.pxd.orig src/sage/libs/gap/element.pxd diff -up src/sage/libs/gap/element.pxd.orig src/sage/libs/gap/element.pxd
--- src/sage/libs/gap/element.pxd.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/libs/gap/element.pxd.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/gap/element.pxd 2023-01-15 17:13:38.586179464 -0700 +++ src/sage/libs/gap/element.pxd 2023-03-13 09:42:01.116404597 -0600
@@ -29,9 +29,9 @@ cdef GapElement_Boolean make_GapElement_ @@ -29,9 +29,9 @@ cdef GapElement_Boolean make_GapElement_
cdef GapElement_Function make_GapElement_Function(parent, Obj obj) cdef GapElement_Function make_GapElement_Function(parent, Obj obj)
cdef GapElement_Permutation make_GapElement_Permutation(parent, Obj obj) cdef GapElement_Permutation make_GapElement_Permutation(parent, Obj obj)
@ -265,8 +277,8 @@ diff -up src/sage/libs/gap/element.pxd.orig src/sage/libs/gap/element.pxd
cdef class GapElement(RingElement): cdef class GapElement(RingElement):
diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
--- src/sage/libs/gap/element.pyx.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/libs/gap/element.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/gap/element.pyx 2023-01-15 17:13:38.586179464 -0700 +++ src/sage/libs/gap/element.pyx 2023-03-13 09:42:01.116404597 -0600
@@ -120,7 +120,7 @@ cdef Obj make_gap_matrix(sage_list, gap_ @@ -120,7 +120,7 @@ cdef Obj make_gap_matrix(sage_list, gap_
return l.value return l.value
@ -356,15 +368,6 @@ diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
cdef Obj make_gap_record(sage_dict) except NULL: cdef Obj make_gap_record(sage_dict) except NULL:
""" """
@@ -264,7 +268,7 @@ cdef Obj make_gap_string(sage_string) ex
try:
GAP_Enter()
b = str_to_bytes(sage_string)
- C_NEW_STRING(result, len(b), b)
+ result = MakeStringWithLen(b, len(b))
return result
finally:
GAP_Leave()
@@ -760,7 +764,7 @@ cdef class GapElement(RingElement): @@ -760,7 +764,7 @@ cdef class GapElement(RingElement):
if self.value == NULL: if self.value == NULL:
return 'NULL' return 'NULL'
@ -465,8 +468,8 @@ diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
if isinstance(i, tuple): if isinstance(i, tuple):
diff -up src/sage/libs/gap/gap_includes.pxd.orig src/sage/libs/gap/gap_includes.pxd diff -up src/sage/libs/gap/gap_includes.pxd.orig src/sage/libs/gap/gap_includes.pxd
--- src/sage/libs/gap/gap_includes.pxd.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/libs/gap/gap_includes.pxd.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/gap/gap_includes.pxd 2023-01-15 17:13:38.587179445 -0700 +++ src/sage/libs/gap/gap_includes.pxd 2023-03-13 09:49:35.192090058 -0600
@@ -13,8 +13,8 @@ from libc.stdint cimport uintptr_t, uint @@ -13,8 +13,8 @@ from libc.stdint cimport uintptr_t, uint
cdef extern from "gap/system.h" nogil: cdef extern from "gap/system.h" nogil:
@ -591,14 +594,13 @@ diff -up src/sage/libs/gap/gap_includes.pxd.orig src/sage/libs/gap/gap_includes.
- bint IS_STRING(Obj obj) - bint IS_STRING(Obj obj)
- bint IsStringConv(Obj obj) - bint IsStringConv(Obj obj)
- Obj NEW_STRING(Int) - Obj NEW_STRING(Int)
- void C_NEW_STRING(Obj new_gap_string, int length, char* c_string)
+ Int IS_STRING(Obj obj) + Int IS_STRING(Obj obj)
+ Int IsStringConv(Obj obj) + Int IsStringConv(Obj obj)
+ Obj NEW_STRING(Int len) + Obj NEW_STRING(Int len)
+ Obj MakeStringWithLen(const char *buf, size_t len) Obj MakeStringWithLen(const char* buf, size_t len)
diff -up src/sage/libs/gap/libgap.pyx.orig src/sage/libs/gap/libgap.pyx diff -up src/sage/libs/gap/libgap.pyx.orig src/sage/libs/gap/libgap.pyx
--- src/sage/libs/gap/libgap.pyx.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/libs/gap/libgap.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/gap/libgap.pyx 2023-01-15 17:13:38.587179445 -0700 +++ src/sage/libs/gap/libgap.pyx 2023-03-13 09:42:01.117404579 -0600
@@ -695,7 +695,7 @@ class Gap(Parent): @@ -695,7 +695,7 @@ class Gap(Parent):
sage: libgap.List sage: libgap.List
<Gap function "List"> <Gap function "List">
@ -608,10 +610,58 @@ diff -up src/sage/libs/gap/libgap.pyx.orig src/sage/libs/gap/libgap.pyx
""" """
if name in dir(self.__class__): if name in dir(self.__class__):
return getattr(self.__class__, name) return getattr(self.__class__, name)
diff -up src/sage/libs/gap/saved_workspace.py.orig src/sage/libs/gap/saved_workspace.py
--- src/sage/libs/gap/saved_workspace.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/gap/saved_workspace.py 2023-03-13 12:49:01.821288928 -0600
@@ -8,7 +8,7 @@ workspaces.
import os
import glob
-from sage.env import GAP_ROOT_DIR
+from sage.env import GAP_ROOT_DIRS
from sage.interfaces.gap_workspace import gap_workspace_file
@@ -31,7 +31,9 @@ def timestamp():
"""
libgap_dir = os.path.dirname(__file__)
libgap_files = glob.glob(os.path.join(libgap_dir, '*'))
- gap_packages = glob.glob(os.path.join(GAP_ROOT_DIR, 'pkg', '*'))
+ gap_packages = []
+ for path in GAP_ROOT_DIRS:
+ gap_packages += glob.glob(os.path.join(path, 'pkg', '*'))
files = libgap_files + gap_packages
if len(files) == 0:
print('Unable to find LibGAP files.')
diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx
--- src/sage/libs/gap/util.pyx.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/libs/gap/util.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/gap/util.pyx 2023-01-15 17:13:38.587179445 -0700 +++ src/sage/libs/gap/util.pyx 2023-03-13 14:13:48.497467652 -0600
@@ -362,15 +362,9 @@ cdef Obj gap_eval(str gap_string) except @@ -173,22 +173,9 @@ def gap_root():
sage: from sage.libs.gap.util import gap_root
sage: gap_root() # random output
- '/home/vbraun/opt/sage-5.3.rc0/local/gap/latest'
+ '/usr/share/gap;/usr/lib64/gap']
"""
- if os.path.exists(sage.env.GAP_ROOT_DIR):
- return sage.env.GAP_ROOT_DIR
-
- # Attempt to figure out the appropriate GAP_ROOT by reading the
- # local/bin/gap shell script; this is an ugly hack that exists for
- # historical reasons; the best approach to setting where Sage looks for
- # the appropriate GAP_ROOT is to set the GAP_ROOT_DIR variable
- SAGE_LOCAL = sage.env.SAGE_LOCAL
- with open(os.path.join(SAGE_LOCAL, 'bin', 'gap')) as f:
- gap_sh = f.read().splitlines()
- gapdir = next(x for x in gap_sh if x.strip().startswith('GAP_ROOT'))
- gapdir = gapdir.split('"')[1]
- gapdir = gapdir.replace('$SAGE_LOCAL', SAGE_LOCAL)
- return gapdir
+ return ';'.join(sage.env.GAP_ROOT_DIRS)
# To ensure that we call initialize_libgap only once.
@@ -362,15 +349,9 @@ cdef Obj gap_eval(str gap_string) except
GAPError: Error, Variable: 'Complex' must have a value GAPError: Error, Variable: 'Complex' must have a value
Syntax error: ; expected in stream:1 Syntax error: ; expected in stream:1
Complex Field with 53 bits of precision;; Complex Field with 53 bits of precision;;
@ -628,7 +678,7 @@ diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx
Error, Variable: 'precision' must have a value Error, Variable: 'precision' must have a value
Test that on a subsequent attempt we get the same message (no garbage was Test that on a subsequent attempt we get the same message (no garbage was
@@ -388,7 +382,7 @@ cdef Obj gap_eval(str gap_string) except @@ -388,7 +369,7 @@ cdef Obj gap_eval(str gap_string) except
""" """
initialize() initialize()
cdef Obj result cdef Obj result
@ -638,8 +688,8 @@ diff -up src/sage/libs/gap/util.pyx.orig src/sage/libs/gap/util.pyx
# Careful: We need to keep a reference to the bytes object here # Careful: We need to keep a reference to the bytes object here
# so that Cython doesn't deallocate it before GAP is done with # so that Cython doesn't deallocate it before GAP is done with
diff -up src/sage/tests/gap_packages.py.orig src/sage/tests/gap_packages.py diff -up src/sage/tests/gap_packages.py.orig src/sage/tests/gap_packages.py
--- src/sage/tests/gap_packages.py.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/tests/gap_packages.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/tests/gap_packages.py 2023-01-15 17:13:38.587179445 -0700 +++ src/sage/tests/gap_packages.py 2023-03-13 09:42:01.117404579 -0600
@@ -103,7 +103,7 @@ def all_installed_packages(ignore_dot_ga @@ -103,7 +103,7 @@ def all_installed_packages(ignore_dot_ga
sage: from sage.tests.gap_packages import all_installed_packages sage: from sage.tests.gap_packages import all_installed_packages

View file

@ -0,0 +1,11 @@
--- src/sage/symbolic/ginac/archive.cpp.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/symbolic/ginac/archive.cpp 2023-03-13 11:50:47.836951365 -0600
@@ -581,7 +581,7 @@ void archive::clear()
/** Delete cached unarchived expressions in all archive_nodes (mainly for debugging). */
void archive::forget()
{
- for_each(nodes.begin(), nodes.end(), std::mem_fun_ref(&archive_node::forget));
+ for (archive_node& node: nodes) node.forget();
}
/** Delete cached unarchived expressions from node (for debugging). */

View file

@ -1,426 +0,0 @@
diff -up src/sage/cpython/cython_metaclass.h.orig src/sage/cpython/cython_metaclass.h
--- src/sage/cpython/cython_metaclass.h.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/sage/cpython/cython_metaclass.h 2023-01-15 19:52:42.818659170 -0700
@@ -66,7 +66,7 @@ static CYTHON_INLINE int Sage_PyType_Rea
}
/* Now, set t.__class__ to metaclass */
- Py_TYPE(t) = metaclass;
+ Py_SET_TYPE(t, metaclass);
PyType_Modified(t);
}
else
diff -up src/sage/cpython/dict_del_by_value.pyx.orig src/sage/cpython/dict_del_by_value.pyx
--- src/sage/cpython/dict_del_by_value.pyx.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/sage/cpython/dict_del_by_value.pyx 2023-01-15 19:52:42.819659153 -0700
@@ -25,7 +25,7 @@ from weakref import KeyedRef
from cpython.list cimport PyList_New
from cpython cimport Py_XINCREF, Py_XDECREF
-from libc.stdint cimport int8_t, int16_t, int32_t, int64_t
+from libc.stdint cimport int8_t, int16_t, int32_t, int64_t, uint8_t, uint32_t
cdef extern from "Python.h":
ctypedef struct PyDictKeysObject
@@ -45,8 +45,6 @@ cdef extern from "Python.h":
#(this file is not exported from CPython, so we need to be
#careful the definitions are in step with what happens there.
-ctypedef void* dict_lookup_func # Precise definition not needed
-
ctypedef union IndexBlock:
int8_t as_1[8]
int16_t as_2[4]
@@ -55,8 +53,10 @@ ctypedef union IndexBlock:
ctypedef struct MyPyDictKeysObject:
Py_ssize_t dk_refcnt
- Py_ssize_t dk_size
- dict_lookup_func dk_lookup
+ uint8_t dk_log2_size
+ uint8_t dk_log2_index_bytes
+ uint8_t dk_kind
+ uint32_t dk_version
Py_ssize_t dk_usable
Py_ssize_t dk_nentries
IndexBlock dk_indices
@@ -66,46 +66,65 @@ ctypedef struct PyDictKeyEntry:
PyObject * me_key
PyObject * me_value
+ctypedef struct PyDictUnicodeEntry:
+ PyObject * me_key
+ PyObject * me_value
+
cdef Py_ssize_t DKIX_EMPTY = -1
cdef Py_ssize_t DKIX_DUMMY = -2
cdef Py_ssize_t DKIX_ERROR = -3
+cdef Py_ssize_t DKIX_KEY_CHANGED = -4
+
+ctypedef enum DictKeysKind:
+ DICT_KEYS_GENERAL = 0,
+ DICT_KEYS_UNICODE = 1,
+ DICT_KEYS_SPLIT = 2
#####
#These routines are copied from CPython's Object/dictobject.c
#in order to access PyDictKeysObject fields
+cdef inline Py_ssize_t DK_SIZE(MyPyDictKeysObject *keys):
+ return 1L << keys.dk_log2_size
+
cdef inline int DK_IXSIZE(MyPyDictKeysObject *keys):
- cdef Py_ssize_t s = keys.dk_size
- if s <= 0xff:
+ cdef uint8_t s = keys.dk_log2_size
+ if s <= 7:
return 1
- elif s <= 0xffff:
+ if s <= 15:
return 2
- elif s <= 0xffffffff:
+ if sizeof(void *) <= 4 or s <= 31:
return 4
else:
return 8
cdef inline PyDictKeyEntry * DK_ENTRIES(MyPyDictKeysObject *keys):
- return <PyDictKeyEntry*> &(keys.dk_indices.as_1[keys.dk_size * DK_IXSIZE(keys)])
+ return <PyDictKeyEntry*> &(keys.dk_indices.as_1[1UL << keys.dk_log2_index_bytes])
+
+cdef inline PyDictUnicodeEntry * DK_UNICODE_ENTRIES(MyPyDictKeysObject *keys):
+ return <PyDictUnicodeEntry*> &(keys.dk_indices.as_1[1UL << keys.dk_log2_index_bytes])
+
+cdef inline bint DK_IS_UNICODE(MyPyDictKeysObject *keys):
+ return keys.dk_kind != DICT_KEYS_GENERAL
cdef inline Py_ssize_t dk_get_index(MyPyDictKeysObject *keys, Py_ssize_t i):
- cdef Py_ssize_t s = keys.dk_size
- if s <= 0xff:
+ cdef uint8_t s = keys.dk_log2_size
+ if s < 8:
return keys.dk_indices.as_1[i]
- elif s <= 0xffff:
+ elif s < 16:
return keys.dk_indices.as_2[i]
- elif s <= 0xffffffff:
+ elif sizeof(void *) <= 4 or s < 32:
return keys.dk_indices.as_4[i]
else:
return keys.dk_indices.as_8[i]
cdef inline void dk_set_index(MyPyDictKeysObject *keys, Py_ssize_t i, Py_ssize_t ix):
- cdef Py_ssize_t s = keys.dk_size
- if s <= 0xff:
+ cdef uint8_t s = keys.dk_log2_size
+ if s < 8:
keys.dk_indices.as_1[i] = ix
- elif s <= 0xffff:
+ elif s < 16:
keys.dk_indices.as_2[i] = ix
- elif s <= 0xffffffff:
+ elif sizeof(void *) <= 4 or s < 32:
keys.dk_indices.as_4[i] = ix
else:
keys.dk_indices.as_8[i] = ix
@@ -113,22 +132,7 @@ cdef inline void dk_set_index(MyPyDictKe
#End of replication of Object/dictobject.c
######
-cdef dict_lookup_func lookdict
-
-cdef dict_lookup_func DK_LOOKUP(PyDictObject *mp):
- return (<MyPyDictKeysObject *>(mp.ma_keys)).dk_lookup
-
-def init_lookdict():
- global lookdict
- # A dict which a non-string key uses the generic "lookdict"
- # as lookup function
- cdef object D = {}
- D[0] = 0
- lookdict = DK_LOOKUP(<PyDictObject *>D)
-
-init_lookdict()
-
-cdef int del_dictitem_by_exact_value(PyDictObject *mp, PyObject *value, Py_hash_t hash) except -1:
+cdef int del_dictitem_by_exact_value(PyDictObject *mp, PyObject *value, Py_hash_t hashval) except -1:
"""
This is used in callbacks for the weak values of :class:`WeakValueDictionary`.
@@ -179,47 +183,72 @@ cdef int del_dictitem_by_exact_value(PyD
"""
keys = <MyPyDictKeysObject *>(mp.ma_keys)
cdef size_t perturb
- cdef size_t mask = <size_t> keys.dk_size-1
- cdef PyDictKeyEntry *entries = DK_ENTRIES(keys)
+ cdef size_t mask = <size_t> DK_SIZE(keys)-1
+ cdef PyDictUnicodeEntry *uc_entries
+ cdef PyDictUnicodeEntry *uc_ep
+ cdef PyDictKeyEntry *entries
cdef PyDictKeyEntry *ep
-
+
if mp.ma_values is not NULL:
raise TypeError("del_dictitem_by_exact_value cannot be applied to a shared key dict")
- cdef size_t i = <size_t>hash & mask
+ cdef size_t i = <size_t>hashval & mask
ix = dk_get_index(keys, i)
if ix == DKIX_EMPTY:
# key not found
return 0
- ep = &(entries[ix])
- perturb = hash
- while (ep.me_value != value or ep.me_hash != hash):
- perturb = perturb >> 5 #this is the value of PERTURB_SHIFT
- i = mask & (i * 5 + perturb + 1)
- ix = dk_get_index(keys, i)
- if ix == DKIX_EMPTY:
- # key not found
- return 0
- ep = &(entries[ix])
+ if DK_IS_UNICODE(keys):
+ uc_entries = DK_UNICODE_ENTRIES(keys)
+ uc_ep = &(uc_entries[ix])
+ perturb = hashval
+ while (uc_ep.me_value != value or hash(<object>uc_ep.me_key) != hashval):
+ perturb = perturb >> 5 #this is the value of PERTURB_SHIFT
+ i = mask & (i * 5 + perturb + 1)
+ ix = dk_get_index(keys, i)
+ if ix == DKIX_EMPTY:
+ # key not found
+ return 0
+ uc_ep = &(uc_entries[ix])
- # We need the lookup function to be the generic lookdict, otherwise
- # deletions may not work correctly
- keys.dk_lookup = lookdict
+ T = PyList_New(2)
+ PyList_SetItem(T, 0, uc_ep.me_key)
+ PyList_SetItem(T, 1, uc_ep.me_value)
+ uc_ep.me_key = NULL
+ uc_ep.me_value = NULL
+ mp.ma_used -= 1
+ dk_set_index(keys, i, DKIX_DUMMY)
+ #We have transferred the to-be-deleted references to the list T
+ #we now delete the list so that the actual decref happens through a
+ #deallocation routine that uses the Python Trashcan macros to
+ #avoid stack overflow in deleting deep structures.
+ del T
+ else:
+ entries = DK_ENTRIES(keys)
+ ep = &(entries[ix])
+ perturb = hashval
+ while (ep.me_value != value or ep.me_hash != hashval):
+ perturb = perturb >> 5 #this is the value of PERTURB_SHIFT
+ i = mask & (i * 5 + perturb + 1)
+ ix = dk_get_index(keys, i)
+ if ix == DKIX_EMPTY:
+ # key not found
+ return 0
+ ep = &(entries[ix])
- T = PyList_New(2)
- PyList_SetItem(T, 0, ep.me_key)
- PyList_SetItem(T, 1, ep.me_value)
- ep.me_key = NULL
- ep.me_value = NULL
- mp.ma_used -= 1
- dk_set_index(keys, i, DKIX_DUMMY)
- #We have transferred the to-be-deleted references to the list T
- #we now delete the list so that the actual decref happens through a
- #deallocation routine that uses the Python Trashcan macros to
- #avoid stack overflow in deleting deep structures.
- del T
+ T = PyList_New(2)
+ PyList_SetItem(T, 0, ep.me_key)
+ PyList_SetItem(T, 1, ep.me_value)
+ ep.me_key = NULL
+ ep.me_value = NULL
+ mp.ma_used -= 1
+ dk_set_index(keys, i, DKIX_DUMMY)
+ #We have transferred the to-be-deleted references to the list T
+ #we now delete the list so that the actual decref happens through a
+ #deallocation routine that uses the Python Trashcan macros to
+ #avoid stack overflow in deleting deep structures.
+ del T
def test_del_dictitem_by_exact_value(D, value, h):
"""
diff -up src/sage/libs/gmp/pylong.pyx.orig src/sage/libs/gmp/pylong.pyx
--- src/sage/libs/gmp/pylong.pyx.orig 2022-09-19 16:38:18.000000000 -0600
+++ src/sage/libs/gmp/pylong.pyx 2023-01-15 19:52:42.819659153 -0700
@@ -33,6 +33,7 @@ from .mpz cimport *
cdef extern from *:
Py_ssize_t* Py_SIZE_PTR "&Py_SIZE"(object)
+ void __Pyx_SET_SIZE(object, Py_ssize_t)
int hash_bits """
#ifdef _PyHASH_BITS
_PyHASH_BITS /* Python 3 */
@@ -57,10 +58,8 @@ cdef mpz_get_pylong_large(mpz_srcptr z):
mpz_export(L.ob_digit, NULL,
-1, sizeof(digit), 0, PyLong_nails, z)
if mpz_sgn(z) < 0:
- # Set correct size (use a pointer to hack around Cython's
- # non-support for lvalues).
- sizeptr = Py_SIZE_PTR(L)
- sizeptr[0] = -pylong_size
+ # Set correct size
+ __Pyx_SET_SIZE(L, -pylong_size)
return L
diff -up src/sage/misc/decorators.py.orig src/sage/misc/decorators.py
--- src/sage/misc/decorators.py.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/misc/decorators.py 2023-01-15 19:52:42.819659153 -0700
@@ -31,8 +31,7 @@ from functools import (partial, update_w
from copy import copy
from sage.misc.sageinspect import (sage_getsource, sage_getsourcelines,
- sage_getargspec)
-from inspect import ArgSpec
+ sage_getargspec, ArgSpec)
def sage_wraps(wrapped, assigned=WRAPPER_ASSIGNMENTS, updated=WRAPPER_UPDATES):
diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
--- src/sage/misc/sageinspect.py.orig 2023-01-15 17:07:04.838843913 -0700
+++ src/sage/misc/sageinspect.py 2023-01-15 19:53:47.194510597 -0700
@@ -119,12 +119,15 @@ import functools
import os
import tokenize
import re
+from collections import namedtuple
try:
import importlib.machinery as import_machinery
except ImportError:
pass
+ArgSpec = namedtuple('ArgSpec', 'args varargs keywords defaults')
+
def is_function_or_cython_function(obj):
"""
@@ -359,7 +362,7 @@ def _extract_embedded_signature(docstrin
docstring = L[1] if len(L) > 1 else '' # Remove first line, keep the rest
def_string = "def " + name + signature + ": pass"
try:
- return docstring, inspect.ArgSpec(*_sage_getargspec_cython(def_string))
+ return docstring, ArgSpec(*_sage_getargspec_cython(def_string))
except SyntaxError:
docstring = os.linesep.join(L)
return docstring, None
@@ -1100,7 +1103,7 @@ def _sage_getargspec_from_ast(source):
OUTPUT:
- - an instance of :obj:`inspect.ArgSpec`, i.e., a named tuple
+ - an instance of :obj:`ArgSpec`, i.e., a named tuple
EXAMPLES::
@@ -1132,8 +1135,7 @@ def _sage_getargspec_from_ast(source):
vararg = getattr(ast_args.vararg, 'arg', None)
kwarg = getattr(ast_args.kwarg, 'arg', None)
- return inspect.ArgSpec(args, vararg, kwarg,
- tuple(defaults) if defaults else None)
+ return ArgSpec(args, vararg, kwarg, tuple(defaults) if defaults else None)
def _sage_getargspec_cython(source):
@@ -1149,7 +1151,7 @@ def _sage_getargspec_cython(source):
OUTPUT:
- - an instance of :obj:`inspect.ArgSpec`, i.e., a named tuple
+ - an instance of :obj:`ArgSpec`, i.e., a named tuple
EXAMPLES::
@@ -1659,11 +1661,11 @@ def sage_getargspec(obj):
return sage_getargspec(obj.__call__)
if isinstance(obj, (lazy_attribute, AbstractMethod)):
source = sage_getsource(obj)
- return inspect.ArgSpec(*_sage_getargspec_cython(source))
+ return ArgSpec(*_sage_getargspec_cython(source))
if not callable(obj):
raise TypeError("obj is not a code object")
try:
- return inspect.ArgSpec(*obj._sage_argspec_())
+ return ArgSpec(*obj._sage_argspec_())
except (AttributeError, TypeError):
pass
# If we are lucky, the function signature is embedded in the docstring.
@@ -1679,7 +1681,7 @@ def sage_getargspec(obj):
# Note that this may give a wrong result for the constants!
try:
args, varargs, varkw = inspect.getargs(obj.__code__)
- return inspect.ArgSpec(args, varargs, varkw, obj.__defaults__)
+ return ArgSpec(args, varargs, varkw, obj.__defaults__)
except (TypeError, AttributeError):
pass
if isclassinstance(obj):
@@ -1714,7 +1716,7 @@ def sage_getargspec(obj):
except TypeError: # happens for Python builtins
source = ''
if source:
- return inspect.ArgSpec(*_sage_getargspec_cython(source))
+ return ArgSpec(*_sage_getargspec_cython(source))
else:
func_obj = obj
@@ -1727,7 +1729,7 @@ def sage_getargspec(obj):
except TypeError: # arg is not a code object
# The above "hopefully" was wishful thinking:
try:
- return inspect.ArgSpec(*_sage_getargspec_cython(sage_getsource(obj)))
+ return ArgSpec(*_sage_getargspec_cython(sage_getsource(obj)))
except TypeError: # This happens for Python builtins
# The best we can do is to return a generic argspec
args = []
@@ -1737,7 +1739,7 @@ def sage_getargspec(obj):
defaults = func_obj.__defaults__
except AttributeError:
defaults = None
- return inspect.ArgSpec(args, varargs, varkw, defaults)
+ return ArgSpec(args, varargs, varkw, defaults)
def formatannotation(annotation, base_module=None):
@@ -1808,19 +1810,7 @@ def sage_formatargspec(args, varargs=Non
:func:`sage_getargspec`. Since :func:`sage_getargspec` works for
Cython functions while Python's inspect module does not, it makes
sense to keep this function for formatting instances of
- ``inspect.ArgSpec``.
-
- EXAMPLES::
-
- sage: from sage.misc.sageinspect import sage_formatargspec
- sage: from inspect import formatargspec # deprecated in Python 3
- sage: args = ['a', 'b', 'c']
- sage: defaults = [3]
- sage: sage_formatargspec(args, defaults=defaults)
- '(a, b, c=3)'
- sage: import warnings; warnings.simplefilter('ignore') # ignore DeprecationWarning
- sage: formatargspec(args, defaults=defaults) == sage_formatargspec(args, defaults=defaults)
- True
+ ``ArgSpec``.
"""
def formatargandannotation(arg):
result = formatarg(arg)
diff -up src/sage/symbolic/ginac/numeric.cpp.orig src/sage/symbolic/ginac/numeric.cpp
--- src/sage/symbolic/ginac/numeric.cpp.orig 2022-09-19 16:38:19.000000000 -0600
+++ src/sage/symbolic/ginac/numeric.cpp 2023-01-15 19:52:42.820659135 -0700
@@ -52,7 +52,6 @@
#define register
#define PY_SSIZE_T_CLEAN
#include <Python.h>
-#include <longintrepr.h>
#include "flint/fmpz.h"
#include "flint/fmpz_factor.h"

View file

@ -1,6 +1,6 @@
diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c
--- src/sage/cpython/debugimpl.c.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/cpython/debugimpl.c.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/cpython/debugimpl.c 2023-01-15 17:07:04.836843956 -0700 +++ src/sage/cpython/debugimpl.c 2023-03-13 09:38:55.609800668 -0600
@@ -148,6 +148,7 @@ static void _type_debug(PyTypeObject* tp @@ -148,6 +148,7 @@ static void _type_debug(PyTypeObject* tp
printf(" tp_basicsize: %ld\n", (long)tp->tp_basicsize); printf(" tp_basicsize: %ld\n", (long)tp->tp_basicsize);
printf(" tp_itemsize: %ld\n", (long)tp->tp_itemsize); printf(" tp_itemsize: %ld\n", (long)tp->tp_itemsize);
@ -18,8 +18,8 @@ diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c
attr_pointer_meth(tp_call, "__call__"); attr_pointer_meth(tp_call, "__call__");
attr_pointer_meth(tp_str, "__str__"); attr_pointer_meth(tp_str, "__str__");
diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx
--- src/sage/cpython/debug.pyx.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/cpython/debug.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/cpython/debug.pyx 2023-01-15 17:07:04.836843956 -0700 +++ src/sage/cpython/debug.pyx 2023-03-13 09:38:55.610800649 -0600
@@ -231,6 +231,7 @@ def type_debug(cls): @@ -231,6 +231,7 @@ def type_debug(cls):
tp_basicsize: 16 tp_basicsize: 16
tp_itemsize: 0 tp_itemsize: 0
@ -37,8 +37,8 @@ diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx
tp_call (__call__): NULL tp_call (__call__): NULL
tp_str (__str__): 0x7fc57d757020 tp_str (__str__): 0x7fc57d757020
diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/geometry/triangulation/point_configuration.py diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/geometry/triangulation/point_configuration.py
--- src/sage/geometry/triangulation/point_configuration.py.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/geometry/triangulation/point_configuration.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/geometry/triangulation/point_configuration.py 2023-01-15 17:07:04.837843935 -0700 +++ src/sage/geometry/triangulation/point_configuration.py 2023-03-13 09:38:55.610800649 -0600
@@ -617,11 +617,11 @@ class PointConfiguration(UniqueRepresent @@ -617,11 +617,11 @@ class PointConfiguration(UniqueRepresent
['{{0,1,2,4},{1,2,3,4}}'] ['{{0,1,2,4},{1,2,3,4}}']
""" """
@ -54,8 +54,8 @@ diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/ge
if verbose: if verbose:
print("#### TOPCOM input ####") print("#### TOPCOM input ####")
diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py
--- src/sage/interfaces/frobby.py.orig 2023-01-15 17:07:04.837843935 -0700 --- src/sage/interfaces/frobby.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/interfaces/frobby.py 2023-01-15 17:07:49.392886328 -0700 +++ src/sage/interfaces/frobby.py 2023-03-13 09:38:55.610800649 -0600
@@ -78,7 +78,7 @@ class Frobby: @@ -78,7 +78,7 @@ class Frobby:
print("Frobby command: ", repr(command)) print("Frobby command: ", repr(command))
print("Frobby input:\n", input) print("Frobby input:\n", input)
@ -66,8 +66,8 @@ diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py
frinput = str_to_bytes(input) frinput = str_to_bytes(input)
else: else:
diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py
--- src/sage/interfaces/gfan.py.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/interfaces/gfan.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/interfaces/gfan.py 2023-01-15 17:07:04.837843935 -0700 +++ src/sage/interfaces/gfan.py 2023-03-13 09:38:55.611800631 -0600
@@ -109,7 +109,7 @@ class Gfan(): @@ -109,7 +109,7 @@ class Gfan():
print("gfan input:\n%s" % input) print("gfan input:\n%s" % input)
@ -78,8 +78,8 @@ diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py
# sometimes, gfan outputs stuff to stderr even though everything is fine # sometimes, gfan outputs stuff to stderr even though everything is fine
diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
--- src/sage/interfaces/latte.py.orig 2023-01-15 17:07:04.837843935 -0700 --- src/sage/interfaces/latte.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/interfaces/latte.py 2023-01-15 17:09:27.127907740 -0700 +++ src/sage/interfaces/latte.py 2023-03-13 09:38:55.611800631 -0600
@@ -161,6 +161,7 @@ def count(arg, ehrhart_polynomial=False, @@ -161,6 +161,7 @@ def count(arg, ehrhart_polynomial=False,
latte_proc = Popen(args, latte_proc = Popen(args,
stdin=PIPE, stdout=PIPE, stdin=PIPE, stdout=PIPE,
@ -97,8 +97,8 @@ diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
ans, err = latte_proc.communicate(arg) ans, err = latte_proc.communicate(arg)
diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.pyx diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.pyx
--- src/sage/interfaces/sagespawn.pyx.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/interfaces/sagespawn.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/interfaces/sagespawn.pyx 2023-01-15 17:07:04.838843913 -0700 +++ src/sage/interfaces/sagespawn.pyx 2023-03-13 09:38:55.611800631 -0600
@@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
""" """
Sage wrapper around pexpect's ``spawn`` class and Sage wrapper around pexpect's ``spawn`` class and
@ -147,8 +147,8 @@ diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.py
pass pass
self.fileobj.close() self.fileobj.close()
diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.pyx diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.pyx
--- src/sage/libs/coxeter3/coxeter.pyx.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/libs/coxeter3/coxeter.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/libs/coxeter3/coxeter.pyx 2023-01-15 17:07:04.838843913 -0700 +++ src/sage/libs/coxeter3/coxeter.pyx 2023-03-13 09:38:55.611800631 -0600
@@ -37,7 +37,7 @@ cdef class String: @@ -37,7 +37,7 @@ cdef class String:
EXAMPLES:: EXAMPLES::
@ -282,8 +282,8 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
if rank == 0: if rank == 0:
raise NotImplementedError("Coxeter group of type ['A',0] using Coxeter 3 not yet implemented") raise NotImplementedError("Coxeter group of type ['A',0] using Coxeter 3 not yet implemented")
diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
--- src/sage/misc/sageinspect.py.orig 2023-01-15 16:40:43.609846146 -0700 --- src/sage/misc/sageinspect.py.orig 2023-03-13 08:43:39.551431643 -0600
+++ src/sage/misc/sageinspect.py 2023-01-15 17:07:04.838843913 -0700 +++ src/sage/misc/sageinspect.py 2023-03-13 09:38:55.612800613 -0600
@@ -516,12 +516,9 @@ class SageArgSpecVisitor(ast.NodeVisitor @@ -516,12 +516,9 @@ class SageArgSpecVisitor(ast.NodeVisitor
""" """
return node.id return node.id
@ -310,8 +310,8 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
[True, False, None] [True, False, None]
sage: [type(vis(n)) for n in ['True', 'False', 'None']] sage: [type(vis(n)) for n in ['True', 'False', 'None']]
diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py
--- src/sage/plot/plot3d/plot3d.py.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/plot/plot3d/plot3d.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/plot/plot3d/plot3d.py 2023-01-15 17:07:04.839843892 -0700 +++ src/sage/plot/plot3d/plot3d.py 2023-03-13 09:38:55.612800613 -0600
@@ -219,6 +219,7 @@ from .shapes import arrow3d @@ -219,6 +219,7 @@ from .shapes import arrow3d
from .base import Graphics3dGroup from .base import Graphics3dGroup
from sage.plot.colors import rainbow from sage.plot.colors import rainbow
@ -330,21 +330,21 @@ diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py
raise ValueError('variables were specified incorrectly for this coordinate system; incorrect variables were %s'%list(set(all_vars).symmetric_difference(set(indep_vars+[dep_var])))) raise ValueError('variables were specified incorrectly for this coordinate system; incorrect variables were %s'%list(set(all_vars).symmetric_difference(set(indep_vars+[dep_var]))))
self.dep_var = dep_var self.dep_var = dep_var
diff -up src/sage/rings/polynomial/pbori/pbori.pyx.orig src/sage/rings/polynomial/pbori/pbori.pyx diff -up src/sage/rings/polynomial/pbori/pbori.pyx.orig src/sage/rings/polynomial/pbori/pbori.pyx
--- src/sage/rings/polynomial/pbori/pbori.pyx.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/rings/polynomial/pbori/pbori.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/rings/polynomial/pbori/pbori.pyx 2023-01-15 17:09:50.193474022 -0700 +++ src/sage/rings/polynomial/pbori/pbori.pyx 2023-03-13 11:29:13.157592229 -0600
@@ -4729,8 +4729,7 @@ cdef class PolynomialConstruct: @@ -4722,8 +4722,7 @@ cdef class PolynomialConstruct:
# So, it is just a conversion. [Simon King] # So, it is just a conversion. [Simon King]
return (<BooleanPolynomialRing>ring)._element_constructor_(x) return (<BooleanPolynomialRing>ring)._element_constructor_(x)
- raise TypeError("Cannot generate Boolean polynomial from %s , %s" % - raise TypeError("cannot generate Boolean polynomial from %s , %s" %
- (type(x), type(ring))) - (type(x), type(ring)))
+ raise TypeError(f"Cannot generate Boolean polynomial from {type(x)}, {type(ring)}") + raise TypeError(f"cannot generate Boolean polynomial from {type(x)}, {type(ring)}")
cdef class MonomialConstruct: cdef class MonomialConstruct:
diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.pyx diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.pyx
--- src/sage/structure/sage_object.pyx.orig 2022-09-19 16:38:19.000000000 -0600 --- src/sage/structure/sage_object.pyx.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/structure/sage_object.pyx 2023-01-15 17:09:50.195473985 -0700 +++ src/sage/structure/sage_object.pyx 2023-03-13 09:38:55.613800594 -0600
@@ -694,7 +694,7 @@ cdef class SageObject: @@ -694,7 +694,7 @@ cdef class SageObject:
try: try:
s = self._interface_init_(I) s = self._interface_init_(I)

View file

@ -1,6 +1,6 @@
diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py
--- src/sage/interfaces/qepcad.py.orig 2022-09-19 16:38:18.000000000 -0600 --- src/sage/interfaces/qepcad.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/interfaces/qepcad.py 2023-01-15 17:22:00.958717226 -0700 +++ src/sage/interfaces/qepcad.py 2023-03-13 09:52:44.349623749 -0600
@@ -530,7 +530,7 @@ TESTS: @@ -530,7 +530,7 @@ TESTS:
Check the qepcad configuration file:: Check the qepcad configuration file::
@ -10,15 +10,15 @@ diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py
....: f.readlines()[-1] ....: f.readlines()[-1]
'SINGULAR yes\n' 'SINGULAR yes\n'
@@ -605,7 +605,6 @@ AUTHORS: @@ -604,7 +604,6 @@ AUTHORS:
# http://www.gnu.org/licenses/ # https://www.gnu.org/licenses/
#***************************************************************************** # ****************************************************************************
import os
-from sage.env import SAGE_LOCAL -from sage.env import SAGE_LOCAL
import pexpect import pexpect
import re import re
import sys import sys
@@ -620,6 +619,8 @@ from .expect import Expect, ExpectFuncti @@ -619,6 +618,8 @@ from .expect import Expect, ExpectFuncti
from sage.interfaces.interface import AsciiArtString from sage.interfaces.interface import AsciiArtString
@ -27,7 +27,7 @@ diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py
def _qepcad_atoms(formula): def _qepcad_atoms(formula):
r""" r"""
Return the atoms of a qepcad quantifier-free formula, as a set of strings. Return the atoms of a qepcad quantifier-free formula, as a set of strings.
@@ -651,17 +652,17 @@ def _qepcad_cmd(memcells=None): @@ -650,17 +651,17 @@ def _qepcad_cmd(memcells=None):
sage: from sage.interfaces.qepcad import _qepcad_cmd sage: from sage.interfaces.qepcad import _qepcad_cmd
sage: s = _qepcad_cmd() sage: s = _qepcad_cmd()
@ -48,7 +48,7 @@ diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py
_command_info_cache = None _command_info_cache = None
@@ -686,7 +687,7 @@ def _update_command_info(): @@ -685,7 +686,7 @@ def _update_command_info():
cache = {} cache = {}

View file

@ -1,9 +1,9 @@
diff -up src/sage_docbuild/ext/multidocs.py.orig src/sage_docbuild/ext/multidocs.py diff -up src/sage_docbuild/ext/multidocs.py.orig src/sage_docbuild/ext/multidocs.py
--- src/sage_docbuild/ext/multidocs.py.orig 2022-05-15 16:11:11.000000000 -0600 --- src/sage_docbuild/ext/multidocs.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage_docbuild/ext/multidocs.py 2022-06-01 10:51:11.630814539 -0600 +++ src/sage_docbuild/ext/multidocs.py 2023-03-13 10:54:54.452252122 -0600
@@ -83,8 +83,11 @@ def merge_environment(app, env): @@ -83,8 +83,11 @@ def merge_environment(app, env):
for ind in newalldoc: for ind in newalldoc:
# treat subdocument source as orphaned file and don't complain # treat sub-document source as orphaned file and don't complain
md = env.metadata.get(ind, dict()) md = env.metadata.get(ind, dict())
- md['orphan'] = 1 - md['orphan'] = 1
- env.metadata[ind] = md - env.metadata[ind] = md
@ -16,9 +16,9 @@ diff -up src/sage_docbuild/ext/multidocs.py.orig src/sage_docbuild/ext/multidocs
newcite = {} newcite = {}
for ind, (path, tag, lineno) in citations.items(): for ind, (path, tag, lineno) in citations.items():
diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py
--- src/sage/interfaces/singular.py.orig 2022-05-15 16:11:11.000000000 -0600 --- src/sage/interfaces/singular.py.orig 2023-02-11 06:25:15.000000000 -0700
+++ src/sage/interfaces/singular.py 2022-06-01 10:51:11.630814539 -0600 +++ src/sage/interfaces/singular.py 2023-03-13 10:54:54.452252122 -0600
@@ -2327,11 +2327,11 @@ def generate_docstring_dictionary(): @@ -2379,11 +2379,11 @@ def generate_docstring_dictionary():
L, in_node, curr_node = [], False, None L, in_node, curr_node = [], False, None

View file

@ -23,12 +23,6 @@
# use workaround to match upstream sagemath patched cython # use workaround to match upstream sagemath patched cython
%bcond_with cython_hack %bcond_with cython_hack
%ifarch %{ix86} x86_64
%bcond_without fes
%else
%bcond_with fes
%endif
# switch to run make -testall # switch to run make -testall
%bcond_with check %bcond_with check
%global SAGE_TIMEOUT 60 %global SAGE_TIMEOUT 60
@ -40,7 +34,7 @@
%global elliptic_curves_pkg elliptic_curves-0.8.1 %global elliptic_curves_pkg elliptic_curves-0.8.1
%global graphs_pkg graphs-20210214 %global graphs_pkg graphs-20210214
%if %{with bundled_ipython} %if %{with bundled_ipython}
%global ipython_ver 8.4.0 %global ipython_ver 8.6.0
%global ipython_pkg ipython-%{ipython_ver} %global ipython_pkg ipython-%{ipython_ver}
%global prompt_toolkit_ver 3.0.24 %global prompt_toolkit_ver 3.0.24
%global prompt_tookit_pkg prompt_toolkit-%{prompt_toolkit_ver} %global prompt_tookit_pkg prompt_toolkit-%{prompt_toolkit_ver}
@ -58,7 +52,7 @@
%endif %endif
%global polytopes_db_pkg polytopes_db-20170220 %global polytopes_db_pkg polytopes_db-20170220
%global sagetex_pkg sagetex-3.6.1 %global sagetex_pkg sagetex-3.6.1
%global Sphinx_pkg Sphinx-4.4.0 %global Sphinx_pkg Sphinx-5.2.3
%global singular_pkg singular-4.3.1p1 %global singular_pkg singular-4.3.1p1
%if %{with bundled_threejs} %if %{with bundled_threejs}
%global threejs_ver r122 %global threejs_ver r122
@ -66,11 +60,7 @@
%endif %endif
# Spkg equivalents of required rpms; we pretend they are installed as spkgs. # Spkg equivalents of required rpms; we pretend they are installed as spkgs.
%global SAGE_REQUIRED_PKGS 4ti2-1.6.9 bliss-0.77 CoCoALib-0.99800 coxeter3-3.1 cryptominisat-5.8.0 database_cremona_ellcurve-%{cremona_ver} gap_packages-4.11.1 libsirocco-2.1.0 lrslib-072 mcqd-1.0.0 meataxe-1.0.1 qepcad-B.1.74 saclib-2.2.8 tdlib-0.9.2 %global SAGE_REQUIRED_PKGS 4ti2-1.6.9 bliss-0.77 CoCoALib-0.99800 coxeter3-3.1 cryptominisat-5.8.0 database_cremona_ellcurve-%{cremona_ver} gap_packages-4.11.2 libsirocco-2.1.0 lrslib-072 mcqd-1.0.0 meataxe-1.0.1 qepcad-B.1.74 saclib-2.2.8 tdlib-0.9.2
%ifarch %{ix86} x86_64
%global SAGE_REQUIRED_PKGS %{SAGE_REQUIRED_PKGS} fes-0.2
%endif
%global SAGE_ROOT %{_libdir}/sagemath %global SAGE_ROOT %{_libdir}/sagemath
%global SAGE_LOCAL %{SAGE_ROOT}/local %global SAGE_LOCAL %{SAGE_ROOT}/local
@ -83,8 +73,8 @@
Name: sagemath Name: sagemath
Summary: A free open-source mathematics software system Summary: A free open-source mathematics software system
Version: 9.7 Version: 9.8
Release: 2%{?dist} Release: 1%{?dist}
# The file ${SAGE_ROOT}/COPYING.txt is the upstream license breakdown file. # The file ${SAGE_ROOT}/COPYING.txt is the upstream license breakdown file.
# Note that many of the components listed in that file are not built in, but # Note that many of the components listed in that file are not built in, but
# are used as external libraries, and therefore do not affect the License tag. # are used as external libraries, and therefore do not affect the License tag.
@ -100,7 +90,7 @@ Source3: org.sagemath.sage.metainfo.xml
# 32-bit ARM builders run out of memory trying to create the SRPM and also # 32-bit ARM builders run out of memory trying to create the SRPM and also
# trying to unpack the SRPM before starting a build. The i386 builders # trying to unpack the SRPM before starting a build. The i386 builders
# sometimes fail as well, so exclude all 32-bit platforms. # sometimes fail as well, so exclude all 32-bit platforms.
ExclusiveArch: aarch64 x86_64 ExclusiveArch: aarch64 x86_64
# Fix stray escapes in python strings # Fix stray escapes in python strings
Patch0: %{name}-escape.patch Patch0: %{name}-escape.patch
@ -134,6 +124,7 @@ Patch7: %{name}-jmol.patch
# tell the user how to install the large Cremona database # tell the user how to install the large Cremona database
# add a missing commit() that causes large database construction to fail # add a missing commit() that causes large database construction to fail
# https://github.com/sagemath/sage/pull/35050
Patch8: %{name}-cremona.patch Patch8: %{name}-cremona.patch
# adapt to python 3 and cython running in python 3 mode # adapt to python 3 and cython running in python 3 mode
@ -148,8 +139,8 @@ Patch11: %{name}-lcalc.patch
# Use system gap directories and modernize libgap interface # Use system gap directories and modernize libgap interface
Patch12: %{name}-libgap.patch Patch12: %{name}-libgap.patch
# Build fes # Catch polymorphic types by reference instead of by value
Patch13: %{name}-fes-build.patch Patch13: %{name}-catch-value.patch
# Side effect of using distro packages # Side effect of using distro packages
# https://bugzilla.redhat.com/show_bug.cgi?id=974769 # https://bugzilla.redhat.com/show_bug.cgi?id=974769
@ -174,17 +165,22 @@ Patch19: %{name}-tdlib.patch
# Use local objects.inv for intersphinx since no network on koji builders # Use local objects.inv for intersphinx since no network on koji builders
Patch20: %{name}-intersphinx.patch Patch20: %{name}-intersphinx.patch
# Adapt to changes in python 3.11 # Replace a deprecated call to std::bind2nd
Patch21: %{name}-python3.11.patch Patch21: %{name}-bind2nd.patch
# Temporary workaround for https://bugzilla.redhat.com/show_bug.cgi?id=2160197 # Temporary workaround for https://bugzilla.redhat.com/show_bug.cgi?id=2160197
# Remove this when that bug is fixed # Remove this when that bug is fixed
Patch22: %{name}-giac.patch Patch22: %{name}-giac.patch
# Replace a deprecated call to std::mem_fun_ref
Patch23: %{name}-mem-fun-ref.patch
BuildRequires: 4ti2 BuildRequires: 4ti2
BuildRequires: 4ti2-devel BuildRequires: 4ti2-devel
BuildRequires: appstream BuildRequires: appstream
BuildRequires: arb-devel BuildRequires: arb-devel
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: bc BuildRequires: bc
BuildRequires: bliss-devel BuildRequires: bliss-devel
BuildRequires: boost-devel BuildRequires: boost-devel
@ -201,9 +197,6 @@ BuildRequires: csdp-devel
BuildRequires: desktop-file-utils BuildRequires: desktop-file-utils
BuildRequires: dvipng BuildRequires: dvipng
BuildRequires: ecl BuildRequires: ecl
%if %{with fes}
BuildRequires: fes-devel
%endif
BuildRequires: ffmpeg-free BuildRequires: ffmpeg-free
BuildRequires: flexiblas-devel BuildRequires: flexiblas-devel
BuildRequires: flint-devel BuildRequires: flint-devel
@ -287,12 +280,14 @@ BuildRequires: libfrobby-devel
BuildRequires: libgap BuildRequires: libgap
BuildRequires: libhomfly-devel BuildRequires: libhomfly-devel
BuildRequires: libmpc-devel BuildRequires: libmpc-devel
BuildRequires: libtool
BuildRequires: lrcalc-devel BuildRequires: lrcalc-devel
BuildRequires: lrslib-utils BuildRequires: lrslib-utils
BuildRequires: make BuildRequires: make
BuildRequires: mathjax BuildRequires: mathjax
BuildRequires: maxima-runtime-ecl BuildRequires: maxima-runtime-ecl
BuildRequires: mcqd-devel BuildRequires: mcqd-devel
BuildRequires: meson
BuildRequires: mpfi-devel BuildRequires: mpfi-devel
BuildRequires: nauty BuildRequires: nauty
BuildRequires: ninja-build BuildRequires: ninja-build
@ -308,10 +303,12 @@ BuildRequires: pari-galpol
BuildRequires: pari-gp BuildRequires: pari-gp
BuildRequires: pari-nftables BuildRequires: pari-nftables
BuildRequires: pari-seadata BuildRequires: pari-seadata
BuildRequires: patchelf
BuildRequires: pdf2svg BuildRequires: pdf2svg
BuildRequires: perl-generators BuildRequires: perl-generators
BuildRequires: perl(ExtUtils::MakeMaker) BuildRequires: perl(ExtUtils::MakeMaker)
BuildRequires: perl(File::Slurp) BuildRequires: perl(File::Slurp)
BuildRequires: pkgconfig
BuildRequires: pkgconfig(bdw-gc) BuildRequires: pkgconfig(bdw-gc)
BuildRequires: pkgconfig(cbc) BuildRequires: pkgconfig(cbc)
BuildRequires: pkgconfig(eclib) BuildRequires: pkgconfig(eclib)
@ -339,6 +336,7 @@ BuildRequires: pkgconfig(primecount)
BuildRequires: pkgconfig(primesieve) BuildRequires: pkgconfig(primesieve)
BuildRequires: pkgconfig(readline) BuildRequires: pkgconfig(readline)
BuildRequires: pkgconfig(Singular) BuildRequires: pkgconfig(Singular)
BuildRequires: pkgconfig(tbb)
BuildRequires: pkgconfig(tk) BuildRequires: pkgconfig(tk)
BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(zlib)
BuildRequires: planarity-devel BuildRequires: planarity-devel
@ -366,6 +364,7 @@ BuildRequires: %{py3_dist beniget}
BuildRequires: %{py3_dist brial} BuildRequires: %{py3_dist brial}
BuildRequires: %{py3_dist charset-normalizer} BuildRequires: %{py3_dist charset-normalizer}
BuildRequires: %{py3_dist colorlog} BuildRequires: %{py3_dist colorlog}
BuildRequires: %{py3_dist contourpy}
BuildRequires: %{py3_dist cppy} BuildRequires: %{py3_dist cppy}
BuildRequires: %{py3_dist cvxopt} BuildRequires: %{py3_dist cvxopt}
BuildRequires: %{py3_dist cython} BuildRequires: %{py3_dist cython}
@ -378,6 +377,7 @@ BuildRequires: %{py3_dist fpylll}
BuildRequires: %{py3_dist furo} BuildRequires: %{py3_dist furo}
BuildRequires: %{py3_dist gast} BuildRequires: %{py3_dist gast}
BuildRequires: %{py3_dist gmpy2} BuildRequires: %{py3_dist gmpy2}
BuildRequires: %{py3_dist hatch-fancy-pypi-readme}
BuildRequires: %{py3_dist hatchling} BuildRequires: %{py3_dist hatchling}
%if %{with sphinx_hack} %if %{with sphinx_hack}
BuildRequires: %{py3_dist html5lib} BuildRequires: %{py3_dist html5lib}
@ -410,6 +410,7 @@ BuildRequires: %{py3_dist pari-jupyter}
%if %{with bundled_ipython} %if %{with bundled_ipython}
BuildRequires: %{py3_dist path.py} BuildRequires: %{py3_dist path.py}
%endif %endif
BuildRequires: %{py3_dist pathspec}
%if %{without bundled_pexpect} %if %{without bundled_pexpect}
BuildRequires: %{py3_dist pexpect} BuildRequires: %{py3_dist pexpect}
%endif %endif
@ -428,6 +429,9 @@ BuildRequires: %{py3_dist pure-eval}
BuildRequires: %{py3_dist py} BuildRequires: %{py3_dist py}
BuildRequires: %{py3_dist pycryptosat} BuildRequires: %{py3_dist pycryptosat}
BuildRequires: %{py3_dist pyopenssl} BuildRequires: %{py3_dist pyopenssl}
BuildRequires: %{py3_dist pyproject-metadata}
BuildRequires: %{py3_dist pytest}
BuildRequires: %{py3_dist pytest-xdist}
BuildRequires: %{py3_dist pytz} BuildRequires: %{py3_dist pytz}
BuildRequires: %{py3_dist pytzdata} BuildRequires: %{py3_dist pytzdata}
BuildRequires: %{py3_dist pytz-deprecation-shim} BuildRequires: %{py3_dist pytz-deprecation-shim}
@ -450,7 +454,6 @@ BuildRequires: %{py3_dist sphinx-basic-ng}
BuildRequires: %{py3_dist stack-data} BuildRequires: %{py3_dist stack-data}
BuildRequires: %{py3_dist sympy} BuildRequires: %{py3_dist sympy}
BuildRequires: %{py3_dist tinycss2} BuildRequires: %{py3_dist tinycss2}
BuildRequires: %{py3_dist tomli}
BuildRequires: %{py3_dist tomlkit} BuildRequires: %{py3_dist tomlkit}
BuildRequires: %{py3_dist tox} BuildRequires: %{py3_dist tox}
BuildRequires: %{py3_dist typing-extensions} BuildRequires: %{py3_dist typing-extensions}
@ -460,7 +463,9 @@ BuildRequires: %{py3_dist widgetsnbextension}
BuildRequires: %{py3_dist zodb3} BuildRequires: %{py3_dist zodb3}
BuildRequires: qepcad-B BuildRequires: qepcad-B
BuildRequires: qhull BuildRequires: qhull
BuildRequires: qhull-devel
BuildRequires: R BuildRequires: R
BuildRequires: R-devel
BuildRequires: rubiks BuildRequires: rubiks
BuildRequires: rw-devel BuildRequires: rw-devel
BuildRequires: saclib-devel BuildRequires: saclib-devel
@ -484,7 +489,7 @@ BuildRequires: tex(xy.sty)
BuildRequires: web-assets-devel BuildRequires: web-assets-devel
BuildRequires: xorg-x11-fonts-Type1 BuildRequires: xorg-x11-fonts-Type1
BuildRequires: xorg-x11-server-Xvfb BuildRequires: xorg-x11-server-Xvfb
BuildRequires: zn_poly-devel BuildRequires: yarnpkg
Requires: hicolor-icon-theme Requires: hicolor-icon-theme
Requires: rubiks Requires: rubiks
@ -589,6 +594,7 @@ Requires: %{py3_dist beautifulsoup4}
Requires: %{py3_dist beniget} Requires: %{py3_dist beniget}
Requires: %{py3_dist brial} Requires: %{py3_dist brial}
Requires: %{py3_dist charset-normalizer} Requires: %{py3_dist charset-normalizer}
Requires: %{py3_dist contourpy}
Requires: %{py3_dist cppy} Requires: %{py3_dist cppy}
Requires: %{py3_dist cypari2} Requires: %{py3_dist cypari2}
Requires: %{py3_dist cysignals} Requires: %{py3_dist cysignals}
@ -1007,11 +1013,7 @@ pushd build/pkgs/threejs
popd popd
%endif %endif
%autopatch -p0 -M12 %autopatch -p0
%if %{with fes}
%patch13
%endif
%autopatch -p0 -m14
sed -i 's|@@SAGE_LOCAL@@|%{SAGE_LOCAL}|' src/sage/env.py sed -i 's|@@SAGE_LOCAL@@|%{SAGE_LOCAL}|' src/sage/env.py
@ -1055,21 +1057,12 @@ chmod a-x src/sage/modules/fp_graded/{,steenrod/}*.py
# GAP does not have enough memory to load the entire workspace # GAP does not have enough memory to load the entire workspace
sed -i 's/64m/256m/' src/sage/interfaces/gap.py sed -i 's/64m/256m/' src/sage/interfaces/gap.py
# Update the GAP root
sed -i '/GAP_ROOT_DIR/s,SAGE_SHARE,"%{_libdir}",' src/sage/env.py
# Fix detection of Fedora # Fix detection of Fedora
sed -i 's/yum/rpm/' build/bin/sage-guess-package-system sed -i 's/yum/rpm/' build/bin/sage-guess-package-system
# Allow use of gcc 13 # Allow use of gcc 13
sed -i 's/1\[3-9\].*)/1[4-9].*)/' configure sed -i 's/1\[3-9\].*)/1[4-9].*)/' configure
# Allow use of python 3.11
sed -i 's/3\.11\.0/3.12.0/g' configure
# Allow use of libfplll 5.4.4
sed -i 's/5\.4\.2/5.4.4/g' configure
# Allow use of eclib 20221012 # Allow use of eclib 20221012
sed -i 's/20220621/20221012/g' configure sed -i 's/20220621/20221012/g' configure
@ -2080,6 +2073,11 @@ end
######################################################################## ########################################################################
%changelog %changelog
* Mon Mar 13 2023 Jerry James <loganjerry@gmail.com> - 9.8-1
- Version 9.8
- Drop upstreamed patches: -fes-build, -python3.11
- Add patches: -catch-value, -gap-split-root, -bind2nd, -mem-fun-ref
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 9.7-2 * Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 9.7-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild

View file

@ -1,2 +1,2 @@
SHA512 (cremona-2019-10-29.tar.gz) = 32fbb828f26f87191e39123762cfbd796aac9abf346f0dc981e8e3f390435b22d281be3031ea92ae7e18f4ce41af8054784ca0d550a08f17b05c54ca08b4c9c8 SHA512 (cremona-2019-10-29.tar.gz) = 32fbb828f26f87191e39123762cfbd796aac9abf346f0dc981e8e3f390435b22d281be3031ea92ae7e18f4ce41af8054784ca0d550a08f17b05c54ca08b4c9c8
SHA512 (sage-9.7.tar.gz) = 65c21713063dc2b9d632c44e31a5a9f3417f3d8367a9f082569b11c7f456f38ceb774821b9e879b45edd3a08f844d9b432962111d032f5d90ac5efd21f716924 SHA512 (sage-9.8.tar.gz) = 1ba1c7bd07f13bb67f290d194b65234546fb6fee42693dd3d538e5f206b92a2f1ebf2d49b58541469a4c38b54c843ea0614f3d5c1b32f724f3176703ec5382e7