mirror of
https://src.fedoraproject.org/rpms/sagemath.git
synced 2025-04-10 23:18:51 -04:00
parent
0aff64e56a
commit
b63a64ed31
32 changed files with 3 additions and 5929 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,2 +0,0 @@
|
|||
/sage-*.tar.gz
|
||||
/cremona-*.tar.gz
|
|
@ -1,5 +0,0 @@
|
|||
# sagemath
|
||||
|
||||
[Sage](https://www.sagemath.org/) is a free open-source mathematics software
|
||||
system licensed under the GPL. It combines the power of many existing
|
||||
open-source packages into a common Python-based interface.
|
3
dead.package
Normal file
3
dead.package
Normal file
|
@ -0,0 +1,3 @@
|
|||
Retired: Fails to install
|
||||
|
||||
See https://pagure.io/releng/issue/11685
|
11
gprc.expect
11
gprc.expect
|
@ -1,11 +0,0 @@
|
|||
compatible = 0
|
||||
|
||||
/* gp prompt */
|
||||
prompt = "? "
|
||||
|
||||
/* Disable timer */
|
||||
timer = 0
|
||||
|
||||
/* Disable the break loop, otherwise gp will seem to hang on errors */
|
||||
breakloop = 0
|
||||
|
|
@ -1,108 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<component type="desktop-application">
|
||||
<id>org.sagemath.sage</id>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>GPL-2.0-or-later</project_license>
|
||||
<name>sagemath</name>
|
||||
<summary>Mathematics Software System</summary>
|
||||
<description>
|
||||
<p>
|
||||
Sage is a free open-source mathematics software system licensed
|
||||
under the GPL. It combines the power of many existing open-source
|
||||
packages into a common Python-based interface.
|
||||
</p>
|
||||
</description>
|
||||
<launchable type="desktop-id">org.sagemath.sage.desktop</launchable>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2131280369/in/album-72157603532209437/</image>
|
||||
<caption>Notebook</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2131280403/in/album-72157603532209437/</image>
|
||||
<caption>Symbolic computation</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2131280441/in/album-72157603532209437/</image>
|
||||
<caption>More symbolic computation</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2132057124/in/album-72157603532209437/</image>
|
||||
<caption>Basic plotting</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2131280543/in/album-72157603532209437/</image>
|
||||
<caption>Plotting multiple functions</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2131280585/in/album-72157603532209437/</image>
|
||||
<caption>Plotting options</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2131280629/in/album-72157603532209437/</image>
|
||||
<caption>Polygons</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2131280689/in/album-72157603532209437/</image>
|
||||
<caption>Text annotations</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2131280719/in/album-72157603532209437/</image>
|
||||
<caption>Parametric plotting</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2132057406/in/album-72157603532209437/</image>
|
||||
<caption>List comprehensions</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2132057442/in/album-72157603532209437/</image>
|
||||
<caption>Rubik's cube</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2132057494/in/album-72157603532209437/</image>
|
||||
<caption>Scrambled cube</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2132057548/in/album-72157603532209437/</image>
|
||||
<caption>3D cube</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2131280959/in/album-72157603532209437/</image>
|
||||
<caption>Interactive 3D cube</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2132057724/in/album-72157603532209437/</image>
|
||||
<caption>3D plotting with Tachyon</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2132057802/in/album-72157603532209437/</image>
|
||||
<caption>Parametric 3D plotting</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2132057836/in/album-72157603532209437/</image>
|
||||
<caption>JSMath and LaTeX</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2132057874/in/album-72157603532209437/</image>
|
||||
<caption>Matrix operations</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2131281199/in/album-72157603532209437/</image>
|
||||
<caption>Plotting of graphs</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://www.flickr.com/photos/sagescreenshots/2131281877/in/album-72157603532209437/</image>
|
||||
<caption>Contour plot</caption>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
<update_contact>loganjerry@gmail.com</update_contact>
|
||||
<url type="homepage">https://www.sagemath.org/</url>
|
||||
<url type="bugtracker">https://trac.sagemath.org/</url>
|
||||
<url type="faq">https://doc.sagemath.org/html/en/faq/</url>
|
||||
<url type="help">https://doc.sagemath.org/</url>
|
||||
<url type="donation">https://github.com/sponsors/sagemath</url>
|
||||
<content_rating type="oars-1.0"></content_rating>
|
||||
<provides>
|
||||
<binary>sage</binary>
|
||||
</provides>
|
||||
</component>
|
|
@ -1,20 +0,0 @@
|
|||
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 {
|
|
@ -1,13 +0,0 @@
|
|||
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 2020-10-30 16:04:33.325411659 -0600
|
||||
+++ src/sage_setup/command/sage_build_cython.py 2020-10-30 16:09:19.770071485 -0600
|
||||
@@ -262,6 +262,9 @@ class sage_build_cython(Command):
|
||||
with open(self._version_file, 'w') as f:
|
||||
f.write(self._version_stamp)
|
||||
|
||||
+ # Remove buildroot paths from the generated files
|
||||
+ subprocess.run(["find", "build/cythonized/sage", "-type", "f", "-exec", "sed", "-i", "s|@@BUILDROOT@@||g", "{}", "+"], check=True)
|
||||
+
|
||||
# Finally, copy relevant cythonized files from build/cythonized
|
||||
# tree into the build-lib tree
|
||||
for (dst_dir, src_files) in self.get_cythonized_package_files():
|
|
@ -1,232 +0,0 @@
|
|||
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;
|
||||
}
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
Fix this error:
|
||||
|
||||
Inserting allgens.90000-99999
|
||||
Committing...
|
||||
Traceback (most recent call last):
|
||||
File "/builddir/build/BUILD/sage-9.6/cremona.sage.py", line 10, in <module>
|
||||
c._init_from_ftpdata('ecdata-2019-10-29')
|
||||
File "/builddir/build/BUILDROOT/sagemath-9.6-4.fc38.x86_64/usr/lib64/python3.11/site-packages/sage/databases/cremona.py", line 1397, in _init_from_ftpdata
|
||||
self.vacuum()
|
||||
File "/builddir/build/BUILDROOT/sagemath-9.6-4.fc38.x86_64/usr/lib64/python3.11/site-packages/sage/databases/sql_db.py", line 2180, in vacuum
|
||||
self.__connection__.execute('VACUUM')
|
||||
sqlite3.OperationalError: cannot VACUUM from within a transaction
|
||||
|
||||
diff -up src/sage/databases/cremona.py.orig src/sage/databases/cremona.py
|
||||
--- src/sage/databases/cremona.py.orig 2021-08-22 02:44:33.000000000 -0600
|
||||
+++ src/sage/databases/cremona.py 2021-08-26 13:33:03.200366675 -0600
|
||||
@@ -885,7 +885,8 @@ class MiniCremonaDatabase(SQLDatabase):
|
||||
message = "There is no elliptic curve with label " \
|
||||
+ label + " in the default database; try installing " \
|
||||
+ "the optional package database_cremona_ellcurve which " \
|
||||
- + "contains the complete Cremona database"
|
||||
+ + "contains the complete Cremona database: " \
|
||||
+ + "sudo dnf install sagemath-data-elliptic_curves_large"
|
||||
raise ValueError(message)
|
||||
ainvs = eval(c[0])
|
||||
data = {'cremona_label': label,
|
||||
@@ -1670,6 +1671,7 @@ class LargeCremonaDatabase(MiniCremonaDa
|
||||
con.executemany("UPDATE t_curve SET gens=? WHERE curve=?",
|
||||
curve_data)
|
||||
print("Committing...")
|
||||
+ self.commit()
|
||||
if largest_conductor and int(v[0]) > largest_conductor:
|
||||
break
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
diff -up src/sage/numerical/backends/cvxopt_backend.pyx.orig src/sage/numerical/backends/cvxopt_backend.pyx
|
||||
--- src/sage/numerical/backends/cvxopt_backend.pyx.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/numerical/backends/cvxopt_backend.pyx 2021-05-28 12:05:47.551650940 -0600
|
||||
@@ -550,7 +550,7 @@ cdef class CVXOPTBackend(GenericBackend)
|
||||
self.answer = solvers.lp(c,G,h)
|
||||
|
||||
#possible outcomes
|
||||
- if self.answer['status'] == 'optimized':
|
||||
+ if self.answer['status'] in ['optimized', 'optimal']:
|
||||
pass
|
||||
elif self.answer['status'] == 'primal infeasible':
|
||||
raise MIPSolverException("CVXOPT: primal infeasible")
|
||||
diff -up src/sage/numerical/backends/cvxopt_sdp_backend.pyx.orig src/sage/numerical/backends/cvxopt_sdp_backend.pyx
|
||||
--- src/sage/numerical/backends/cvxopt_sdp_backend.pyx.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/numerical/backends/cvxopt_sdp_backend.pyx 2021-05-28 12:05:47.552650940 -0600
|
||||
@@ -150,7 +150,7 @@ cdef class CVXOPTSDPBackend(MatrixSDPBac
|
||||
self.answer = solvers.sdp(c,Gs=G_matrix,hs=h_matrix)
|
||||
|
||||
#possible outcomes
|
||||
- if self.answer['status'] == 'optimized':
|
||||
+ if self.answer['status'] in ['optimized', 'optimal']:
|
||||
pass
|
||||
elif self.answer['status'] == 'primal infeasible':
|
||||
raise SDPSolverException("CVXOPT: primal infeasible")
|
|
@ -1,46 +0,0 @@
|
|||
diff -up src/sage/env.py.orig src/sage/env.py
|
||||
--- src/sage/env.py.orig 2023-01-15 17:04:08.814627154 -0700
|
||||
+++ src/sage/env.py 2023-01-15 17:17:20.339009783 -0700
|
||||
@@ -166,15 +166,15 @@ SAGE_DATE = var("SAGE_DATE", version.dat
|
||||
SAGE_VERSION_BANNER = var("SAGE_VERSION_BANNER", version.banner)
|
||||
|
||||
# virtual environment where sagelib is installed
|
||||
-SAGE_VENV = var("SAGE_VENV", os.path.abspath(sys.prefix))
|
||||
+SAGE_VENV = var("SAGE_VENV", "@@SAGE_LOCAL@@")
|
||||
SAGE_LIB = var("SAGE_LIB", os.path.dirname(os.path.dirname(__file__)))
|
||||
-SAGE_EXTCODE = var("SAGE_EXTCODE", join(SAGE_LIB, "sage", "ext_data"))
|
||||
+SAGE_EXTCODE = var("SAGE_EXTCODE", join("/usr", "share", "sagemath", "etc"))
|
||||
SAGE_VENV_SPKG_INST = var("SAGE_VENV_SPKG_INST", join(SAGE_VENV, "var", "lib", "sage", "installed"))
|
||||
|
||||
# prefix hierarchy where non-Python packages are installed
|
||||
SAGE_LOCAL = var("SAGE_LOCAL", SAGE_VENV)
|
||||
-SAGE_SHARE = var("SAGE_SHARE", join(SAGE_LOCAL, "share"))
|
||||
-SAGE_DOC = var("SAGE_DOC", join(SAGE_SHARE, "doc", "sage"))
|
||||
+SAGE_SHARE = var("SAGE_SHARE", join("/usr", "share", "sagemath"))
|
||||
+SAGE_DOC = var("SAGE_DOC", join("/usr", "share", "doc", "sagemath"))
|
||||
SAGE_SPKG_INST = var("SAGE_SPKG_INST", join(SAGE_LOCAL, "var", "lib", "sage", "installed"))
|
||||
|
||||
# source tree of the Sage distribution
|
||||
@@ -202,16 +202,16 @@ THEBE_DIR = var("THEBE_DIR", join(SAGE_S
|
||||
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"))
|
||||
CREMONA_LARGE_DATA_DIR = var("CREMONA_LARGE_DATA_DIR", join(SAGE_SHARE, "cremona"))
|
||||
-JMOL_DIR = var("JMOL_DIR", join(SAGE_SHARE, "jmol"))
|
||||
-MATHJAX_DIR = var("MATHJAX_DIR", join(SAGE_SHARE, "mathjax"))
|
||||
-MTXLIB = var("MTXLIB", join(SAGE_SHARE, "meataxe"))
|
||||
+JMOL_DIR = var("JMOL_DIR", join("/usr", "share", "java", "jmol"))
|
||||
+MATHJAX_DIR = var("MATHJAX_DIR", join("/usr", "share", "javascript", "mathjax"))
|
||||
+MTXLIB = var("MTXLIB", join(DOT_SAGE, "meataxe"))
|
||||
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("/usr", "share", "doc", "python3-pplpy-devel"))
|
||||
MAXIMA = var("MAXIMA", "maxima")
|
||||
MAXIMA_FAS = var("MAXIMA_FAS")
|
||||
KENZO_FAS = var("KENZO_FAS")
|
||||
-SAGE_NAUTY_BINS_PREFIX = var("SAGE_NAUTY_BINS_PREFIX", "")
|
||||
-RUBIKS_BINS_PREFIX = var("RUBIKS_BINS_PREFIX", "")
|
||||
+SAGE_NAUTY_BINS_PREFIX = var("SAGE_NAUTY_BINS_PREFIX", "nauty-")
|
||||
+RUBIKS_BINS_PREFIX = var("RUBIKS_BINS_PREFIX", "rubiks_")
|
||||
FOURTITWO_HILBERT = var("FOURTITWO_HILBERT")
|
||||
FOURTITWO_MARKOV = var("FOURTITWO_MARKOV")
|
||||
FOURTITWO_GRAVER = var("FOURTITWO_GRAVER")
|
|
@ -1,371 +0,0 @@
|
|||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/graphs/strongly_regular_db.pyx 2023-03-13 08:43:22.143746071 -0600
|
||||
@@ -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
|
||||
2-intersection set if it intersects every hyperplane in either `h_1` or
|
||||
- `h_2` points, where `h_1,h_2\in \\NN`.
|
||||
+ `h_2` points, where `h_1,h_2\in \NN`.
|
||||
|
||||
From a 2-intersection set `S` can be defined a strongly-regular graph in the
|
||||
following way:
|
||||
diff -up src/sage/groups/group.pyx.orig src/sage/groups/group.pyx
|
||||
--- src/sage/groups/group.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/groups/group.pyx 2023-03-13 08:43:22.143746071 -0600
|
||||
@@ -51,7 +51,7 @@ def is_Group(x):
|
||||
|
||||
|
||||
cdef class Group(Parent):
|
||||
- """
|
||||
+ r"""
|
||||
Base class for all groups
|
||||
|
||||
TESTS::
|
||||
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 2023-02-11 06:25:15.000000000 -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
|
||||
self.ith_word = &ith_word_linear
|
||||
|
||||
def run(self, partition=None):
|
||||
- """
|
||||
+ r"""
|
||||
Perform the canonical labeling and automorphism group computation,
|
||||
storing results to self.
|
||||
|
||||
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 2023-02-11 06:25:15.000000000 -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():
|
||||
return unpickle_class_args, (ntl_mat_ZZ, (self.__nrows, self.__ncols, self.list()))
|
||||
|
||||
def __repr__(self):
|
||||
- """
|
||||
+ r"""
|
||||
Return the string representation of self.
|
||||
|
||||
EXAMPLES::
|
||||
diff -up src/sage/libs/symmetrica/sc.pxi.orig src/sage/libs/symmetrica/sc.pxi
|
||||
--- src/sage/libs/symmetrica/sc.pxi.orig 2023-02-11 06:25:15.000000000 -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
|
||||
|
||||
|
||||
def kranztafel_symmetrica(a, b):
|
||||
- """
|
||||
+ r"""
|
||||
you enter the INTEGER objects, say a and b, and res 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
|
||||
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 2023-02-11 06:25:15.000000000 -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
|
||||
return ans
|
||||
|
||||
def _multiply_classical(self, Matrix_integer_dense right):
|
||||
- """
|
||||
+ r"""
|
||||
EXAMPLES::
|
||||
|
||||
sage: n = 3
|
||||
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 2023-02-11 06:25:15.000000000 -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
|
||||
return (word_size, little_endian, s), 10
|
||||
|
||||
def _unpickle(self, data, int version):
|
||||
- """
|
||||
+ r"""
|
||||
TESTS:
|
||||
|
||||
Test for char-sized modulus::
|
||||
@@ -2261,7 +2261,7 @@ cdef class Matrix_modn_dense_template(Ma
|
||||
return Matrix_dense.determinant(self)
|
||||
|
||||
cdef xgcd_eliminate(self, celement * row1, celement* row2, Py_ssize_t start_col):
|
||||
- """
|
||||
+ r"""
|
||||
Reduces ``row1`` and ``row2`` by a unimodular transformation
|
||||
using the xgcd relation between their first coefficients ``a`` and
|
||||
``b``.
|
||||
diff -up src/sage/misc/cachefunc.pyx.orig src/sage/misc/cachefunc.pyx
|
||||
--- src/sage/misc/cachefunc.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/misc/cachefunc.pyx 2023-03-13 08:43:39.550431661 -0600
|
||||
@@ -834,7 +834,7 @@ cdef class CachedFunction():
|
||||
## forward other questions to the cached function.
|
||||
|
||||
def _instancedoc_(self):
|
||||
- """
|
||||
+ r"""
|
||||
Provide documentation for the cached function.
|
||||
|
||||
A cached function shall inherit the documentation
|
||||
diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
|
||||
--- src/sage/misc/sageinspect.py.orig 2023-02-11 06:25:15.000000000 -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):
|
||||
|
||||
|
||||
def _split_syntactical_unit(s):
|
||||
- """
|
||||
+ r"""
|
||||
Split off a sub-expression from the start of a given string.
|
||||
|
||||
INPUT:
|
||||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/numerical/backends/generic_backend.pyx 2023-03-13 08:43:39.552431625 -0600
|
||||
@@ -1388,7 +1388,7 @@ cdef class GenericBackend:
|
||||
raise NotImplementedError()
|
||||
|
||||
cpdef bint is_variable_basic(self, int index):
|
||||
- """
|
||||
+ r"""
|
||||
Test whether the given variable is basic.
|
||||
|
||||
This assumes that the problem has been solved with the simplex method
|
||||
@@ -1418,7 +1418,7 @@ cdef class GenericBackend:
|
||||
raise NotImplementedError()
|
||||
|
||||
cpdef bint is_variable_nonbasic_at_lower_bound(self, int index):
|
||||
- """
|
||||
+ r"""
|
||||
Test whether the given variable is nonbasic at lower bound.
|
||||
|
||||
This assumes that the problem has been solved with the simplex method
|
||||
@@ -1448,7 +1448,7 @@ cdef class GenericBackend:
|
||||
raise NotImplementedError()
|
||||
|
||||
cpdef bint is_slack_variable_basic(self, int index):
|
||||
- """
|
||||
+ r"""
|
||||
Test whether the slack variable of the given row is basic.
|
||||
|
||||
This assumes that the problem has been solved with the simplex method
|
||||
@@ -1478,7 +1478,7 @@ cdef class GenericBackend:
|
||||
raise NotImplementedError()
|
||||
|
||||
cpdef bint is_slack_variable_nonbasic_at_lower_bound(self, int index):
|
||||
- """
|
||||
+ r"""
|
||||
Test whether the given variable is nonbasic at lower bound.
|
||||
|
||||
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
|
||||
--- src/sage/numerical/backends/glpk_backend.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/numerical/backends/glpk_backend.pyx 2023-03-13 08:43:39.553431607 -0600
|
||||
@@ -2316,7 +2316,7 @@ cdef class GLPKBackend(GenericBackend):
|
||||
raise ValueError("This parameter is not available.")
|
||||
|
||||
cpdef bint is_variable_basic(self, int index):
|
||||
- """
|
||||
+ r"""
|
||||
Test whether the given variable is basic.
|
||||
|
||||
This assumes that the problem has been solved with the simplex method
|
||||
@@ -2347,7 +2347,7 @@ cdef class GLPKBackend(GenericBackend):
|
||||
return self.get_col_stat(index) == GLP_BS
|
||||
|
||||
cpdef bint is_variable_nonbasic_at_lower_bound(self, int index):
|
||||
- """
|
||||
+ r"""
|
||||
Test whether the given variable is nonbasic at lower bound.
|
||||
This assumes that the problem has been solved with the simplex method
|
||||
and a basis is available. Otherwise an exception will be raised.
|
||||
@@ -2377,7 +2377,7 @@ cdef class GLPKBackend(GenericBackend):
|
||||
return self.get_col_stat(index) == GLP_NL
|
||||
|
||||
cpdef bint is_slack_variable_basic(self, int index):
|
||||
- """
|
||||
+ r"""
|
||||
Test whether the slack variable of the given row is basic.
|
||||
|
||||
This assumes that the problem has been solved with the simplex method
|
||||
@@ -2408,7 +2408,7 @@ cdef class GLPKBackend(GenericBackend):
|
||||
return self.get_row_stat(index) == GLP_BS
|
||||
|
||||
cpdef bint is_slack_variable_nonbasic_at_lower_bound(self, int index):
|
||||
- """
|
||||
+ r"""
|
||||
Test whether the slack variable of the given row is nonbasic at lower bound.
|
||||
|
||||
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
|
||||
--- src/sage/numerical/backends/interactivelp_backend.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/numerical/backends/interactivelp_backend.pyx 2023-03-13 08:43:39.553431607 -0600
|
||||
@@ -1065,7 +1065,7 @@ cdef class InteractiveLPBackend:
|
||||
problem_type, ring, objective_constant_term=d)
|
||||
|
||||
cpdef bint is_variable_basic(self, int index):
|
||||
- """
|
||||
+ r"""
|
||||
Test whether the given variable is basic.
|
||||
|
||||
This assumes that the problem has been solved with the simplex method
|
||||
@@ -1095,7 +1095,7 @@ cdef class InteractiveLPBackend:
|
||||
return self.lp_std_form.decision_variables()[index] in self.final_dictionary.basic_variables()
|
||||
|
||||
cpdef bint is_variable_nonbasic_at_lower_bound(self, int index):
|
||||
- """
|
||||
+ r"""
|
||||
Test whether the given variable is nonbasic at lower bound.
|
||||
|
||||
This assumes that the problem has been solved with the simplex method
|
||||
@@ -1125,7 +1125,7 @@ cdef class InteractiveLPBackend:
|
||||
return self.lp_std_form.decision_variables()[index] in self.final_dictionary.nonbasic_variables()
|
||||
|
||||
cpdef bint is_slack_variable_basic(self, int index):
|
||||
- """
|
||||
+ r"""
|
||||
Test whether the slack variable of the given row is basic.
|
||||
|
||||
This assumes that the problem has been solved with the simplex method
|
||||
@@ -1155,7 +1155,7 @@ cdef class InteractiveLPBackend:
|
||||
return self.lp_std_form.slack_variables()[index] in self.final_dictionary.basic_variables()
|
||||
|
||||
cpdef bint is_slack_variable_nonbasic_at_lower_bound(self, int index):
|
||||
- """
|
||||
+ r"""
|
||||
Test whether the given variable is nonbasic at lower bound.
|
||||
|
||||
This assumes that the problem has been solved with the simplex method
|
||||
@@ -1187,7 +1187,7 @@ cdef class InteractiveLPBackend:
|
||||
cpdef dictionary(self):
|
||||
# Proposed addition to the general interface,
|
||||
# which would for other solvers return backend dictionaries (#18804)
|
||||
- """
|
||||
+ r"""
|
||||
Return a dictionary representing the current basis.
|
||||
|
||||
EXAMPLES::
|
||||
@@ -1222,7 +1222,7 @@ cdef class InteractiveLPBackend:
|
||||
|
||||
cpdef interactive_lp_problem(self):
|
||||
|
||||
- """
|
||||
+ r"""
|
||||
Return the :class:`InteractiveLPProblem` object associated with this backend.
|
||||
|
||||
EXAMPLES::
|
||||
diff -up src/sage/rings/complex_interval.pyx.orig src/sage/rings/complex_interval.pyx
|
||||
--- src/sage/rings/complex_interval.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/rings/complex_interval.pyx 2023-03-13 08:43:39.553431607 -0600
|
||||
@@ -1114,7 +1114,7 @@ cdef class ComplexIntervalFieldElement(s
|
||||
return x
|
||||
|
||||
def __invert__(self):
|
||||
- """
|
||||
+ r"""
|
||||
Return the multiplicative inverse of ``self``.
|
||||
|
||||
EXAMPLES::
|
||||
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 2023-02-11 06:25:15.000000000 -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
|
||||
|
||||
|
||||
def _repr_(self):
|
||||
- """
|
||||
+ r"""
|
||||
Return a string representation of this section.
|
||||
|
||||
EXAMPLES::
|
||||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/rings/finite_rings/integer_mod.pyx 2023-03-13 08:43:39.555431570 -0600
|
||||
@@ -2243,7 +2243,7 @@ cdef class IntegerMod_gmp(IntegerMod_abs
|
||||
return int(self.lift())
|
||||
|
||||
def __pow__(IntegerMod_gmp self, exp, m): # NOTE: m ignored, always use modulus of parent ring
|
||||
- """
|
||||
+ r"""
|
||||
EXAMPLES::
|
||||
|
||||
sage: R = Integers(10^10)
|
||||
@@ -3540,7 +3540,7 @@ cdef class IntegerMod_int64(IntegerMod_a
|
||||
return self._new_c(self.ivalue >> (-k))
|
||||
|
||||
def __pow__(IntegerMod_int64 self, exp, m): # NOTE: m ignored, always use modulus of parent ring
|
||||
- """
|
||||
+ r"""
|
||||
EXAMPLES::
|
||||
|
||||
sage: R = Integers(10)
|
||||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2023-03-13 08:43:44.190347338 -0600
|
||||
@@ -2487,7 +2487,7 @@ cdef class MPolynomial_libsingular(MPoly
|
||||
return char_to_str(s)
|
||||
|
||||
def _latex_(self):
|
||||
- """
|
||||
+ r"""
|
||||
Return a polynomial LaTeX representation of this polynomial.
|
||||
|
||||
EXAMPLES::
|
||||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/rings/polynomial/polynomial_element.pyx 2023-03-13 08:43:44.194347266 -0600
|
||||
@@ -6832,8 +6832,8 @@ cdef class Polynomial(CommutativeAlgebra
|
||||
where the roots `a` and `b` are to be considered in the algebraic
|
||||
closure of the fraction field of the coefficients and counted with
|
||||
multiplicities. If the polynomials are not monic this quantity is
|
||||
- multiplied by `\\alpha_1^{deg(p_2)} \\alpha_2^{deg(p_1)}` where
|
||||
- `\\alpha_1` and `\\alpha_2` are the leading coefficients of `p_1` and
|
||||
+ multiplied by `\alpha_1^{deg(p_2)} \alpha_2^{deg(p_1)}` where
|
||||
+ `\alpha_1` and `\alpha_2` are the leading coefficients of `p_1` and
|
||||
`p_2` respectively.
|
||||
|
||||
INPUT:
|
||||
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 2023-02-11 06:25:15.000000000 -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
|
||||
return a
|
||||
|
||||
def log(self, base=None):
|
||||
- """
|
||||
+ r"""
|
||||
Return the logarithm.
|
||||
|
||||
INPUT:
|
||||
diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
|
||||
--- src/sage/rings/real_mpfi.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/rings/real_mpfi.pyx 2023-03-13 08:43:45.743319120 -0600
|
||||
@@ -1309,7 +1309,7 @@ cdef class RealIntervalFieldElement(Ring
|
||||
return self.str(10)
|
||||
|
||||
def _latex_(self):
|
||||
- """
|
||||
+ r"""
|
||||
Return a latex representation of ``self``.
|
||||
|
||||
EXAMPLES::
|
||||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/rings/tate_algebra_element.pyx 2023-03-13 08:43:46.838299224 -0600
|
||||
@@ -3448,7 +3448,7 @@ cdef class TateAlgebraElement(Commutativ
|
||||
|
||||
@coerce_binop
|
||||
def Spoly(self, other):
|
||||
- """
|
||||
+ r"""
|
||||
Return the S-polynomial of this series and ``other``.
|
||||
|
||||
INPUT:
|
||||
diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
|
||||
--- src/sage/symbolic/expression.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/symbolic/expression.pyx 2023-03-13 08:43:46.840299188 -0600
|
||||
@@ -7,7 +7,7 @@
|
||||
# distutils: include_dirs = SINGULAR_INCDIR
|
||||
# pynac/basic.h includes
|
||||
# factory/factory.h so this ^ is needed to find it
|
||||
-"""
|
||||
+r"""
|
||||
Symbolic Expressions
|
||||
|
||||
RELATIONAL EXPRESSIONS:
|
|
@ -1,182 +0,0 @@
|
|||
diff -up src/sage/env.py.orig src/sage/env.py
|
||||
--- src/sage/env.py.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/env.py 2023-03-13 09:26:16.468693261 -0600
|
||||
@@ -523,7 +523,8 @@ def cython_aliases(required_modules=None
|
||||
aliases[var + "INCDIR"] = pc['include_dirs']
|
||||
aliases[var + "LIBDIR"] = pc['library_dirs']
|
||||
aliases[var + "LIBEXTRA"] = list(filter(lambda s: not s.startswith(('-l','-L')), libs.split()))
|
||||
- aliases[var + "LIBRARIES"] = pc['libraries']
|
||||
+ aliases[var + "LIBRARIES"] = pc['libraries'] + ['gomp']
|
||||
+ aliases['Singular_INCDIR'] = ['/usr/include/singular', '/usr/include/factory']
|
||||
|
||||
# uname-specific flags
|
||||
UNAME = os.uname()
|
||||
diff -up src/sage/graphs/mcqd.pyx.orig src/sage/graphs/mcqd.pyx
|
||||
--- src/sage/graphs/mcqd.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/graphs/mcqd.pyx 2023-03-13 09:26:16.468693261 -0600
|
||||
@@ -1,4 +1,5 @@
|
||||
# distutils: language = c++
|
||||
+# distutils: libraries = mcqd
|
||||
# sage_setup: distribution = sagemath-mcqd
|
||||
|
||||
from cysignals.signals cimport sig_on, sig_off
|
||||
diff -up src/sage/libs/arb/arb.pxd.orig src/sage/libs/arb/arb.pxd
|
||||
--- src/sage/libs/arb/arb.pxd.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/libs/arb/arb.pxd 2023-03-13 09:26:16.468693261 -0600
|
||||
@@ -1,4 +1,5 @@
|
||||
# distutils: libraries = gmp flint ARB_LIBRARY
|
||||
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
|
||||
# distutils: depends = arb.h
|
||||
|
||||
from sage.libs.arb.types cimport *
|
||||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/libs/arb/arb_version.pyx 2023-03-13 09:26:16.468693261 -0600
|
||||
@@ -1,4 +1,5 @@
|
||||
# -*- coding: utf-8
|
||||
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
|
||||
from sage.libs.arb.arb cimport arb_version
|
||||
from sage.cpython.string cimport char_to_str
|
||||
|
||||
diff -up src/sage/libs/arb/arith.pyx.orig src/sage/libs/arb/arith.pyx
|
||||
--- src/sage/libs/arb/arith.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/libs/arb/arith.pyx 2023-03-13 09:26:16.468693261 -0600
|
||||
@@ -1,3 +1,4 @@
|
||||
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
|
||||
"""
|
||||
Arithmetic functions using the arb library
|
||||
"""
|
||||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/libs/mpmath/ext_impl.pyx 2023-03-13 09:26:16.469693242 -0600
|
||||
@@ -1,3 +1,4 @@
|
||||
+# distutils: include_dirs = /usr/include/flint
|
||||
"""
|
||||
This module provides the core implementation of multiprecision
|
||||
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
|
||||
--- src/sage/libs/mpmath/ext_libmp.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/libs/mpmath/ext_libmp.pyx 2023-03-13 09:26:16.469693242 -0600
|
||||
@@ -1,3 +1,4 @@
|
||||
+# distutils: include_dirs = /usr/include/flint
|
||||
"""
|
||||
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
|
||||
--- src/sage/libs/mpmath/ext_main.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/libs/mpmath/ext_main.pyx 2023-03-13 09:26:16.469693242 -0600
|
||||
@@ -1,3 +1,4 @@
|
||||
+# distutils: include_dirs = /usr/include/flint
|
||||
"""
|
||||
mpmath floating-point numbers
|
||||
|
||||
diff -up src/sage/libs/mpmath/utils.pyx.orig src/sage/libs/mpmath/utils.pyx
|
||||
--- src/sage/libs/mpmath/utils.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/libs/mpmath/utils.pyx 2023-03-13 09:26:16.470693224 -0600
|
||||
@@ -1,3 +1,4 @@
|
||||
+# distutils: include_dirs = /usr/include/flint
|
||||
"""
|
||||
Utilities for Sage-mpmath interaction
|
||||
|
||||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/matrix/matrix_complex_ball_dense.pyx 2023-03-13 09:26:16.470693224 -0600
|
||||
@@ -1,4 +1,5 @@
|
||||
# distutils: libraries = ARB_LIBRARY
|
||||
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
|
||||
r"""
|
||||
Arbitrary precision complex ball matrices using Arb
|
||||
|
||||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/matrix/matrix_cyclo_dense.pyx 2023-03-13 09:26:16.470693224 -0600
|
||||
@@ -1,7 +1,7 @@
|
||||
# distutils: language = c++
|
||||
# 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: extra_link_args = NTL_LIBEXTRA
|
||||
"""
|
||||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/matrix/matrix_mpolynomial_dense.pyx 2023-03-13 09:26:16.471693206 -0600
|
||||
@@ -1,3 +1,4 @@
|
||||
+# distutils: include_dirs = /usr/include/singular /usr/include/factory
|
||||
"""
|
||||
Dense matrices over multivariate polynomials over fields
|
||||
|
||||
diff -up src/sage/rings/complex_arb.pyx.orig src/sage/rings/complex_arb.pyx
|
||||
--- src/sage/rings/complex_arb.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/rings/complex_arb.pyx 2023-03-13 09:26:16.471693206 -0600
|
||||
@@ -1,4 +1,5 @@
|
||||
# -*- coding: utf-8
|
||||
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
|
||||
r"""
|
||||
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
|
||||
--- 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 2023-03-13 10:54:33.688631507 -0600
|
||||
@@ -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: extra_link_args = NTL_LIBEXTRA
|
||||
# distutils: language = c++
|
||||
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 2023-03-13 08:43:44.190347338 -0600
|
||||
+++ src/sage/rings/polynomial/multi_polynomial_libsingular.pyx 2023-03-13 09:26:16.473693169 -0600
|
||||
@@ -1,3 +1,4 @@
|
||||
+# distutils: include_dirs = /usr/include/singular /usr/include/factory
|
||||
r"""
|
||||
Multivariate Polynomials via libSINGULAR
|
||||
|
||||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/rings/polynomial/multi_polynomial.pyx 2023-03-13 09:26:16.473693169 -0600
|
||||
@@ -1,3 +1,4 @@
|
||||
+# distutils: include_dirs = /usr/include/singular /usr/include/factory
|
||||
r"""
|
||||
Base class for elements of multivariate polynomial rings
|
||||
"""
|
||||
diff -up src/sage/rings/polynomial/plural.pyx.orig src/sage/rings/polynomial/plural.pyx
|
||||
--- src/sage/rings/polynomial/plural.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/rings/polynomial/plural.pyx 2023-03-13 09:26:16.474693151 -0600
|
||||
@@ -1,3 +1,4 @@
|
||||
+# distutils: include_dirs = /usr/include/singular /usr/include/factory
|
||||
r"""
|
||||
Noncommutative polynomials via libSINGULAR/Plural
|
||||
|
||||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/rings/polynomial/polynomial_complex_arb.pyx 2023-03-13 09:26:16.474693151 -0600
|
||||
@@ -1,4 +1,5 @@
|
||||
# -*- coding: utf-8
|
||||
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
|
||||
r"""
|
||||
Univariate polynomials over `\CC` with interval coefficients using Arb.
|
||||
|
||||
diff -up src/sage/rings/real_arb.pyx.orig src/sage/rings/real_arb.pyx
|
||||
--- src/sage/rings/real_arb.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/rings/real_arb.pyx 2023-03-13 09:26:16.474693151 -0600
|
||||
@@ -1,4 +1,5 @@
|
||||
# -*- coding: utf-8
|
||||
+# distutils: include_dirs = /usr/include/arb /usr/include/flint
|
||||
r"""
|
||||
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
|
||||
--- 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 2023-03-13 09:26:16.475693132 -0600
|
||||
@@ -205,6 +205,7 @@ class sage_build_cython(Command):
|
||||
self.library_order = library_order
|
||||
# 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.extend(['@@CYSIGNALS@@'])
|
||||
|
||||
from Cython.Build import cythonize
|
||||
import Cython.Compiler.Options
|
|
@ -1,281 +0,0 @@
|
|||
diff -up configure.orig configure
|
||||
--- configure.orig 2022-09-19 16:39:46.000000000 -0600
|
||||
+++ configure 2023-01-15 19:47:16.551480424 -0700
|
||||
@@ -17604,12 +17604,12 @@ if test -n "$OPENBLAS_CFLAGS"; then
|
||||
pkg_cv_OPENBLAS_CFLAGS="$OPENBLAS_CFLAGS"
|
||||
elif test -n "$PKG_CONFIG"; then
|
||||
if test -n "$PKG_CONFIG" && \
|
||||
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openblas >= 0.2.20\""; } >&5
|
||||
- ($PKG_CONFIG --exists --print-errors "openblas >= 0.2.20") 2>&5
|
||||
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flexiblas >= 3.0.0\""; } >&5
|
||||
+ ($PKG_CONFIG --exists --print-errors "flexiblas >= 3.0.0") 2>&5
|
||||
ac_status=$?
|
||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; }; then
|
||||
- pkg_cv_OPENBLAS_CFLAGS=`$PKG_CONFIG --cflags "openblas >= 0.2.20" 2>/dev/null`
|
||||
+ pkg_cv_OPENBLAS_CFLAGS=`$PKG_CONFIG --cflags "flexiblas >= 3.0.0" 2>/dev/null`
|
||||
test "x$?" != "x0" && pkg_failed=yes
|
||||
else
|
||||
pkg_failed=yes
|
||||
@@ -17621,12 +17621,12 @@ if test -n "$OPENBLAS_LIBS"; then
|
||||
pkg_cv_OPENBLAS_LIBS="$OPENBLAS_LIBS"
|
||||
elif test -n "$PKG_CONFIG"; then
|
||||
if test -n "$PKG_CONFIG" && \
|
||||
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openblas >= 0.2.20\""; } >&5
|
||||
- ($PKG_CONFIG --exists --print-errors "openblas >= 0.2.20") 2>&5
|
||||
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flexiblas >= 3.0.0\""; } >&5
|
||||
+ ($PKG_CONFIG --exists --print-errors "flexiblas >= 3.0.0") 2>&5
|
||||
ac_status=$?
|
||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; }; then
|
||||
- pkg_cv_OPENBLAS_LIBS=`$PKG_CONFIG --libs "openblas >= 0.2.20" 2>/dev/null`
|
||||
+ pkg_cv_OPENBLAS_LIBS=`$PKG_CONFIG --libs "flexiblas >= 3.0.0" 2>/dev/null`
|
||||
test "x$?" != "x0" && pkg_failed=yes
|
||||
else
|
||||
pkg_failed=yes
|
||||
@@ -17647,9 +17647,9 @@ else
|
||||
_pkg_short_errors_supported=no
|
||||
fi
|
||||
if test $_pkg_short_errors_supported = yes; then
|
||||
- OPENBLAS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "openblas >= 0.2.20" 2>&1`
|
||||
+ OPENBLAS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "flexiblas >= 3.0.0" 2>&1`
|
||||
else
|
||||
- OPENBLAS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "openblas >= 0.2.20" 2>&1`
|
||||
+ OPENBLAS_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "flexiblas >= 3.0.0" 2>&1`
|
||||
fi
|
||||
# Put the nasty error message in config.log where it belongs
|
||||
echo "$OPENBLAS_PKG_ERRORS" >&5
|
||||
@@ -17673,17 +17673,17 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
|
||||
/* end confdefs.h. */
|
||||
|
||||
namespace conftest {
|
||||
- extern "C" int openblas_get_config ();
|
||||
+ extern "C" int flexiblas_get_version ();
|
||||
}
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
-return conftest::openblas_get_config ();
|
||||
+return conftest::flexiblas_get_version ();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
-for ac_lib in '' openblas cblas blas
|
||||
+for ac_lib in '' flexiblas cblas blas
|
||||
do
|
||||
if test -z "$ac_lib"; then
|
||||
ac_res="none required"
|
||||
@@ -17740,22 +17740,20 @@ else $as_nop
|
||||
/* end confdefs.h. */
|
||||
|
||||
#include <stdio.h>
|
||||
- char *openblas_get_config(void);
|
||||
+ void flexiblas_get_version(void);
|
||||
int version[3];
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
version[0] = version[1] = version[2] = 0;
|
||||
/*printf("%s", openblas_get_config());*/
|
||||
- if (sscanf(openblas_get_config(), "OpenBLAS %d.%d.%d",
|
||||
- version, version+1, version+2) < 1)
|
||||
- return 1;
|
||||
+ flexiblas_get_version(&version[0], &version[1], &version[2]);
|
||||
if ( 10000 * version[0]
|
||||
+ 100 * version[1]
|
||||
+ version[2]
|
||||
- < 10000 * 0
|
||||
- + 100 * 2
|
||||
- + 20)
|
||||
+ < 10000 * 3
|
||||
+ + 100 * 0
|
||||
+ + 0)
|
||||
return 1;
|
||||
;
|
||||
return 0;
|
||||
@@ -17806,7 +17804,7 @@ return conftest::cblas_dgemm ();
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
-for ac_lib in '' openblas cblas blas
|
||||
+for ac_lib in '' flexiblas cblas blas
|
||||
do
|
||||
if test -z "$ac_lib"; then
|
||||
ac_res="none required"
|
||||
@@ -17873,7 +17871,7 @@ return conftest::dgeqrf ();
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
-for ac_lib in '' openblas lapack
|
||||
+for ac_lib in '' flexiblas lapack
|
||||
do
|
||||
if test -z "$ac_lib"; then
|
||||
ac_res="none required"
|
||||
@@ -17940,7 +17938,7 @@ return conftest::dgeqrf_ ();
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
-for ac_lib in '' openblas lapack
|
||||
+for ac_lib in '' flexiblas lapack
|
||||
do
|
||||
if test -z "$ac_lib"; then
|
||||
ac_res="none required"
|
||||
@@ -18007,7 +18005,7 @@ return conftest::DGEQRF ();
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
-for ac_lib in '' openblas lapack
|
||||
+for ac_lib in '' flexiblas lapack
|
||||
do
|
||||
if test -z "$ac_lib"; then
|
||||
ac_res="none required"
|
||||
@@ -18074,7 +18072,7 @@ return conftest::DGEQRF_ ();
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
-for ac_lib in '' openblas lapack
|
||||
+for ac_lib in '' flexiblas lapack
|
||||
do
|
||||
if test -z "$ac_lib"; then
|
||||
ac_res="none required"
|
||||
@@ -18165,17 +18163,17 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
|
||||
/* end confdefs.h. */
|
||||
|
||||
namespace conftest {
|
||||
- extern "C" int openblas_get_config ();
|
||||
+ extern "C" int flexiblas_get_version ();
|
||||
}
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
-return conftest::openblas_get_config ();
|
||||
+return conftest::flexiblas_get_version ();
|
||||
;
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
-for ac_lib in '' openblas cblas blas
|
||||
+for ac_lib in '' flexiblas cblas blas
|
||||
do
|
||||
if test -z "$ac_lib"; then
|
||||
ac_res="none required"
|
||||
@@ -18232,22 +18230,20 @@ else $as_nop
|
||||
/* end confdefs.h. */
|
||||
|
||||
#include <stdio.h>
|
||||
- char *openblas_get_config(void);
|
||||
+ void flexiblas_get_version(void);
|
||||
int version[3];
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
version[0] = version[1] = version[2] = 0;
|
||||
/*printf("%s", openblas_get_config());*/
|
||||
- if (sscanf(openblas_get_config(), "OpenBLAS %d.%d.%d",
|
||||
- version, version+1, version+2) < 1)
|
||||
- return 1;
|
||||
+ flexiblas_get_version(&version[0], &version[1], &version[2]);
|
||||
if ( 10000 * version[0]
|
||||
+ 100 * version[1]
|
||||
+ version[2]
|
||||
- < 10000 * 0
|
||||
- + 100 * 2
|
||||
- + 20)
|
||||
+ < 10000 * 3
|
||||
+ + 100 * 0
|
||||
+ + 0)
|
||||
return 1;
|
||||
;
|
||||
return 0;
|
||||
@@ -18298,7 +18294,7 @@ return conftest::cblas_dgemm ();
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
-for ac_lib in '' openblas cblas blas
|
||||
+for ac_lib in '' flexiblas cblas blas
|
||||
do
|
||||
if test -z "$ac_lib"; then
|
||||
ac_res="none required"
|
||||
@@ -18365,7 +18361,7 @@ return conftest::dgeqrf ();
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
-for ac_lib in '' openblas lapack
|
||||
+for ac_lib in '' flexiblas lapack
|
||||
do
|
||||
if test -z "$ac_lib"; then
|
||||
ac_res="none required"
|
||||
@@ -18432,7 +18428,7 @@ return conftest::dgeqrf_ ();
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
-for ac_lib in '' openblas lapack
|
||||
+for ac_lib in '' flexiblas lapack
|
||||
do
|
||||
if test -z "$ac_lib"; then
|
||||
ac_res="none required"
|
||||
@@ -18499,7 +18495,7 @@ return conftest::DGEQRF ();
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
-for ac_lib in '' openblas lapack
|
||||
+for ac_lib in '' flexiblas lapack
|
||||
do
|
||||
if test -z "$ac_lib"; then
|
||||
ac_res="none required"
|
||||
@@ -18566,7 +18562,7 @@ return conftest::DGEQRF_ ();
|
||||
return 0;
|
||||
}
|
||||
_ACEOF
|
||||
-for ac_lib in '' openblas lapack
|
||||
+for ac_lib in '' flexiblas lapack
|
||||
do
|
||||
if test -z "$ac_lib"; then
|
||||
ac_res="none required"
|
||||
@@ -18648,12 +18644,12 @@ if test -n "$OPENBLASPCDIR"; then
|
||||
pkg_cv_OPENBLASPCDIR="$OPENBLASPCDIR"
|
||||
elif test -n "$PKG_CONFIG"; then
|
||||
if test -n "$PKG_CONFIG" && \
|
||||
- { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"openblas\""; } >&5
|
||||
- ($PKG_CONFIG --exists --print-errors "openblas") 2>&5
|
||||
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"flexiblas\""; } >&5
|
||||
+ ($PKG_CONFIG --exists --print-errors "flexiblas") 2>&5
|
||||
ac_status=$?
|
||||
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
|
||||
test $ac_status = 0; }; then
|
||||
- pkg_cv_OPENBLASPCDIR=`$PKG_CONFIG --variable="pcfiledir" "openblas" 2>/dev/null`
|
||||
+ pkg_cv_OPENBLASPCDIR=`$PKG_CONFIG --variable="pcfiledir" "flexiblas" 2>/dev/null`
|
||||
test "x$?" != "x0" && pkg_failed=yes
|
||||
else
|
||||
pkg_failed=yes
|
||||
@@ -18876,7 +18872,7 @@ fi
|
||||
then :
|
||||
|
||||
|
||||
- SAGE_OPENBLAS_PC_COMMAND="\$(LN) -sf \"$OPENBLASPCDIR/openblas.pc\" \"\$(@)\""
|
||||
+ SAGE_OPENBLAS_PC_COMMAND="\$(LN) -sf \"$OPENBLASPCDIR/flexiblas.pc\" \"\$(@)\""
|
||||
|
||||
|
||||
if test x$sage_install_blas_pc = xyes
|
||||
diff -up src/sage/env.py.orig src/sage/env.py
|
||||
--- src/sage/env.py.orig 2023-01-15 17:21:15.296585738 -0700
|
||||
+++ src/sage/env.py 2023-01-15 17:22:34.106086752 -0700
|
||||
@@ -222,7 +222,7 @@ FOURTITWO_PPI = var("FOURTITWO_PPI")
|
||||
FOURTITWO_CIRCUITS = var("FOURTITWO_CIRCUITS")
|
||||
FOURTITWO_GROEBNER = var("FOURTITWO_GROEBNER")
|
||||
ARB_LIBRARY = var("ARB_LIBRARY", "arb")
|
||||
-CBLAS_PC_MODULES = var("CBLAS_PC_MODULES", "cblas:openblas:blas")
|
||||
+CBLAS_PC_MODULES = var("CBLAS_PC_MODULES", "flexiblas:cblas:openblas:blas")
|
||||
ECL_CONFIG = var("ECL_CONFIG", "ecl-config")
|
||||
NTL_INCDIR = var("NTL_INCDIR")
|
||||
NTL_LIBDIR = var("NTL_LIBDIR")
|
||||
@@ -478,7 +478,7 @@ def cython_aliases(required_modules=None
|
||||
for lib, required in itertools.chain(((lib, True) for lib in required_modules),
|
||||
((lib, False) for lib in optional_modules)):
|
||||
var = lib.upper().replace("-", "") + "_"
|
||||
- if lib == 'cblas':
|
||||
+ if lib == 'cblas' or lib == 'lapack':
|
||||
lib = get_cblas_pc_module_name()
|
||||
if lib == 'zlib':
|
||||
aliases[var + "CFLAGS"] = ""
|
|
@ -1,72 +0,0 @@
|
|||
diff -up build/pkgs/giac/spkg-configure.m4.orig build/pkgs/giac/spkg-configure.m4
|
||||
--- build/pkgs/giac/spkg-configure.m4.orig 2022-09-19 16:38:18.000000000 -0600
|
||||
+++ build/pkgs/giac/spkg-configure.m4 2023-01-15 19:56:31.030581488 -0700
|
||||
@@ -21,7 +21,7 @@ SAGE_SPKG_CONFIGURE([giac], [
|
||||
AC_CHECK_HEADER([giac/giac.h], [
|
||||
AC_SEARCH_LIBS([ConvertUTF16toUTF8], [giac], [
|
||||
], [sage_spkg_install_giac=yes])
|
||||
- ], [sage_spkg_install_giac=yes])
|
||||
+ ], [sage_spkg_install_giac=yes], [typedef unsigned char uchar;])
|
||||
m4_popdef([GIAC_MIN_VERSION])
|
||||
m4_popdef([GIAC_MAX_VERSION])
|
||||
])
|
||||
diff -up configure.orig configure
|
||||
--- configure.orig 2023-01-15 19:55:21.828822178 -0700
|
||||
+++ configure 2023-01-15 19:58:12.425759949 -0700
|
||||
@@ -26479,7 +26479,8 @@ printf "%s\n" "$ac_cv_path_GIAC" >&6; }
|
||||
then :
|
||||
sage_spkg_install_giac=yes
|
||||
fi
|
||||
- ac_fn_cxx_check_header_compile "$LINENO" "giac/giac.h" "ac_cv_header_giac_giac_h" "$ac_includes_default"
|
||||
+ ac_fn_cxx_check_header_compile "$LINENO" "giac/giac.h" "ac_cv_header_giac_giac_h" "typedef unsigned char uchar;
|
||||
+$ac_includes_default"
|
||||
if test "x$ac_cv_header_giac_giac_h" = xyes
|
||||
then :
|
||||
|
||||
diff -up src/sage/libs/giac/giac.pxd.orig src/sage/libs/giac/giac.pxd
|
||||
--- src/sage/libs/giac/giac.pxd.orig 2022-09-19 16:38:18.000000000 -0600
|
||||
+++ src/sage/libs/giac/giac.pxd 2023-01-15 19:55:21.830822142 -0700
|
||||
@@ -12,6 +12,11 @@
|
||||
from sage.libs.gmp.mpz cimport mpz_t, mpz_set
|
||||
from libcpp.string cimport string
|
||||
|
||||
+cdef extern from *:
|
||||
+ """
|
||||
+ typedef unsigned char uchar;
|
||||
+ """
|
||||
+
|
||||
cdef extern from "giac/giac.h" namespace "giac":
|
||||
cdef cppclass context:
|
||||
context()
|
||||
diff -up src/sage/libs/giac/misc.h.orig src/sage/libs/giac/misc.h
|
||||
--- src/sage/libs/giac/misc.h.orig 2022-09-19 16:38:18.000000000 -0600
|
||||
+++ src/sage/libs/giac/misc.h 2023-01-15 19:55:21.830822142 -0700
|
||||
@@ -1,5 +1,6 @@
|
||||
#ifndef GIACPYMISC_H
|
||||
#define GIACPYMISC_H
|
||||
+typedef unsigned char uchar;
|
||||
#include <giac/giac.h>
|
||||
|
||||
#include <fstream>
|
||||
diff -up src/sage/symbolic/ginac/mpoly-giac.cpp.orig src/sage/symbolic/ginac/mpoly-giac.cpp
|
||||
--- src/sage/symbolic/ginac/mpoly-giac.cpp.orig 2022-09-19 16:38:19.000000000 -0600
|
||||
+++ src/sage/symbolic/ginac/mpoly-giac.cpp 2023-01-15 19:55:21.831822125 -0700
|
||||
@@ -44,6 +44,7 @@
|
||||
#include "function.h"
|
||||
#include "utils.h"
|
||||
|
||||
+typedef unsigned char uchar;
|
||||
#include <giac/global.h>
|
||||
#include <giac/gausspol.h>
|
||||
|
||||
diff -up src/sage/symbolic/ginac/numeric.cpp.orig src/sage/symbolic/ginac/numeric.cpp
|
||||
--- src/sage/symbolic/ginac/numeric.cpp.orig 2023-01-15 19:52:42.820659135 -0700
|
||||
+++ src/sage/symbolic/ginac/numeric.cpp 2023-01-15 19:55:21.831822125 -0700
|
||||
@@ -77,6 +77,7 @@
|
||||
#undef _POSIX_C_SOURCE
|
||||
#undef _XOPEN_SOURCE
|
||||
|
||||
+typedef unsigned char uchar;
|
||||
#include <giac/global.h>
|
||||
#include <giac/gausspol.h>
|
||||
#include <giac/fraction.h>
|
|
@ -1,15 +0,0 @@
|
|||
diff -up src/sage_docbuild/conf.py.orig src/sage_docbuild/conf.py
|
||||
--- src/sage_docbuild/conf.py.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage_docbuild/conf.py 2023-03-13 09:53:42.670555040 -0600
|
||||
@@ -228,9 +228,8 @@ def set_intersphinx_mappings(app, config
|
||||
|
||||
app.config.intersphinx_mapping = {
|
||||
'python': ('https://docs.python.org/',
|
||||
- os.path.join(SAGE_DOC_SRC, "common",
|
||||
- "python{}.inv".format(python_version))),
|
||||
- 'pplpy': (PPLPY_DOCS, None)}
|
||||
+ '/usr/share/doc/python3-docs/html/objects.inv'),
|
||||
+ 'pplpy': (PPLPY_DOCS, '/usr/share/doc/python3-pplpy-devel/objects.inv')}
|
||||
|
||||
# Add master intersphinx mapping
|
||||
dst = os.path.join(invpath, 'objects.inv')
|
|
@ -1,33 +0,0 @@
|
|||
diff -up src/sage/interfaces/jmoldata.py.orig src/sage/interfaces/jmoldata.py
|
||||
--- src/sage/interfaces/jmoldata.py.orig 2022-09-19 16:38:18.000000000 -0600
|
||||
+++ src/sage/interfaces/jmoldata.py 2023-01-15 17:05:52.942389170 -0700
|
||||
@@ -153,8 +153,6 @@ class JmolData(SageObject):
|
||||
True
|
||||
sage: archive.close()
|
||||
"""
|
||||
- # Set up paths, file names and scripts
|
||||
- jmolpath = os.path.join(JMOL_DIR, "JmolData.jar")
|
||||
target_native = targetfile
|
||||
|
||||
if sys.platform == 'cygwin':
|
||||
@@ -176,12 +174,14 @@ class JmolData(SageObject):
|
||||
with open(scratchout, 'w') as jout:
|
||||
# Now call the java application and write the file.
|
||||
env = dict(os.environ)
|
||||
- env['LC_ALL'] = 'C'
|
||||
- env['LANG'] = 'C'
|
||||
- subprocess.call(["java", "-Xmx512m", "-Djava.awt.headless=true",
|
||||
- "-jar", jmolpath, "-iox", "-g", size_arg,
|
||||
- "-J", launchscript, "-j", imagescript],
|
||||
- stdout=jout, stderr=jout, env=env)
|
||||
+ env['LC_ALL'] = 'C.UTF-8'
|
||||
+ env['LANG'] = 'C.UTF-8'
|
||||
+ try:
|
||||
+ subprocess.call(["jmol", "-n", "-g", size_arg,
|
||||
+ "-J", launchscript, "-j", imagescript],
|
||||
+ timeout=300, stdout=jout, stderr=jout, env=env)
|
||||
+ except:
|
||||
+ pass
|
||||
if not os.path.isfile(targetfile):
|
||||
raise RuntimeError(f"Jmol failed to create file {targetfile}: {Path(scratchout).read_text()}")
|
||||
os.unlink(scratchout)
|
|
@ -1,21 +0,0 @@
|
|||
diff -up src/sage/features/latte.py.orig src/sage/features/latte.py
|
||||
--- src/sage/features/latte.py.orig 2022-05-15 16:11:11.000000000 -0600
|
||||
+++ src/sage/features/latte.py 2022-06-01 11:03:23.813894057 -0600
|
||||
@@ -21,7 +21,7 @@ class Latte_count(Executable):
|
||||
sage: isinstance(Latte_count(), Latte_count)
|
||||
True
|
||||
"""
|
||||
- Executable.__init__(self, "count", executable="count",
|
||||
+ Executable.__init__(self, "count", executable="latte-count",
|
||||
spkg="latte_int",
|
||||
url=LATTE_URL)
|
||||
|
||||
@@ -38,7 +38,7 @@ class Latte_integrate(Executable):
|
||||
sage: isinstance(Latte_integrate(), Latte_integrate)
|
||||
True
|
||||
"""
|
||||
- Executable.__init__(self, "integrate", executable="integrate",
|
||||
+ Executable.__init__(self, "integrate", executable="latte-integrate",
|
||||
spkg="latte_int",
|
||||
url=LATTE_URL)
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
diff -up src/sage/libs/lcalc/lcalc_Lfunction.pyx.orig src/sage/libs/lcalc/lcalc_Lfunction.pyx
|
||||
--- src/sage/libs/lcalc/lcalc_Lfunction.pyx.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/libs/lcalc/lcalc_Lfunction.pyx 2021-06-02 17:12:56.077802570 -0600
|
||||
@@ -1,5 +1,5 @@
|
||||
# distutils: libraries = m NTL_LIBRARIES Lfunction
|
||||
-# distutils: extra_compile_args = NTL_CFLAGS -O3 -ffast-math
|
||||
+# distutils: extra_compile_args = NTL_CFLAGS -std=gnu++11 -ffast-math
|
||||
# distutils: include_dirs = NTL_INCDIR
|
||||
# distutils: library_dirs = NTL_LIBDIR
|
||||
# distutils: extra_link_args = NTL_LIBEXTRA
|
|
@ -1,701 +0,0 @@
|
|||
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 2023-02-11 06:25:15.000000000 -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::
|
||||
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.3 2 . 2 -1 . 2 2 . . . -1 2 2
|
||||
- X.4 3 -1 -1 . 1 -1 3 -1 1 -1 . -1 3
|
||||
- X.5 3 -1 -1 . 1 3 -1 -1 -1 1 . -1 3
|
||||
- X.6 3 1 -1 . -1 -1 3 1 -1 1 . -1 3
|
||||
- X.7 3 1 -1 . -1 3 -1 1 1 -1 . -1 3
|
||||
- X.8 3 -1 3 . -1 -1 -1 -1 1 1 . -1 3
|
||||
- X.9 3 1 3 . 1 -1 -1 1 -1 -1 . -1 3
|
||||
+ X.4 3 -1 -1 . 1 3 -1 -1 -1 1 . -1 3
|
||||
+ X.5 3 1 -1 . -1 3 -1 1 1 -1 . -1 3
|
||||
+ X.6 3 -1 3 . -1 -1 -1 -1 1 1 . -1 3
|
||||
+ X.7 3 -1 -1 . 1 -1 3 -1 1 -1 . -1 3
|
||||
+ X.8 3 1 3 . 1 -1 -1 1 -1 -1 . -1 3
|
||||
+ X.9 3 1 -1 . -1 -1 3 1 -1 1 . -1 3
|
||||
X.10 4 -2 . -1 . . . 2 . . 1 . -4
|
||||
X.11 4 2 . -1 . . . -2 . . 1 . -4
|
||||
X.12 6 . -2 . . -2 -2 . . . . 2 6
|
||||
diff -up src/sage/coding/linear_code.py.orig src/sage/coding/linear_code.py
|
||||
--- src/sage/coding/linear_code.py.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/coding/linear_code.py 2023-03-13 09:42:01.112404670 -0600
|
||||
@@ -465,7 +465,10 @@ class AbstractLinearCode(AbstractLinearC
|
||||
0
|
||||
sage: C = codes.HammingCode(GF(4, 'z'), 3)
|
||||
sage: C.automorphism_group_gens()
|
||||
- ([((1, 1, 1, 1, 1, z + 1, z, z + 1, z, z, z, 1, 1, z + 1, z + 1, z, z + 1, z, z + 1, z + 1, z + 1); (1,14,6,7,4,10,11,19)(2,8,16,13,3,17,21,15)(9,12,18,20), Ring endomorphism of Finite Field in z of size 2^2
|
||||
+ ([((1, 1, 1, z, z + 1, 1, 1, 1, 1, z + 1, z, z, z + 1, z + 1, z + 1, 1, z + 1, z, z, 1, z); (1,13,14,20)(2,21,8,18,7,16,19,15)(3,10,5,12,17,9,6,4), Ring endomorphism of Finite Field in z of size 2^2
|
||||
+ Defn: z |--> z + 1),
|
||||
+ ((z, 1, z, z, z, z + 1, z, z, z, z, z, z, z + 1, z, z, z, z, z + 1, z, z, z); (1,11,5,12,3,19)(2,8)(6,18,13)(7,17,15)(9,10,14,16,20,21), Ring endomorphism of Finite Field in z of size 2^2
|
||||
+ 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
|
||||
Defn: z |--> z),
|
||||
@@ -473,19 +476,20 @@ class AbstractLinearCode(AbstractLinearC
|
||||
Defn: z |--> z)],
|
||||
362880)
|
||||
sage: C.automorphism_group_gens(equivalence="linear")
|
||||
- ([((z + 1, 1, z + 1, z + 1, z + 1, z, 1, z, 1, 1, 1, 1, z + 1, z + 1, z + 1, z, z, 1, z, z, z); (1,15,2,8,16,18,3)(4,9,12,13,20,10,11)(5,21,14,6,7,19,17), Ring endomorphism of Finite Field in z of size 2^2
|
||||
+ ([((z, 1, z + 1, z + 1, 1, z + 1, z, 1, z + 1, z + 1, 1, z, 1, z + 1, z, 1, z, 1, z + 1, 1, 1); (1,12,11,10,6,8,9,20,13,21,5,14,3,16,17,19,7,4,2,15,18), Ring endomorphism of Finite Field in z of size 2^2
|
||||
Defn: z |--> z),
|
||||
- ((z + 1, z + 1, z + 1, z + 1, z + 1, 1, z, 1, z, z, z, 1, z, 1, 1, 1, z + 1, z + 1, z + 1, 1, z); (1,15,21,8,9)(2,18,5,3,11,16,7,10,19,13,12,4,17,6,20), Ring endomorphism of Finite Field in z of size 2^2
|
||||
+ ((z + 1, z + 1, z + 1, z, 1, 1, z, z, 1, z + 1, z, 1, 1, z, 1, z + 1, z, z + 1, z + 1, 1, z); (1,3,18,2,17,6,19)(4,15,13,20,7,14,16)(5,11,8,21,12,9,10), Ring endomorphism of Finite Field in z of size 2^2
|
||||
+ Defn: z |--> z),
|
||||
Defn: z |--> z),
|
||||
((z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1, z + 1); (), Ring endomorphism of Finite Field in z of size 2^2
|
||||
Defn: z |--> z)],
|
||||
181440)
|
||||
sage: C.automorphism_group_gens(equivalence="permutational")
|
||||
- ([((1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); (1,19)(3,17)(4,21)(5,20)(7,14)(9,12)(10,16)(11,15), 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); (1,11)(3,10)(4,9)(5,7)(12,21)(14,20)(15,19)(16,17), Ring endomorphism of Finite Field in z of size 2^2
|
||||
Defn: z |--> z),
|
||||
- ((1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); (1,11)(3,10)(4,9)(5,7)(12,21)(14,20)(15,19)(16,17), 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,18)(3,19)(4,10)(5,16)(8,13)(9,14)(11,21)(15,20), Ring endomorphism of Finite Field in z of size 2^2
|
||||
Defn: z |--> z),
|
||||
- ((1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); (1,17)(2,8)(3,14)(4,10)(7,12)(9,19)(13,18)(15,20), 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); (1,19)(3,17)(4,21)(5,20)(7,14)(9,12)(10,16)(11,15), Ring endomorphism of Finite Field in z of size 2^2
|
||||
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
|
||||
Defn: z |--> z)],
|
||||
@@ -691,10 +695,10 @@ class AbstractLinearCode(AbstractLinearC
|
||||
sage: C_iso == aut_group_can_label.get_canonical_form()
|
||||
True
|
||||
sage: aut_group_can_label.get_autom_gens()
|
||||
- [((1, 1, 1, 1, 1, z + 1, z, z + 1, z, z, z, 1, 1, z + 1, z + 1, z, z + 1, z, z + 1, z + 1, z + 1); (1,14,6,7,4,10,11,19)(2,8,16,13,3,17,21,15)(9,12,18,20), Ring endomorphism of Finite Field in z of size 2^2
|
||||
+ [((1, 1, 1, z, z + 1, 1, 1, 1, 1, z + 1, z, z, z + 1, z + 1, z + 1, 1, z + 1, z, z, 1, z); (1,13,14,20)(2,21,8,18,7,16,19,15)(3,10,5,12,17,9,6,4), Ring endomorphism of Finite Field in z of size 2^2
|
||||
++ Defn: z |--> z + 1),
|
||||
++ ((z, 1, z, z, z, z + 1, z, z, z, z, z, z, z + 1, z, z, z, z, z + 1, z, z, z); (1,11,5,12,3,19)(2,8)(6,18,13)(7,17,15)(9,10,14,16,20,21), Ring endomorphism of Finite Field in z of size 2^2
|
||||
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
|
||||
- Defn: z |--> z),
|
||||
((z, z, z, z, z, z, z, z, z, z, z, z, z, z, z, z, z, z, z, z, z); (), Ring endomorphism of Finite Field in z of size 2^2
|
||||
Defn: z |--> z)]
|
||||
"""
|
||||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/combinat/root_system/hecke_algebra_representation.py 2023-03-13 09:42:01.112404670 -0600
|
||||
@@ -357,7 +357,7 @@ class HeckeAlgebraRepresentation(WithEqu
|
||||
sage: q1, q2 = K.gens()
|
||||
sage: KW = W.algebra(K)
|
||||
sage: x = KW.an_element(); x
|
||||
- 123 + 3*32 + 2*3 + e
|
||||
+ 123 + 3*2312 + 2*31 + e
|
||||
|
||||
sage: T = KW.demazure_lusztig_operators(q1,q2)
|
||||
sage: T12 = T.Tw( (1,2) )
|
||||
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 2023-02-11 06:25:15.000000000 -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
|
||||
sage: SGA.group()
|
||||
Weyl Group of type ['A', 3] (as a matrix group acting on the ambient space)
|
||||
sage: SGA.an_element()
|
||||
- s1*s2*s3 + 3*s3*s2 + 2*s3 + 1
|
||||
+ s1*s2*s3 + 3*s2*s3*s1*s2 + 2*s3*s1 + 1
|
||||
|
||||
The preferred way to construct the symmetric group algebra is to
|
||||
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
|
||||
--- 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-03-13 09:42:01.113404652 -0600
|
||||
@@ -338,7 +338,7 @@ class AbelianGroup_gap(UniqueRepresentat
|
||||
if isinstance(x, AbelianGroupElement_gap):
|
||||
try:
|
||||
if x in self._cover:
|
||||
- x = self.gap().NaturalHomomorphism().Image(x.gap())
|
||||
+ x = self._cover.gap().NaturalHomomorphismByNormalSubgroup(self._relations).Image(x.gap())
|
||||
else:
|
||||
x = x.gap()
|
||||
except AttributeError:
|
||||
@@ -1043,7 +1043,7 @@ class AbelianGroupQuotient_gap(AbelianGr
|
||||
From: Abelian group with gap, generator orders (4,)
|
||||
To: Quotient abelian group with generator orders (2,)
|
||||
"""
|
||||
- phi = self.gap().NaturalHomomorphism()
|
||||
+ phi = self._cover.gap().NaturalHomomorphismByNormalSubgroup(self._relations)
|
||||
Hom = self._cover.Hom(self)
|
||||
return Hom(phi)
|
||||
|
||||
diff -up src/sage/groups/finitely_presented.py.orig src/sage/groups/finitely_presented.py
|
||||
--- src/sage/groups/finitely_presented.py.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/groups/finitely_presented.py 2023-03-13 09:42:01.113404652 -0600
|
||||
@@ -596,9 +596,9 @@ class RewritingSystem():
|
||||
sage: k = G.rewriting_system()
|
||||
sage: k.gap()
|
||||
Knuth Bendix Rewriting System for Monoid( [ a, A, b, B ] ) with rules
|
||||
- [ [ a^2, <identity ...> ], [ a*A, <identity ...> ],
|
||||
- [ A*a, <identity ...> ], [ b^2, <identity ...> ],
|
||||
- [ b*B, <identity ...> ], [ B*b, <identity ...> ] ]
|
||||
+ [ [ a*A, <identity ...> ], [ A*a, <identity ...> ],
|
||||
+ [ b*B, <identity ...> ], [ B*b, <identity ...> ],
|
||||
+ [ a^2, <identity ...> ], [ b^2, <identity ...> ] ]
|
||||
"""
|
||||
return self._gap
|
||||
|
||||
diff -up src/sage/groups/fqf_orthogonal.py.orig src/sage/groups/fqf_orthogonal.py
|
||||
--- src/sage/groups/fqf_orthogonal.py.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/groups/fqf_orthogonal.py 2023-03-13 09:42:01.114404634 -0600
|
||||
@@ -143,7 +143,7 @@ class FqfOrthogonalGroup(AbelianGroupAut
|
||||
[2/3 0 0]
|
||||
[ 0 2/3 0]
|
||||
[ 0 0 4/3]
|
||||
- generated by 2 elements
|
||||
+ generated by 3 elements
|
||||
sage: q = matrix.diagonal(QQ, [3/2, 1/4, 1/4])
|
||||
sage: T = TorsionQuadraticForm(q)
|
||||
sage: T.orthogonal_group().order()
|
||||
diff -up src/sage/groups/libgap_wrapper.pyx.orig src/sage/groups/libgap_wrapper.pyx
|
||||
--- src/sage/groups/libgap_wrapper.pyx.orig 2023-02-11 06:25:15.000000000 -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
|
||||
its output via LibGAP::
|
||||
|
||||
sage: FooGroup()
|
||||
- <pc group of size 3 with 1 generators>
|
||||
+ <pc group of size 3 with 1 generator>
|
||||
sage: type(FooGroup().gap())
|
||||
<class 'sage.libs.gap.element.GapElement'>
|
||||
|
||||
@@ -106,7 +106,7 @@ class ParentLibGAP(SageObject):
|
||||
....: ParentLibGAP.__init__(self, lg)
|
||||
....: Group.__init__(self)
|
||||
sage: FooGroup()
|
||||
- <pc group of size 3 with 1 generators>
|
||||
+ <pc group of size 3 with 1 generator>
|
||||
"""
|
||||
|
||||
def __init__(self, libgap_parent, ambient=None):
|
||||
@@ -461,7 +461,7 @@ cdef class ElementLibGAP(MultiplicativeG
|
||||
....: ParentLibGAP.__init__(self, lg)
|
||||
....: Group.__init__(self)
|
||||
sage: FooGroup()
|
||||
- <pc group of size 3 with 1 generators>
|
||||
+ <pc group of size 3 with 1 generator>
|
||||
sage: FooGroup().gens()
|
||||
(f1,)
|
||||
"""
|
||||
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 2023-02-11 06:25:15.000000000 -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:
|
||||
sage: from sage.groups.perm_gps.partn_ref2.refinement_generic import LabelledBranching
|
||||
sage: L = LabelledBranching(3)
|
||||
sage: L.small_generating_set()
|
||||
- []
|
||||
+ [()]
|
||||
sage: L.add_gen(libgap.eval('(1,2,3)'))
|
||||
sage: L.small_generating_set()
|
||||
[(1,2,3)]
|
||||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/groups/perm_gps/permgroup.py 2023-03-13 09:42:01.115404615 -0600
|
||||
@@ -926,7 +926,7 @@ class PermutationGroup_generic(FiniteGro
|
||||
sage: f = PG._coerce_map_from_(MG)
|
||||
sage: mg = MG.an_element()
|
||||
sage: p = f(mg); p
|
||||
- (2,33,32,23,31,55)(3,49,38,44,40,28)(4,17,59,62,58,46)(5,21,47,20,43,8)(6,53,50)(7,37,12,57,14,29)(9,41,56,34,64,10)(11,25,19)(13,61,26,51,22,15)(16,45,36)(18,27,35,48,52,54)(24,63,42)(30,39,60)
|
||||
+ (1,2,6,19,35,33)(3,9,26,14,31,23)(4,13,5)(7,22,17)(8,24,12)(10,16,32,27,20,28)(11,30,18)(15,25,36,34,29,21)
|
||||
sage: PG(p._gap_()) == p
|
||||
True
|
||||
|
||||
@@ -972,12 +972,12 @@ class PermutationGroup_generic(FiniteGro
|
||||
sage: P = G.as_permutation_group(algorithm='smaller', seed=5)
|
||||
sage: P1 = G.as_permutation_group()
|
||||
sage: P == P1
|
||||
- False
|
||||
+ True
|
||||
sage: g1, g2, g3 = G.gens()
|
||||
sage: P(g1*g2)
|
||||
- (1,3,7,12)(2,4,8,10)(5,11)(6,9)
|
||||
+ (1,4,13,11)(2,5,14,18)(3,15,8,16)(6,7)(9,20,19,12)(10,17)
|
||||
sage: P1(g1*g2)
|
||||
- (2,29,25,68)(3,57,13,54)(4,11,72,37)(5,39,60,23)(6,64,75,63)(7,21,50,73)(8,46,38,32)(9,74,35,18)(10,44,49,48)(12,16,34,71)(14,79,27,40)(15,26)(17,62,59,76)(19,78,70,65)(20,22,58,51)(24,33,36,43)(28,81,80,52)(30,53,56,69)(31,61)(41,42,67,55)(45,77)(47,66)
|
||||
+ (1,4,13,11)(2,5,14,18)(3,15,8,16)(6,7)(9,20,19,12)(10,17)
|
||||
|
||||
Another check for :trac:`5583`::
|
||||
|
||||
@@ -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.is_transitive([1,4,5])
|
||||
- True
|
||||
+ False
|
||||
sage: G.is_transitive([2..6])
|
||||
False
|
||||
sage: G.is_transitive(G.non_fixed_points())
|
||||
@@ -4437,7 +4437,7 @@ class PermutationGroup_generic(FiniteGro
|
||||
sage: G.is_primitive([1..4])
|
||||
False
|
||||
sage: G.is_primitive([1,2,3])
|
||||
- True
|
||||
+ False
|
||||
sage: G = PermutationGroup([[(3,4,5,6)],[(3,4)]]) #S_4 on [3..6]
|
||||
sage: G.is_primitive(G.non_fixed_points())
|
||||
True
|
||||
diff -up src/sage/interfaces/gap.py.orig src/sage/interfaces/gap.py
|
||||
--- src/sage/interfaces/gap.py.orig 2023-02-11 06:25:15.000000000 -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
|
||||
"""
|
||||
# Create new workspace with filename WORKSPACE
|
||||
g = Gap(use_workspace_cache=False, max_workspace_size=None)
|
||||
+ g.eval('ColorPrompt(false)')
|
||||
+ g.eval('SetUserPreference("UseColorPrompt", false)')
|
||||
g.eval('SetUserPreference("HistoryMaxLines", 30)')
|
||||
from sage.tests.gap_packages import all_installed_packages
|
||||
for pkg in all_installed_packages(gap=g):
|
||||
diff -up src/sage/libs/gap/element.pxd.orig src/sage/libs/gap/element.pxd
|
||||
--- src/sage/libs/gap/element.pxd.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/libs/gap/element.pxd 2023-03-13 09:42:01.116404597 -0600
|
||||
@@ -29,9 +29,9 @@ cdef GapElement_Boolean make_GapElement_
|
||||
cdef GapElement_Function make_GapElement_Function(parent, Obj obj)
|
||||
cdef GapElement_Permutation make_GapElement_Permutation(parent, Obj obj)
|
||||
|
||||
-cdef char *capture_stdout(Obj, Obj)
|
||||
-cdef char *gap_element_str(Obj)
|
||||
-cdef char *gap_element_repr(Obj)
|
||||
+cdef str capture_stdout(Obj, Obj)
|
||||
+cdef str gap_element_str(Obj)
|
||||
+cdef str gap_element_repr(Obj)
|
||||
|
||||
|
||||
cdef class GapElement(RingElement):
|
||||
diff -up src/sage/libs/gap/element.pyx.orig src/sage/libs/gap/element.pyx
|
||||
--- src/sage/libs/gap/element.pyx.orig 2023-02-11 06:25:15.000000000 -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_
|
||||
return l.value
|
||||
|
||||
|
||||
-cdef char *capture_stdout(Obj func, Obj obj):
|
||||
+cdef str capture_stdout(Obj func, Obj obj):
|
||||
"""
|
||||
Call a single-argument GAP function ``func`` with the argument ``obj``
|
||||
and return the stdout from that function call.
|
||||
@@ -130,6 +130,7 @@ cdef char *capture_stdout(Obj func, Obj
|
||||
"""
|
||||
cdef Obj s, stream, output_text_string
|
||||
cdef UInt res
|
||||
+ cdef TypOutputFile output
|
||||
# The only way to get a string representation of an object that is truly
|
||||
# consistent with how it would be represented at the GAP REPL is to call
|
||||
# ViewObj on it. Unfortunately, ViewObj *prints* to the output stream,
|
||||
@@ -139,36 +140,35 @@ cdef char *capture_stdout(Obj func, Obj
|
||||
# that does not give consistent results.
|
||||
# TODO: This is probably needlessly slow, but we might need better
|
||||
# support from GAP to improve this...
|
||||
- try:
|
||||
- GAP_Enter()
|
||||
- s = NEW_STRING(0)
|
||||
- output_text_string = GAP_ValueGlobalVariable("OutputTextString")
|
||||
- stream = CALL_2ARGS(output_text_string, s, GAP_True)
|
||||
+ s = NEW_STRING(0)
|
||||
+ output_text_string = GAP_ValueGlobalVariable("OutputTextString")
|
||||
+ stream = CALL_2ARGS(output_text_string, s, GAP_True)
|
||||
|
||||
- if not OpenOutputStream(stream):
|
||||
- raise GAPError("failed to open output capture stream for "
|
||||
- "representing GAP object")
|
||||
+ if not OpenOutputStream(&output, stream):
|
||||
+ raise GAPError("failed to open output capture stream for "
|
||||
+ "representing GAP object")
|
||||
|
||||
- CALL_1ARGS(func, obj)
|
||||
- CloseOutput()
|
||||
- return CSTR_STRING(s)
|
||||
- finally:
|
||||
- GAP_Leave()
|
||||
+ CALL_1ARGS(func, obj)
|
||||
+ CloseOutput(&output)
|
||||
+ return char_to_str(CSTR_STRING(s))
|
||||
|
||||
|
||||
-cdef char *gap_element_repr(Obj obj):
|
||||
+cdef str gap_element_repr(Obj obj):
|
||||
"""
|
||||
Implement ``repr()`` of ``GapElement``s using the ``ViewObj()`` function,
|
||||
which is by default closest to what you get when displaying an object in
|
||||
GAP on the command-line (i.e. when evaluating an expression that returns
|
||||
that object.
|
||||
"""
|
||||
+ cdef Obj func
|
||||
+ try:
|
||||
+ GAP_Enter()
|
||||
+ func = GAP_ValueGlobalVariable("ViewObj")
|
||||
+ return capture_stdout(func, obj)
|
||||
+ finally:
|
||||
+ GAP_Leave()
|
||||
|
||||
- cdef Obj func = GAP_ValueGlobalVariable("ViewObj")
|
||||
- return capture_stdout(func, obj)
|
||||
-
|
||||
-
|
||||
-cdef char *gap_element_str(Obj obj):
|
||||
+cdef str gap_element_str(Obj obj):
|
||||
"""
|
||||
Implement ``str()`` of ``GapElement``s using the ``Print()`` function.
|
||||
|
||||
@@ -178,9 +178,13 @@ cdef char *gap_element_str(Obj obj):
|
||||
slightly different approach more closely mirroring Python's str/repr
|
||||
difference (though this does not map perfectly onto GAP).
|
||||
"""
|
||||
- cdef Obj func = GAP_ValueGlobalVariable("Print")
|
||||
- return capture_stdout(func, obj)
|
||||
-
|
||||
+ cdef Obj func
|
||||
+ try:
|
||||
+ GAP_Enter()
|
||||
+ func = GAP_ValueGlobalVariable("Print")
|
||||
+ return capture_stdout(func, obj)
|
||||
+ finally:
|
||||
+ GAP_Leave()
|
||||
|
||||
cdef Obj make_gap_record(sage_dict) except NULL:
|
||||
"""
|
||||
@@ -760,7 +764,7 @@ cdef class GapElement(RingElement):
|
||||
if self.value == NULL:
|
||||
return 'NULL'
|
||||
|
||||
- s = char_to_str(gap_element_str(self.value))
|
||||
+ s = gap_element_str(self.value)
|
||||
return s.strip()
|
||||
|
||||
def _repr_(self):
|
||||
@@ -782,7 +786,7 @@ cdef class GapElement(RingElement):
|
||||
if self.value == NULL:
|
||||
return 'NULL'
|
||||
|
||||
- s = char_to_str(gap_element_repr(self.value))
|
||||
+ s = gap_element_repr(self.value)
|
||||
return s.strip()
|
||||
|
||||
cpdef _set_compare_by_id(self):
|
||||
@@ -955,7 +959,7 @@ cdef class GapElement(RingElement):
|
||||
sig_on()
|
||||
try:
|
||||
GAP_Enter()
|
||||
- return EQ(self.value, c_other.value)
|
||||
+ return <bint>EQ(self.value, c_other.value)
|
||||
finally:
|
||||
GAP_Leave()
|
||||
sig_off()
|
||||
@@ -977,7 +981,7 @@ cdef class GapElement(RingElement):
|
||||
sig_on()
|
||||
try:
|
||||
GAP_Enter()
|
||||
- return LT(self.value, c_other.value)
|
||||
+ return <bint>LT(self.value, c_other.value)
|
||||
finally:
|
||||
GAP_Leave()
|
||||
sig_off()
|
||||
@@ -1205,7 +1209,7 @@ cdef class GapElement(RingElement):
|
||||
sage: a.is_function()
|
||||
False
|
||||
"""
|
||||
- return IS_FUNC(self.value)
|
||||
+ return <bint>IS_FUNC(self.value)
|
||||
|
||||
def is_list(self):
|
||||
r"""
|
||||
@@ -1222,7 +1226,7 @@ cdef class GapElement(RingElement):
|
||||
sage: libgap.eval('3/2').is_list()
|
||||
False
|
||||
"""
|
||||
- return IS_LIST(self.value)
|
||||
+ return <bint>IS_LIST(self.value)
|
||||
|
||||
def is_record(self):
|
||||
r"""
|
||||
@@ -1239,7 +1243,7 @@ cdef class GapElement(RingElement):
|
||||
sage: libgap.eval('rec(a:=1, b:=3)').is_record()
|
||||
True
|
||||
"""
|
||||
- return IS_REC(self.value)
|
||||
+ return <bint>IS_REC(self.value)
|
||||
|
||||
cpdef is_bool(self):
|
||||
r"""
|
||||
@@ -1272,7 +1276,7 @@ cdef class GapElement(RingElement):
|
||||
sage: libgap('this is a string').is_string()
|
||||
True
|
||||
"""
|
||||
- return IS_STRING(self.value)
|
||||
+ return <bint>IS_STRING(self.value)
|
||||
|
||||
def is_permutation(self):
|
||||
r"""
|
||||
@@ -1469,7 +1473,7 @@ cdef class GapElement_Integer(GapElement
|
||||
sage: N.IsInt()
|
||||
true
|
||||
"""
|
||||
- return IS_INTOBJ(self.value)
|
||||
+ return <bint>IS_INTOBJ(self.value)
|
||||
|
||||
def _rational_(self):
|
||||
r"""
|
||||
@@ -2806,7 +2810,7 @@ cdef class GapElement_List(GapElement):
|
||||
...
|
||||
ValueError: too many indices
|
||||
"""
|
||||
- cdef int j
|
||||
+ cdef Int j
|
||||
cdef Obj obj = self.value
|
||||
|
||||
if isinstance(i, tuple):
|
||||
@@ -2877,7 +2881,7 @@ cdef class GapElement_List(GapElement):
|
||||
if not IS_MUTABLE_OBJ(self.value):
|
||||
raise TypeError('immutable Gap object does not support item assignment')
|
||||
|
||||
- cdef int j
|
||||
+ cdef Int j
|
||||
cdef Obj obj = self.value
|
||||
|
||||
if isinstance(i, tuple):
|
||||
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 2023-02-11 06:25:15.000000000 -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
|
||||
|
||||
cdef extern from "gap/system.h" nogil:
|
||||
ctypedef char Char
|
||||
- ctypedef int Int
|
||||
- ctypedef uintptr_t UInt
|
||||
+ ctypedef long Int
|
||||
+ ctypedef unsigned long UInt
|
||||
ctypedef uint8_t UInt1
|
||||
ctypedef uint16_t UInt2
|
||||
ctypedef uint32_t UInt4
|
||||
@@ -29,8 +29,8 @@ cdef extern from "gap/ariths.h" nogil:
|
||||
Obj QUO(Obj, Obj)
|
||||
Obj POW(Obj, Obj)
|
||||
Obj MOD(Obj, Obj)
|
||||
- bint EQ(Obj opL, Obj opR)
|
||||
- bint LT(Obj opL, Obj opR)
|
||||
+ Int EQ(Obj opL, Obj opR)
|
||||
+ Int LT(Obj opL, Obj opR)
|
||||
|
||||
|
||||
cdef extern from "gap/bool.h" nogil:
|
||||
@@ -39,7 +39,7 @@ cdef extern from "gap/bool.h" nogil:
|
||||
|
||||
|
||||
cdef extern from "gap/calls.h" nogil:
|
||||
- bint IS_FUNC(Obj)
|
||||
+ Int IS_FUNC(Obj)
|
||||
Obj CALL_0ARGS(Obj f) # 0 arguments
|
||||
Obj CALL_1ARGS(Obj f, Obj a1) # 1 argument
|
||||
Obj CALL_2ARGS(Obj f, Obj a1, Obj a2)
|
||||
@@ -61,7 +61,7 @@ cdef extern from "gap/gasman_intern.h" n
|
||||
|
||||
|
||||
cdef extern from "gap/gvars.h" nogil:
|
||||
- UInt GVarName "GVarName"(char* name)
|
||||
+ UInt GVarName "GVarName"(const char* name)
|
||||
void AssGVar "AssGVar"(UInt gvar, Obj val)
|
||||
|
||||
|
||||
@@ -70,14 +70,16 @@ cdef extern from "gap/integer.h" nogil:
|
||||
|
||||
|
||||
cdef extern from "gap/intobj.h" nogil:
|
||||
- bint IS_INTOBJ(Obj obj)
|
||||
+ Int IS_INTOBJ(Obj obj)
|
||||
Obj INTOBJ_INT(Int)
|
||||
Int INT_INTOBJ(Obj)
|
||||
|
||||
|
||||
cdef extern from "gap/io.h" nogil:
|
||||
- UInt OpenOutputStream(Obj stream)
|
||||
- UInt CloseOutput()
|
||||
+ ctypedef struct TypOutputFile:
|
||||
+ pass
|
||||
+ UInt OpenOutputStream(TypOutputFile* output, Obj stream)
|
||||
+ UInt CloseOutput(TypOutputFile* output)
|
||||
|
||||
|
||||
cdef extern from "gap/libgap-api.h" nogil:
|
||||
@@ -100,11 +102,11 @@ cdef extern from "gap/libgap-api.h" nogi
|
||||
|
||||
|
||||
cdef extern from "gap/lists.h" nogil:
|
||||
- bint IS_LIST(Obj lst)
|
||||
- int LEN_LIST(Obj lst)
|
||||
- Obj ELM_LIST(Obj lst, int pos)
|
||||
- Obj ELM0_LIST(Obj lst, int pos)
|
||||
- void ASS_LIST(Obj lst, int pos, Obj elt)
|
||||
+ Int IS_LIST(Obj lst)
|
||||
+ Int LEN_LIST(Obj lst)
|
||||
+ Obj ELM_LIST(Obj lst, Int pos)
|
||||
+ Obj ELM0_LIST(Obj lst, Int pos)
|
||||
+ void ASS_LIST(Obj lst, Int pos, Obj elt)
|
||||
|
||||
|
||||
cdef extern from "gap/listfunc.h" nogil:
|
||||
@@ -116,13 +118,13 @@ cdef extern from "gap/macfloat.h" nogil:
|
||||
|
||||
|
||||
cdef extern from "gap/objects.h" nogil:
|
||||
- bint IS_MUTABLE_OBJ(Obj obj)
|
||||
+ Int IS_MUTABLE_OBJ(Obj obj)
|
||||
Obj SHALLOW_COPY_OBJ(Obj obj)
|
||||
- Obj CopyObj(Obj obj, int mut)
|
||||
+ Obj CopyObj(Obj obj, Int mut)
|
||||
|
||||
UInt SIZE_OBJ(Obj obj)
|
||||
UInt TNUM_OBJ(Obj obj)
|
||||
- char* TNAM_OBJ(Obj obj)
|
||||
+ const char* TNAM_OBJ(Obj obj)
|
||||
|
||||
cdef enum TNUM:
|
||||
T_INT
|
||||
@@ -163,23 +165,23 @@ cdef extern from "gap/permutat.h" nogil:
|
||||
|
||||
|
||||
cdef extern from "gap/precord.h" nogil:
|
||||
- Obj NEW_PREC(int len)
|
||||
- int LEN_PREC(Obj rec)
|
||||
- int GET_RNAM_PREC(Obj rec, int i)
|
||||
- Obj GET_ELM_PREC(Obj rec, int i)
|
||||
+ Obj NEW_PREC(UInt len)
|
||||
+ UInt LEN_PREC(Obj rec)
|
||||
+ Int GET_RNAM_PREC(Obj rec, UInt i)
|
||||
+ Obj GET_ELM_PREC(Obj rec, UInt i)
|
||||
void AssPRec(Obj rec, UInt rnam, Obj val)
|
||||
|
||||
|
||||
cdef extern from "gap/records.h" nogil:
|
||||
- char* NAME_RNAM(UInt rnam)
|
||||
- bint IS_REC(Obj obj)
|
||||
+ Obj NAME_RNAM(UInt rnam)
|
||||
+ Int IS_REC(Obj obj)
|
||||
Obj ELM_REC(Obj rec, UInt rnam)
|
||||
- UInt RNamName(Char* name)
|
||||
+ UInt RNamName(const Char* name)
|
||||
|
||||
|
||||
cdef extern from "gap/stringobj.h" nogil:
|
||||
char* CSTR_STRING(Obj list)
|
||||
- bint IS_STRING(Obj obj)
|
||||
- bint IsStringConv(Obj obj)
|
||||
- Obj NEW_STRING(Int)
|
||||
+ Int IS_STRING(Obj obj)
|
||||
+ Int IsStringConv(Obj obj)
|
||||
+ Obj NEW_STRING(Int len)
|
||||
Obj MakeStringWithLen(const char* buf, size_t len)
|
||||
diff -up src/sage/libs/gap/libgap.pyx.orig src/sage/libs/gap/libgap.pyx
|
||||
--- src/sage/libs/gap/libgap.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/libs/gap/libgap.pyx 2023-03-13 09:42:01.117404579 -0600
|
||||
@@ -695,7 +695,7 @@ class Gap(Parent):
|
||||
sage: libgap.List
|
||||
<Gap function "List">
|
||||
sage: libgap.GlobalRandomSource
|
||||
- <RandomSource in IsGlobalRandomSource>
|
||||
+ <RandomSource in IsGAPRandomSource>
|
||||
"""
|
||||
if name in dir(self.__class__):
|
||||
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
|
||||
--- src/sage/libs/gap/util.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/libs/gap/util.pyx 2023-03-13 14:13:48.497467652 -0600
|
||||
@@ -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
|
||||
Syntax error: ; expected in stream:1
|
||||
Complex Field with 53 bits of precision;;
|
||||
- ^^^^^^^^^^^^
|
||||
+ ^^^^^
|
||||
Error, Variable: 'with' must have a value
|
||||
- Syntax error: ; expected in stream:1
|
||||
- Complex Field with 53 bits of precision;;
|
||||
- ^^^^^^^^^^^^^^^^^^^^
|
||||
Error, Variable: 'bits' must have a value
|
||||
- Syntax error: ; expected in stream:1
|
||||
- Complex Field with 53 bits of precision;;
|
||||
- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Error, Variable: 'precision' must have a value
|
||||
|
||||
Test that on a subsequent attempt we get the same message (no garbage was
|
||||
@@ -388,7 +369,7 @@ cdef Obj gap_eval(str gap_string) except
|
||||
"""
|
||||
initialize()
|
||||
cdef Obj result
|
||||
- cdef int i, j, nresults
|
||||
+ cdef Int nresults
|
||||
|
||||
# Careful: We need to keep a reference to the bytes object here
|
||||
# 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
|
||||
--- src/sage/tests/gap_packages.py.orig 2023-02-11 06:25:15.000000000 -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
|
||||
|
||||
sage: from sage.tests.gap_packages import all_installed_packages
|
||||
sage: all_installed_packages()
|
||||
- (...'GAPDoc'...)
|
||||
+ (...'gapdoc'...)
|
||||
sage: all_installed_packages(ignore_dot_gap=True) == all_installed_packages(gap=gap, ignore_dot_gap=True)
|
||||
True
|
||||
"""
|
|
@ -1,34 +0,0 @@
|
|||
diff -up src/sage/interfaces/maxima.py.orig src/sage/interfaces/maxima.py
|
||||
--- src/sage/interfaces/maxima.py.orig 2022-09-19 16:38:18.000000000 -0600
|
||||
+++ src/sage/interfaces/maxima.py 2023-01-15 17:05:26.283962150 -0700
|
||||
@@ -568,7 +568,7 @@ class Maxima(MaximaAbstract, Expect):
|
||||
Expect.__init__(self,
|
||||
name='maxima',
|
||||
prompt=r'\(\%i[0-9]+\) ',
|
||||
- command='{0} -p {1}'.format(MAXIMA, shlex.quote(STARTUP)),
|
||||
+ command='{0} --disable-readline -p {1}'.format(MAXIMA, shlex.quote(STARTUP)),
|
||||
script_subdirectory=script_subdirectory,
|
||||
restart_on_ctrlc=False,
|
||||
verbose_start=False,
|
||||
@@ -636,7 +636,8 @@ class Maxima(MaximaAbstract, Expect):
|
||||
|
||||
# Remove limit on the max heapsize (since otherwise it defaults
|
||||
# to 256MB with ECL).
|
||||
- self._sendline(":lisp (ext:set-limit 'ext:heap-size 0)")
|
||||
+ self._sendline(":lisp #+ecl (ext:set-limit 'ext:heap-size 0) #-ecl 0")
|
||||
+ self._sendline(':lisp #+gcl (progn (si:readline-off) (setf *error-output* (open "/dev/stderr" :direction :output) *standard-input* (open "/dev/stdin" :direction :input) *standard-output* (open "/dev/stdout" :direction :output))) #-gcl t')
|
||||
self._eval_line('0;')
|
||||
|
||||
# set random seed
|
||||
diff -up src/sage/interfaces/sage-maxima.lisp.orig src/sage/interfaces/sage-maxima.lisp
|
||||
--- src/sage/interfaces/sage-maxima.lisp.orig 2022-09-19 16:38:18.000000000 -0600
|
||||
+++ src/sage/interfaces/sage-maxima.lisp 2023-01-15 17:04:33.551095508 -0700
|
||||
@@ -4,3 +4,8 @@
|
||||
|
||||
(setf *prompt-prefix* "<sage-display>")
|
||||
|
||||
+#+clisp
|
||||
+(setf
|
||||
+ *error-output* (open "/dev/stderr" :direction :output)
|
||||
+ *standard-input* (open "/dev/stdin" :direction :input)
|
||||
+ *standard-output* (open "/dev/stdout" :direction :output))
|
|
@ -1,11 +0,0 @@
|
|||
--- 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). */
|
|
@ -1,356 +0,0 @@
|
|||
diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c
|
||||
--- src/sage/cpython/debugimpl.c.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/cpython/debugimpl.c 2023-03-13 09:38:55.609800668 -0600
|
||||
@@ -148,6 +148,7 @@ static void _type_debug(PyTypeObject* tp
|
||||
printf(" tp_basicsize: %ld\n", (long)tp->tp_basicsize);
|
||||
printf(" tp_itemsize: %ld\n", (long)tp->tp_itemsize);
|
||||
printf(" tp_dictoffset: %ld\n", (long)tp->tp_dictoffset);
|
||||
+ printf(" tp_vectorcall_offset: %ld\n", (long)tp->tp_vectorcall_offset);
|
||||
if HAVE_WEAKREFS(tp)
|
||||
{
|
||||
printf(" tp_weaklistoffset: %ld\n", (long)tp->tp_weaklistoffset);
|
||||
@@ -178,7 +179,6 @@ static void _type_debug(PyTypeObject* tp
|
||||
attr_pointer(tp_free);
|
||||
|
||||
attr_pointer_meth(tp_repr, "__repr__");
|
||||
- attr_pointer(tp_print);
|
||||
attr_pointer_meth(tp_hash, "__hash__");
|
||||
attr_pointer_meth(tp_call, "__call__");
|
||||
attr_pointer_meth(tp_str, "__str__");
|
||||
diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx
|
||||
--- src/sage/cpython/debug.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/cpython/debug.pyx 2023-03-13 09:38:55.610800649 -0600
|
||||
@@ -231,6 +231,7 @@ def type_debug(cls):
|
||||
tp_basicsize: 16
|
||||
tp_itemsize: 0
|
||||
tp_dictoffset: 0
|
||||
+ tp_vectorcall_offset: 0
|
||||
tp_weaklistoffset: 0
|
||||
tp_base (__base__): NULL
|
||||
tp_bases (__bases__): tuple:
|
||||
@@ -258,7 +259,6 @@ def type_debug(cls):
|
||||
tp_dealloc (__dealloc__): 0x7fc57d757010
|
||||
tp_free: PyObject_Del
|
||||
tp_repr (__repr__): 0x7fc57d75b990
|
||||
- tp_print: NULL
|
||||
tp_hash (__hash__): _Py_HashPointer
|
||||
tp_call (__call__): NULL
|
||||
tp_str (__str__): 0x7fc57d757020
|
||||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/geometry/triangulation/point_configuration.py 2023-03-13 09:38:55.610800649 -0600
|
||||
@@ -617,11 +617,11 @@ class PointConfiguration(UniqueRepresent
|
||||
['{{0,1,2,4},{1,2,3,4}}']
|
||||
"""
|
||||
timeout = 600
|
||||
- proc = pexpect.spawn(executable, timeout=timeout)
|
||||
+ proc = pexpect.spawn(executable, timeout=timeout, encoding='utf-8')
|
||||
proc.expect(r'Evaluating Commandline Options \.\.\.')
|
||||
proc.expect(r'\.\.\. done\.')
|
||||
proc.setecho(0)
|
||||
- assert proc.readline().strip() == b''
|
||||
+ assert proc.readline().strip() == ''
|
||||
|
||||
if verbose:
|
||||
print("#### TOPCOM input ####")
|
||||
diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py
|
||||
--- src/sage/interfaces/frobby.py.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/interfaces/frobby.py 2023-03-13 09:38:55.610800649 -0600
|
||||
@@ -78,7 +78,7 @@ class Frobby:
|
||||
print("Frobby command: ", repr(command))
|
||||
print("Frobby input:\n", input)
|
||||
|
||||
- process = Popen(command, stdin=PIPE, stdout=PIPE, stderr=PIPE)
|
||||
+ process = Popen(command, stdin=PIPE, stdout=PIPE, stderr=PIPE, encoding='utf-8')
|
||||
if input:
|
||||
frinput = str_to_bytes(input)
|
||||
else:
|
||||
diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py
|
||||
--- src/sage/interfaces/gfan.py.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/interfaces/gfan.py 2023-03-13 09:38:55.611800631 -0600
|
||||
@@ -109,7 +109,7 @@ class Gfan():
|
||||
print("gfan input:\n%s" % input)
|
||||
|
||||
gfan_processes = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE,
|
||||
- encoding='latin-1')
|
||||
+ encoding='utf-8')
|
||||
ans, err = gfan_processes.communicate(input=input)
|
||||
|
||||
# sometimes, gfan outputs stuff to stderr even though everything is fine
|
||||
diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
|
||||
--- src/sage/interfaces/latte.py.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/interfaces/latte.py 2023-03-13 09:38:55.611800631 -0600
|
||||
@@ -161,6 +161,7 @@ def count(arg, ehrhart_polynomial=False,
|
||||
latte_proc = Popen(args,
|
||||
stdin=PIPE, stdout=PIPE,
|
||||
stderr=(None if verbose else PIPE),
|
||||
+ encoding='utf-8',
|
||||
cwd=tempd.name)
|
||||
|
||||
ans, err = latte_proc.communicate(arg)
|
||||
@@ -393,6 +394,7 @@ def integrate(arg, polynomial=None, algo
|
||||
latte_proc = Popen(args,
|
||||
stdin=PIPE, stdout=PIPE,
|
||||
stderr=(None if verbose else PIPE),
|
||||
+ encoding='utf-8',
|
||||
cwd=tempd.name)
|
||||
|
||||
ans, err = latte_proc.communicate(arg)
|
||||
diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.pyx
|
||||
--- src/sage/interfaces/sagespawn.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/interfaces/sagespawn.pyx 2023-03-13 09:38:55.611800631 -0600
|
||||
@@ -1,6 +1,6 @@
|
||||
"""
|
||||
Sage wrapper around pexpect's ``spawn`` class and
|
||||
-the ptyprocess's ``PtyProcess`` class.
|
||||
+the ptyprocess's ``PtyProcessUnicode`` class.
|
||||
|
||||
AUTHOR:
|
||||
|
||||
@@ -21,7 +21,7 @@ AUTHOR:
|
||||
#*****************************************************************************
|
||||
|
||||
from pexpect import *
|
||||
-from ptyprocess import PtyProcess
|
||||
+from ptyprocess import PtyProcessUnicode
|
||||
|
||||
from cpython.ref cimport Py_INCREF
|
||||
from libc.signal cimport *
|
||||
@@ -30,7 +30,6 @@ from posix.unistd cimport getpid, getpgi
|
||||
|
||||
from time import sleep
|
||||
|
||||
-from sage.cpython.string cimport str_to_bytes
|
||||
from sage.interfaces.process cimport ContainChildren
|
||||
|
||||
|
||||
@@ -173,7 +172,7 @@ class SageSpawn(spawn):
|
||||
return ret
|
||||
|
||||
|
||||
-class SagePtyProcess(PtyProcess):
|
||||
+class SagePtyProcess(PtyProcessUnicode):
|
||||
def close(self, force=None):
|
||||
"""
|
||||
Quit the child process: send the quit string, close the
|
||||
@@ -194,11 +193,7 @@ class SagePtyProcess(PtyProcess):
|
||||
if self.quit_string is not None:
|
||||
try:
|
||||
# This can fail if the process already exited
|
||||
- # PtyProcess.write takes bytes; ideally we would use
|
||||
- # an encoding picked specifically for the target process
|
||||
- # but the default (UTF-8) will do now, since I don't
|
||||
- # think we have any non-ASCII quit_strings anyways.
|
||||
- self.write(str_to_bytes(self.quit_string))
|
||||
+ self.write(self.quit_string)
|
||||
except (OSError, IOError):
|
||||
pass
|
||||
self.fileobj.close()
|
||||
diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.pyx
|
||||
--- src/sage/libs/coxeter3/coxeter.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/libs/coxeter3/coxeter.pyx 2023-03-13 09:38:55.611800631 -0600
|
||||
@@ -37,7 +37,7 @@ cdef class String:
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
||||
- sage: s = String("hello"); s # optional - coxeter3
|
||||
+ sage: s = String(b"hello"); s # optional - coxeter3
|
||||
hello
|
||||
sage: del s # optional - coxeter3
|
||||
"""
|
||||
@@ -48,11 +48,11 @@ cdef class String:
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
||||
- sage: s = String('Hi') # optional - coxeter3
|
||||
+ sage: s = String(b'Hi') # optional - coxeter3
|
||||
sage: s # optional - coxeter3
|
||||
Hi
|
||||
"""
|
||||
- return bytes_to_str(self.x.ptr())
|
||||
+ return self.x.ptr().decode('utf-8')
|
||||
|
||||
def __hash__(self):
|
||||
"""
|
||||
@@ -64,7 +64,7 @@ cdef class String:
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
||||
- sage: s = String('hello') # optional - coxeter3
|
||||
+ sage: s = String(b'hello') # optional - coxeter3
|
||||
sage: hash(s) == hash('hello') # optional - coxeter3
|
||||
True
|
||||
"""
|
||||
@@ -75,9 +75,9 @@ cdef class String:
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
||||
- sage: ta1 = String('A') # optional - coxeter3
|
||||
- sage: ta2 = String('A') # optional - coxeter3
|
||||
- sage: tb = String('b') # optional - coxeter3
|
||||
+ sage: ta1 = String(b'A') # optional - coxeter3
|
||||
+ sage: ta2 = String(b'A') # optional - coxeter3
|
||||
+ sage: tb = String(b'b') # optional - coxeter3
|
||||
sage: ta1 == ta2 # optional - coxeter3
|
||||
True
|
||||
sage: tb != ta1 # optional - coxeter3
|
||||
@@ -113,7 +113,7 @@ cdef class String:
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
||||
- sage: s = String('Hi') # optional - coxeter3
|
||||
+ sage: s = String(b'Hi') # optional - coxeter3
|
||||
sage: len(s) # optional - coxeter3
|
||||
2
|
||||
"""
|
||||
@@ -124,7 +124,7 @@ cdef class String:
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
||||
- sage: s = String('Hi') # optional - coxeter3
|
||||
+ sage: s = String(b'Hi') # optional - coxeter3
|
||||
sage: TestSuite(s).run() # optional - coxeter3
|
||||
"""
|
||||
return (String, (repr(self),) )
|
||||
@@ -138,7 +138,7 @@ cdef class Type:
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
||||
- sage: t = Type('A'); t # optional - coxeter3
|
||||
+ sage: t = Type(b'A'); t # optional - coxeter3
|
||||
A
|
||||
sage: del t # optional - coxeter3
|
||||
"""
|
||||
@@ -149,7 +149,7 @@ cdef class Type:
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
||||
- sage: t = Type('A'); t # optional - coxeter3
|
||||
+ sage: t = Type(b'A'); t # optional - coxeter3
|
||||
A
|
||||
"""
|
||||
return bytes_to_str(self.x.name().ptr())
|
||||
@@ -159,7 +159,7 @@ cdef class Type:
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
||||
- sage: t = Type('A') # optional - coxeter3
|
||||
+ sage: t = Type(b'A') # optional - coxeter3
|
||||
sage: t.name() # optional - coxeter3
|
||||
A
|
||||
"""
|
||||
@@ -175,8 +175,8 @@ cdef class Type:
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
||||
- sage: a = Type('A') # optional - coxeter3
|
||||
- sage: b = Type('B') # optional - coxeter3
|
||||
+ sage: a = Type(b'A') # optional - coxeter3
|
||||
+ sage: b = Type(b'B') # optional - coxeter3
|
||||
sage: hash(a) == hash(b) # optional - coxeter3
|
||||
False
|
||||
sage: d = {a: 1, b: 2} # optional - coxeter3
|
||||
@@ -188,9 +188,9 @@ cdef class Type:
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
||||
- sage: ta1 = Type('A') # optional - coxeter3
|
||||
- sage: ta2 = Type('A') # optional - coxeter3
|
||||
- sage: tb = Type('b') # optional - coxeter3
|
||||
+ sage: ta1 = Type(b'A') # optional - coxeter3
|
||||
+ sage: ta2 = Type(b'A') # optional - coxeter3
|
||||
+ sage: tb = Type(b'b') # optional - coxeter3
|
||||
sage: ta1 == ta2 # optional - coxeter3
|
||||
True
|
||||
sage: tb != ta1 # optional - coxeter3
|
||||
@@ -224,7 +224,7 @@ cdef class Type:
|
||||
EXAMPLES::
|
||||
|
||||
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
||||
- sage: t = Type('A') # optional - coxeter3
|
||||
+ sage: t = Type(b'A') # optional - coxeter3
|
||||
sage: TestSuite(t).run() # optional - coxeter3
|
||||
"""
|
||||
return (Type, (repr(self), ))
|
||||
@@ -268,7 +268,7 @@ cdef class CoxGroup(SageObject):
|
||||
pass
|
||||
type = type.lower()
|
||||
|
||||
- type = 'B' if type == 'C' else type
|
||||
+ type = b'B' if type == 'C' else type.encode('utf-8')
|
||||
|
||||
if rank == 0:
|
||||
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
|
||||
--- src/sage/misc/sageinspect.py.orig 2023-03-13 08:43:39.551431643 -0600
|
||||
+++ src/sage/misc/sageinspect.py 2023-03-13 09:38:55.612800613 -0600
|
||||
@@ -516,12 +516,9 @@ class SageArgSpecVisitor(ast.NodeVisitor
|
||||
"""
|
||||
return node.id
|
||||
|
||||
- def visit_NameConstant(self, node):
|
||||
- """
|
||||
- Visit a Python AST :class:`ast.NameConstant` node.
|
||||
-
|
||||
- This is an optimization added in Python 3.4 for the special cases
|
||||
- of True, False, and None.
|
||||
+ def visit_Constant(self, node):
|
||||
+ r"""
|
||||
+ Visit a Python AST :class:`ast.Constant` node.
|
||||
|
||||
INPUT:
|
||||
|
||||
@@ -535,7 +532,7 @@ class SageArgSpecVisitor(ast.NodeVisitor
|
||||
|
||||
sage: import ast, sage.misc.sageinspect as sms
|
||||
sage: visitor = sms.SageArgSpecVisitor()
|
||||
- sage: vis = lambda x: visitor.visit_NameConstant(ast.parse(x).body[0].value)
|
||||
+ sage: vis = lambda x: visitor.visit_Constant(ast.parse(x).body[0].value)
|
||||
sage: [vis(n) for n in ['True', 'False', 'None']]
|
||||
[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
|
||||
--- src/sage/plot/plot3d/plot3d.py.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/plot/plot3d/plot3d.py 2023-03-13 09:38:55.612800613 -0600
|
||||
@@ -219,6 +219,7 @@ from .shapes import arrow3d
|
||||
from .base import Graphics3dGroup
|
||||
from sage.plot.colors import rainbow
|
||||
from .texture import Texture
|
||||
+import inspect
|
||||
|
||||
from sage.functions.trig import cos, sin
|
||||
from sage.misc.sageinspect import sage_getargspec, is_function_or_cython_function
|
||||
@@ -255,7 +256,7 @@ class _Coordinates():
|
||||
sage: arb((x+z,y*z,z), z, (x,y))
|
||||
Arbitrary Coordinates coordinate transform (z in terms of x, y)
|
||||
"""
|
||||
- all_vars = sage_getargspec(self.transform).args[1:]
|
||||
+ all_vars = inspect.getfullargspec(self.transform)[0][1:]
|
||||
if set(all_vars) != 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
|
||||
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 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/rings/polynomial/pbori/pbori.pyx 2023-03-13 11:29:13.157592229 -0600
|
||||
@@ -4722,8 +4722,7 @@ cdef class PolynomialConstruct:
|
||||
# So, it is just a conversion. [Simon King]
|
||||
return (<BooleanPolynomialRing>ring)._element_constructor_(x)
|
||||
|
||||
- raise TypeError("cannot generate Boolean polynomial from %s , %s" %
|
||||
- (type(x), type(ring)))
|
||||
+ raise TypeError(f"cannot generate Boolean polynomial from {type(x)}, {type(ring)}")
|
||||
|
||||
|
||||
cdef class MonomialConstruct:
|
||||
diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.pyx
|
||||
--- src/sage/structure/sage_object.pyx.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/structure/sage_object.pyx 2023-03-13 09:38:55.613800594 -0600
|
||||
@@ -694,7 +694,7 @@ cdef class SageObject:
|
||||
try:
|
||||
s = self._interface_init_(I)
|
||||
except Exception:
|
||||
- raise NotImplementedError("coercion of object %s to %s not implemented:\n%s\n%s" % (repr(self), I))
|
||||
+ raise NotImplementedError(f"coercion of object {repr(self)} to {I} not implemented")
|
||||
X = I(s)
|
||||
if c:
|
||||
try:
|
|
@ -1,59 +0,0 @@
|
|||
diff -up src/sage/interfaces/qepcad.py.orig src/sage/interfaces/qepcad.py
|
||||
--- src/sage/interfaces/qepcad.py.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/interfaces/qepcad.py 2023-03-13 09:52:44.349623749 -0600
|
||||
@@ -530,7 +530,7 @@ TESTS:
|
||||
|
||||
Check the qepcad configuration file::
|
||||
|
||||
- sage: with open(os.path.join(SAGE_LOCAL, 'etc', 'default.qepcadrc')) as f: # optional - qepcad
|
||||
+ sage: with open(os.path.join('/usr/share/qepcad/default.qepcadrc')) as f: # optional - qepcad
|
||||
....: f.readlines()[-1]
|
||||
'SINGULAR yes\n'
|
||||
|
||||
@@ -604,7 +604,6 @@ AUTHORS:
|
||||
# https://www.gnu.org/licenses/
|
||||
# ****************************************************************************
|
||||
import os
|
||||
-from sage.env import SAGE_LOCAL
|
||||
import pexpect
|
||||
import re
|
||||
import sys
|
||||
@@ -619,6 +618,8 @@ from .expect import Expect, ExpectFuncti
|
||||
from sage.interfaces.interface import AsciiArtString
|
||||
|
||||
|
||||
+QEPCAD_LOCAL = "/usr/share/qepcad"
|
||||
+
|
||||
def _qepcad_atoms(formula):
|
||||
r"""
|
||||
Return the atoms of a qepcad quantifier-free formula, as a set of strings.
|
||||
@@ -650,17 +651,17 @@ def _qepcad_cmd(memcells=None):
|
||||
|
||||
sage: from sage.interfaces.qepcad import _qepcad_cmd
|
||||
sage: s = _qepcad_cmd()
|
||||
- sage: s == 'env qe=%s qepcad '%SAGE_LOCAL
|
||||
+ sage: s == 'env qe=/usr/share/qepcad qepcad '
|
||||
True
|
||||
sage: s = _qepcad_cmd(memcells=8000000)
|
||||
- sage: s == 'env qe=%s qepcad +N8000000'%SAGE_LOCAL
|
||||
+ sage: s == 'env qe=/usr/share/qepcad qepcad +N8000000'
|
||||
True
|
||||
"""
|
||||
if memcells is not None:
|
||||
memcells_arg = '+N%s' % memcells
|
||||
else:
|
||||
memcells_arg = ''
|
||||
- return "env qe=%s qepcad %s"%(SAGE_LOCAL, memcells_arg)
|
||||
+ return "env qe=%s qepcad %s"%(QEPCAD_LOCAL, memcells_arg)
|
||||
|
||||
_command_info_cache = None
|
||||
|
||||
@@ -685,7 +686,7 @@ def _update_command_info():
|
||||
|
||||
cache = {}
|
||||
|
||||
- with open(os.path.join(SAGE_LOCAL, 'share/qepcad', 'qepcad.help')) as help:
|
||||
+ with open(os.path.join(QEPCAD_LOCAL, 'bin', 'qepcad.help')) as help:
|
||||
assert help.readline().strip() == '@'
|
||||
|
||||
while True:
|
|
@ -1,32 +0,0 @@
|
|||
diff -up src/sage/misc/binary_tree.pyx.orig src/sage/misc/binary_tree.pyx
|
||||
--- src/sage/misc/binary_tree.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||
+++ src/sage/misc/binary_tree.pyx 2020-10-30 13:27:44.173427025 -0600
|
||||
@@ -12,6 +12,8 @@ from cysignals.memory cimport sig_malloc
|
||||
|
||||
from cpython.ref cimport PyObject, Py_INCREF, Py_XDECREF
|
||||
|
||||
+from sage.misc.prandom import randint
|
||||
+
|
||||
cdef binary_tree_node *BinaryTreeNode(int key, object value):
|
||||
cdef binary_tree_node *t
|
||||
t = <binary_tree_node *>sig_malloc(sizeof(binary_tree_node))
|
||||
@@ -121,10 +123,7 @@ cdef binary_tree_node *binary_tree_right
|
||||
cdef binary_tree_node *binary_tree_head_excise(binary_tree_node *self):
|
||||
cdef binary_tree_node *cur
|
||||
cdef int right
|
||||
- # We have a pointer we're about to free. Chances are, we'll never
|
||||
- # see this pointer again. Thus, its least significant bit is
|
||||
- # "random" enough to resist bias.
|
||||
- right = (<int>self)&1
|
||||
+ right = randint(0, 1)
|
||||
if self.right == NULL:
|
||||
return self.left
|
||||
if self.left == NULL:
|
||||
@@ -501,7 +500,6 @@ class Test:
|
||||
|
||||
sage: sage.misc.binary_tree.Test().random()
|
||||
"""
|
||||
- from sage.misc.prandom import randint
|
||||
t = BinaryTree()
|
||||
for i in xrange(cycles):
|
||||
r = randint(0,8)
|
|
@ -1,12 +0,0 @@
|
|||
diff -up src/sage/misc/cython.py.orig src/sage/misc/cython.py
|
||||
--- src/sage/misc/cython.py.orig 2021-08-26 13:10:09.114735665 -0600
|
||||
+++ src/sage/misc/cython.py 2021-08-26 13:11:01.734797359 -0600
|
||||
@@ -55,7 +55,7 @@ def _standard_libs_libdirs_incdirs_alias
|
||||
'ntl']
|
||||
standard_libdirs = []
|
||||
if SAGE_LOCAL:
|
||||
- standard_libdirs.append(os.path.join(SAGE_LOCAL, "lib"))
|
||||
+ standard_libdirs.append(os.path.realpath(os.path.join(SAGE_LOCAL, "lib")))
|
||||
standard_libdirs.extend(aliases["CBLAS_LIBDIR"] + aliases["NTL_LIBDIR"])
|
||||
standard_incdirs = sage_include_directories() + aliases["CBLAS_INCDIR"] + aliases["NTL_INCDIR"]
|
||||
return standard_libs, standard_libdirs, standard_incdirs, aliases
|
|
@ -1,35 +0,0 @@
|
|||
diff -up src/sage_docbuild/ext/multidocs.py.orig src/sage_docbuild/ext/multidocs.py
|
||||
--- src/sage_docbuild/ext/multidocs.py.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage_docbuild/ext/multidocs.py 2023-03-13 10:54:54.452252122 -0600
|
||||
@@ -83,8 +83,11 @@ def merge_environment(app, env):
|
||||
for ind in newalldoc:
|
||||
# treat sub-document source as orphaned file and don't complain
|
||||
md = env.metadata.get(ind, dict())
|
||||
- md['orphan'] = 1
|
||||
- env.metadata[ind] = md
|
||||
+ try:
|
||||
+ md['orphan'] = 1
|
||||
+ env.metadata[ind] = md
|
||||
+ except AttributeError:
|
||||
+ env.metadata[ind] = {'orphan'}
|
||||
# merge the citations
|
||||
newcite = {}
|
||||
for ind, (path, tag, lineno) in citations.items():
|
||||
diff -up src/sage/interfaces/singular.py.orig src/sage/interfaces/singular.py
|
||||
--- src/sage/interfaces/singular.py.orig 2023-02-11 06:25:15.000000000 -0700
|
||||
+++ src/sage/interfaces/singular.py 2023-03-13 10:54:54.452252122 -0600
|
||||
@@ -2379,11 +2379,11 @@ def generate_docstring_dictionary():
|
||||
|
||||
L, in_node, curr_node = [], False, None
|
||||
|
||||
- from sage.libs.singular.singular import get_resource
|
||||
- singular_info_file = get_resource('i')
|
||||
+ singular_info_file = '/usr/share/info/singular.info.gz'
|
||||
|
||||
# singular.hlp contains a few iso-8859-1 encoded special characters
|
||||
- with io.open(singular_info_file,
|
||||
+ import gzip
|
||||
+ with gzip.open(singular_info_file,
|
||||
encoding='latin-1') as f:
|
||||
for line in f:
|
||||
m = re.match(new_node, line)
|
|
@ -1,276 +0,0 @@
|
|||
diff -up src/bin/sage.orig src/bin/sage
|
||||
--- src/bin/sage.orig 2022-09-19 16:38:18.000000000 -0600
|
||||
+++ src/bin/sage 2023-01-15 17:02:57.680034236 -0700
|
||||
@@ -131,7 +131,6 @@ usage() {
|
||||
echo " --gap [...] -- run Sage's Gap with given arguments"
|
||||
command -v gp &>/dev/null && \
|
||||
echo " --gp [...] -- run Sage's PARI/GP calculator with given arguments"
|
||||
- echo " --pip [...] -- invoke pip, the Python package manager"
|
||||
command -v maxima &>/dev/null && \
|
||||
echo " --maxima [...] -- run Sage's Maxima with given arguments"
|
||||
command -v mwrank &>/dev/null && \
|
||||
@@ -178,60 +177,6 @@ if [ -f "${SELF}-env-config" ]; then
|
||||
fi
|
||||
|
||||
#####################################################################
|
||||
-# Special options to be processed without sage-env
|
||||
-#####################################################################
|
||||
-
|
||||
-# Check for '--nodotsage' before sourcing sage-env; otherwise sage-env
|
||||
-# will already have set some environment variables with the old
|
||||
-# setting for DOT_SAGE.
|
||||
-if [ "$1" = '--nodotsage' ]; then
|
||||
- export DOT_SAGE=`mktemp -d ${TMPDIR:-/tmp}/dotsageXXXXXX`
|
||||
- shift
|
||||
- command "${SELF}" "$@"
|
||||
- status=$?
|
||||
- rm -rf "$DOT_SAGE"
|
||||
- exit $status
|
||||
-fi
|
||||
-
|
||||
-# Check for '--patchbot' before sourcing sage-env: patchbot needs
|
||||
-# an unclobbered environment before testing unsafe tickets.
|
||||
-if [ "$1" = '-patchbot' -o "$1" = "--patchbot" ]; then
|
||||
- shift
|
||||
- # We ask the Python from Sage where the patchbot is installed.
|
||||
- # We set PYTHONPATH to that directory such that the system Python
|
||||
- # should also find the sage_patchbot package.
|
||||
- cmd='import sage_patchbot as p; import os; print(os.path.dirname(p.__path__[0]))'
|
||||
- export PYTHONPATH=`"$SAGE_ROOT/sage" --python3 -c "$cmd"`
|
||||
- if [ -z "$PYTHONPATH" ]; then
|
||||
- # Something went wrong, assume that the patchbot is not installed
|
||||
- echo >&2 "Error: cannot find installation path for sage_patchbot"
|
||||
- echo >&2 "See https://wiki.sagemath.org/buildbot for instructions"
|
||||
- exit 1
|
||||
- fi
|
||||
-
|
||||
- shopt -s execfail # Do not exit if "exec" fails
|
||||
- exec python3 -m sage_patchbot.patchbot "$@"
|
||||
- echo >&2 "Error: cannot find a suitable Python 3 program."
|
||||
- echo >&2 "The SageMath patchbot requires a system Python 3 installation."
|
||||
- exit 127
|
||||
-fi
|
||||
-
|
||||
-# Check for '-i' etc. before sourcing sage-env: running "make"
|
||||
-# should be run outside of the Sage shell.
|
||||
-case "$1" in
|
||||
- -i|-f|-p)
|
||||
- # Delegate further option handling to the non-installed sage-site script.
|
||||
- # (These options become unavailable if the directory $SAGE_ROOT is removed.)
|
||||
- if [ -d "$SAGE_ROOT" ]; then
|
||||
- exec "$SAGE_ROOT/build/bin/sage-site" "$@"
|
||||
- # fallthrough if there is no sage-site script
|
||||
- fi
|
||||
- echo >&2 "Error: unknown option: $1"
|
||||
- exit 1
|
||||
- ;;
|
||||
-esac
|
||||
-
|
||||
-#####################################################################
|
||||
# Report information about the Sage environment
|
||||
#####################################################################
|
||||
|
||||
@@ -282,18 +227,6 @@ fi
|
||||
|
||||
# Prepare for running Sage, either interactively or non-interactively.
|
||||
sage_setup() {
|
||||
- # Check that we're not in a source tarball which hasn't been built yet (#13561).
|
||||
- if [ "$SAGE_SRC_ENV_CONFIG" = 1 ] && [ ! -z "$SAGE_VENV" ] && [ ! -x "$SAGE_VENV/bin/sage" ]; then
|
||||
- echo >&2 '************************************************************************'
|
||||
- echo >&2 'It seems that you are attempting to run Sage from an unpacked source'
|
||||
- echo >&2 'tarball, but you have not compiled it yet (or maybe the build has not'
|
||||
- echo >&2 'finished). You should run `make` in the Sage root directory first.'
|
||||
- echo >&2 'If you did not intend to build Sage from source, you should download'
|
||||
- echo >&2 'a binary tarball instead. Read README.txt for more information.'
|
||||
- echo >&2 '************************************************************************'
|
||||
- exit 1
|
||||
- fi
|
||||
-
|
||||
if [ ! -d "$IPYTHONDIR" ]; then
|
||||
# make sure that $DOT_SAGE exists so that ipython will happily
|
||||
# create its config directories there. If DOT_SAGE doesn't
|
||||
@@ -338,8 +271,6 @@ usage_advanced() {
|
||||
echo " --nodotsage -- run Sage without using the user's"
|
||||
echo " .sage directory: create and use a temporary"
|
||||
echo " .sage directory instead."
|
||||
- echo " --gthread, --qthread, --q4thread, --wthread, --pylab"
|
||||
- echo " -- pass the option through to IPython"
|
||||
echo " --simple-prompt -- pass the option through to IPython: use"
|
||||
echo " this option with sage-shell mode in emacs"
|
||||
echo " --gdb -- run Sage under the control of gdb"
|
||||
@@ -369,18 +300,9 @@ usage_advanced() {
|
||||
echo " environment (not Sage), passing additional"
|
||||
echo " additional options to IPython"
|
||||
echo " --jupyter [...] -- run Sage's Jupyter with given arguments"
|
||||
- echo " --kash [...] -- run Sage's Kash with the given arguments"
|
||||
- command -v kash &>/dev/null || \
|
||||
- echo " (not installed currently, run sage -i kash)"
|
||||
- echo " --M2 [...] -- run Sage's Macaulay2 with the given arguments"
|
||||
- command -v M2 &>/dev/null || \
|
||||
- echo " (not installed currently, run sage -i macaulay2)"
|
||||
echo " --maxima [...] -- run Sage's Maxima with the given arguments"
|
||||
echo " --mwrank [...] -- run Sage's mwrank with the given arguments"
|
||||
- echo " --pip [...] -- invoke pip, the Python package manager"
|
||||
echo " --polymake [...] -- run Sage's Polymake with given arguments"
|
||||
- command -v polymake &>/dev/null || \
|
||||
- echo " (not installed currently, run sage -i polymake)"
|
||||
echo " --python [...], --python3 [...]"
|
||||
echo " -- run the Python 3 interpreter"
|
||||
echo " -R [...] -- run Sage's R with the given arguments"
|
||||
@@ -656,11 +578,6 @@ if [ "$1" = '-lisp' -o "$1" = '--lisp' ]
|
||||
exec ecl "$@"
|
||||
fi
|
||||
|
||||
-if [ "$1" = '-kash' -o "$1" = '--kash' ]; then
|
||||
- shift
|
||||
- exec kash "$@"
|
||||
-fi
|
||||
-
|
||||
if [ "$1" = '-maxima' -o "$1" = '--maxima' ]; then
|
||||
shift
|
||||
maxima_cmd=$(sage-config MAXIMA 2>/dev/null)
|
||||
@@ -685,11 +602,6 @@ if [ "$1" = '-R' -o "$1" = '--R' ]; then
|
||||
exec R "$@"
|
||||
fi
|
||||
|
||||
-if [ "$1" = '-git' -o "$1" = '--git' ]; then
|
||||
- shift
|
||||
- exec git "$@"
|
||||
-fi
|
||||
-
|
||||
#####################################################################
|
||||
# sage --sh and sage --buildsh
|
||||
#####################################################################
|
||||
@@ -856,10 +768,6 @@ fi
|
||||
# build_sage, sage -b, sage -br, etc. could be moved to
|
||||
# build/bin/sage-site. See #29111.
|
||||
|
||||
-build_sage() {
|
||||
- ( cd "$SAGE_ROOT/build/make" && ./install sagelib-no-deps ) || exit $?
|
||||
-}
|
||||
-
|
||||
if [[ "$1" =~ ^--notebook=.* || "$1" =~ ^-n=.* || "$1" =~ ^-notebook=.* ]] ; then
|
||||
sage-cleaner &>/dev/null &
|
||||
exec sage-notebook "$@"
|
||||
@@ -870,13 +778,6 @@ if [ "$1" = "-notebook" -o "$1" = '--not
|
||||
exec sage-notebook "$@"
|
||||
fi
|
||||
|
||||
-if [ "$1" = "-bn" -o "$1" = "--build-and-notebook" ]; then
|
||||
- shift
|
||||
- build_sage
|
||||
- sage-cleaner &>/dev/null &
|
||||
- exec sage-notebook --notebook=default "$@"
|
||||
-fi
|
||||
-
|
||||
if [ -n "$SAGE_SRC" -a -d "$SAGE_SRC" ]; then
|
||||
# Source inspection facilities, supported on sage-the-distribution and on distributions
|
||||
# that package the Sage sources.
|
||||
@@ -893,46 +794,18 @@ if [ -n "$SAGE_SRC" -a -d "$SAGE_SRC" ];
|
||||
fi
|
||||
fi
|
||||
|
||||
-if [ "$1" = '-b' ]; then
|
||||
- build_sage
|
||||
- exit $?
|
||||
-fi
|
||||
-
|
||||
-if [ "$1" = '-br' -o "$1" = "--br" ]; then
|
||||
- build_sage
|
||||
- interactive_sage
|
||||
-fi
|
||||
-
|
||||
if [ "$1" = '-r' ]; then
|
||||
shift
|
||||
interactive_sage
|
||||
fi
|
||||
|
||||
-if [ "$1" = '-ba-force' -o "$1" = '--ba-force' ]; then
|
||||
- echo
|
||||
- echo "WARNING: 'sage --ba-force' is deprecated; use 'sage -ba' instead."
|
||||
- echo
|
||||
- ( cd "$SAGE_ROOT/build/make" && make sagelib-clean )
|
||||
- build_sage
|
||||
- exit $?
|
||||
-fi
|
||||
-
|
||||
-if [ "$1" = '-ba' ]; then
|
||||
- ( cd "$SAGE_ROOT/build/make" && make sagelib-clean )
|
||||
- build_sage
|
||||
- exit $?
|
||||
-fi
|
||||
-
|
||||
exec-runtests() {
|
||||
sage_setup
|
||||
export PYTHONIOENCODING="utf-8" # Fix encoding for doctests
|
||||
exec sage-runtests "$@"
|
||||
}
|
||||
|
||||
-if [ "$1" = '-t' -o "$1" = '-bt' -o "$1" = '-tp' -o "$1" = '-btp' ]; then
|
||||
- if [ "$1" = '-bt' -o "$1" = '-btp' ]; then
|
||||
- build_sage
|
||||
- fi
|
||||
+if [ "$1" = '-t' -o "$1" = '-tp' ]; then
|
||||
if [ "$1" = '-tp' -o "$1" = '-btp' ]; then
|
||||
shift
|
||||
exec-runtests -p "$@"
|
||||
@@ -942,34 +815,11 @@ if [ "$1" = '-t' -o "$1" = '-bt' -o "$1"
|
||||
fi
|
||||
fi
|
||||
|
||||
-if [ "$1" = '-tnew' -o "$1" = '-btnew' ]; then
|
||||
- if [ "$1" = '-btnew' ]; then
|
||||
- build_sage
|
||||
- fi
|
||||
- shift
|
||||
- exec-runtests --new "$@"
|
||||
-fi
|
||||
-
|
||||
if [ "$1" = '-testall' -o "$1" = "--testall" ]; then
|
||||
shift
|
||||
exec-runtests -a "$@"
|
||||
fi
|
||||
|
||||
-if [ "$1" = '-fixdoctests' -o "$1" = '--fixdoctests' ]; then
|
||||
- shift
|
||||
- exec sage-fixdoctests "$@"
|
||||
-fi
|
||||
-
|
||||
-if [ "$1" = "-coverage" -o "$1" = "--coverage" ]; then
|
||||
- shift
|
||||
- exec sage-coverage "$@"
|
||||
-fi
|
||||
-
|
||||
-if [ "$1" = "-coverageall" -o "$1" = "--coverageall" ]; then
|
||||
- shift
|
||||
- exec sage-coverage --all "$@"
|
||||
-fi
|
||||
-
|
||||
if [ "$1" = '-startuptime' -o "$1" = '--startuptime' ]; then
|
||||
exec sage-startuptime.py "$@"
|
||||
fi
|
||||
@@ -1056,11 +906,6 @@ if [ "$1" = '-installed' -o "$1" = "--in
|
||||
exec sage-list-packages all --installed-only $@
|
||||
fi
|
||||
|
||||
-if [ "$1" = '-sdist' -o "$1" = "--sdist" ]; then
|
||||
- shift
|
||||
- exec sage-sdist "$@"
|
||||
-fi
|
||||
-
|
||||
#####################################################################
|
||||
# Debugging tools
|
||||
#####################################################################
|
||||
@@ -1110,12 +955,6 @@ if [ "$1" = '-callgrind' -o "$1" = "--ca
|
||||
exec sage-callgrind "$@"
|
||||
fi
|
||||
|
||||
-if [ "$1" = '-omega' -o "$1" = "--omega" ]; then
|
||||
- shift
|
||||
- sage_setup
|
||||
- exec sage-omega "$@"
|
||||
-fi
|
||||
-
|
||||
if [ "$1" = '-gthread' -o "$1" = '-qthread' -o "$1" = '-q4thread' -o "$1" = '-wthread' -o "$1" = '-pylab' -o "$1" = '--simple-prompt' -o "$1" = '-simple-prompt' ]; then
|
||||
# Intentionally no "shift" here
|
||||
interactive_sage "$@"
|
|
@ -1,28 +0,0 @@
|
|||
diff -up src/sage/graphs/graph_decompositions/sage_tdlib.cpp.orig src/sage/graphs/graph_decompositions/sage_tdlib.cpp
|
||||
--- src/sage/graphs/graph_decompositions/sage_tdlib.cpp.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/graphs/graph_decompositions/sage_tdlib.cpp 2021-06-16 08:33:47.325415307 -0600
|
||||
@@ -2,8 +2,8 @@
|
||||
#include <map>
|
||||
|
||||
#include <boost/graph/adjacency_list.hpp>
|
||||
-#include "tdlib/TD_combinations.hpp"
|
||||
-#include "tdlib/TD_misc.hpp"
|
||||
+#include <treedec/combinations.hpp>
|
||||
+#include <treedec/misc.hpp>
|
||||
|
||||
#ifndef TD_STRUCT_VERTEX
|
||||
#define TD_STRUCT_VERTEX
|
||||
@@ -16,13 +16,6 @@ struct Vertex{
|
||||
|
||||
typedef boost::adjacency_list<boost::setS, boost::vecS, boost::undirectedS, Vertex> TD_graph_t;
|
||||
|
||||
-struct bag{
|
||||
- std::set<unsigned int> bag;
|
||||
-};
|
||||
-
|
||||
-typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS, bag> TD_tree_dec_t;
|
||||
-
|
||||
-
|
||||
void make_tdlib_graph(TD_graph_t &G, std::vector<unsigned int> &V, std::vector<unsigned int> &E){
|
||||
unsigned int max = 0;
|
||||
for(unsigned int i = 0; i < V.size(); i++)
|
2890
sagemath.spec
2890
sagemath.spec
File diff suppressed because it is too large
Load diff
2
sources
2
sources
|
@ -1,2 +0,0 @@
|
|||
SHA512 (cremona-2019-10-29.tar.gz) = 32fbb828f26f87191e39123762cfbd796aac9abf346f0dc981e8e3f390435b22d281be3031ea92ae7e18f4ce41af8054784ca0d550a08f17b05c54ca08b4c9c8
|
||||
SHA512 (sage-9.8.tar.gz) = 1ba1c7bd07f13bb67f290d194b65234546fb6fee42693dd3d538e5f206b92a2f1ebf2d49b58541469a4c38b54c843ea0614f3d5c1b32f724f3176703ec5382e7
|
13
testjava.sh
13
testjava.sh
|
@ -1,13 +0,0 @@
|
|||
#!/bin/bash
|
||||
type -atp java
|
||||
OUT=$?
|
||||
#echo $OUT
|
||||
if [ $OUT -eq 0 ]; then
|
||||
#found java now check 1.5<=version<=1.7
|
||||
#version >1.7 may be OK just not checked yet.
|
||||
java -version 2>&1|grep version.*[1]\.[567]
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
#OUT=$?
|
||||
#echo $OUT
|
Loading…
Add table
Reference in a new issue