mirror of
https://src.fedoraproject.org/rpms/sagemath.git
synced 2025-04-22 11:45:56 -04:00
Version 9.3.
- Drop -arb and -openblas patches. - Add -cvxopt patch. - Add metainfo file.
This commit is contained in:
parent
26b688d416
commit
0a1b42ef2b
21 changed files with 1096 additions and 1037 deletions
|
@ -1,83 +1,6 @@
|
|||
diff -up build/pkgs/sagetex/src/remote-sagetex.py.orig build/pkgs/sagetex/src/remote-sagetex.py
|
||||
--- build/pkgs/sagetex/src/remote-sagetex.py.orig 2020-08-12 02:35:31.000000000 -0600
|
||||
+++ build/pkgs/sagetex/src/remote-sagetex.py 2020-10-30 14:03:01.286904419 -0600
|
||||
@@ -24,12 +24,11 @@
|
||||
## You should have received a copy of the GNU General Public License along
|
||||
## with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
##
|
||||
-from __future__ import print_function
|
||||
import json
|
||||
import sys
|
||||
import time
|
||||
import re
|
||||
-import urllib
|
||||
+import urllib.request, urllib.parse, urllib.error
|
||||
import hashlib
|
||||
import os
|
||||
import os.path
|
||||
@@ -156,7 +155,7 @@ class RemoteSage:
|
||||
'\n*(?P<output>.*)', re.DOTALL)
|
||||
self._404 = re.compile('404 Not Found')
|
||||
self._session = self._get_url('login',
|
||||
- urllib.urlencode({'username': user,
|
||||
+ urllib.parse.urlencode({'username': user,
|
||||
'password':
|
||||
password}))['session']
|
||||
self._codewrap = """try:
|
||||
@@ -176,18 +175,18 @@ except:
|
||||
_p_.save(filename=plotfilename, **kwargs)""")
|
||||
|
||||
def _encode(self, d):
|
||||
- return 'session={0}&'.format(self._session) + urllib.urlencode(d)
|
||||
+ return 'session={0}&'.format(self._session) + urllib.parse.urlencode(d)
|
||||
|
||||
def _get_url(self, action, u):
|
||||
- with closing(urllib.urlopen(self._srv + '/simple/' + action +
|
||||
- '?' + u)) as h:
|
||||
+ with closing(urllib.request.urlopen(self._srv + '/simple/' + action +
|
||||
+ '?' + u)) as h:
|
||||
data = self._response.match(h.read())
|
||||
result = json.loads(data.group('header'))
|
||||
result['output'] = data.group('output').rstrip()
|
||||
return result
|
||||
|
||||
def _get_file(self, fn, cell, ofn=None):
|
||||
- with closing(urllib.urlopen(self._srv + '/simple/' + 'file' + '?' +
|
||||
+ with closing(urllib.request.urlopen(self._srv + '/simple/' + 'file' + '?' +
|
||||
self._encode({'cell': cell, 'file': fn}))) as h:
|
||||
myfn = ofn if ofn else fn
|
||||
data = h.read()
|
||||
@@ -277,13 +276,13 @@ if login_info_file:
|
||||
password = get_val(line)
|
||||
|
||||
if not server:
|
||||
- server = raw_input('Enter server: ')
|
||||
+ server = input('Enter server: ')
|
||||
|
||||
if not server.startswith('http'):
|
||||
server = 'https://' + server
|
||||
|
||||
if not username:
|
||||
- username = raw_input('Enter username: ')
|
||||
+ username = input('Enter username: ')
|
||||
|
||||
if not password:
|
||||
from getpass import getpass
|
||||
diff -up build/pkgs/sagetex/src/sagetexparse.py.orig build/pkgs/sagetex/src/sagetexparse.py
|
||||
--- build/pkgs/sagetex/src/sagetexparse.py.orig 2020-08-12 02:35:31.000000000 -0600
|
||||
+++ build/pkgs/sagetex/src/sagetexparse.py 2020-10-30 14:03:01.286904419 -0600
|
||||
@@ -132,7 +132,7 @@ class SageCodeExtractor():
|
||||
|
||||
def plotout(self, s, l, t):
|
||||
self.result += '# \\sageplot{} from line %s:\n' % lineno(l, s)
|
||||
- if t.format is not '':
|
||||
+ if t.format != '':
|
||||
self.result += '# format: %s' % t.format[0][1:-1] + '\n'
|
||||
self.result += t.code[1:-1] + '\n\n'
|
||||
|
||||
diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c
|
||||
--- src/sage/cpython/debugimpl.c.orig 2020-10-24 11:37:59.000000000 -0600
|
||||
+++ src/sage/cpython/debugimpl.c 2020-10-30 14:03:01.299904398 -0600
|
||||
--- src/sage/cpython/debugimpl.c.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/cpython/debugimpl.c 2021-05-28 11:39:54.261578894 -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);
|
||||
|
@ -95,9 +18,9 @@ diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c
|
|||
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 2020-10-24 11:37:59.000000000 -0600
|
||||
+++ src/sage/cpython/debug.pyx 2020-10-30 14:03:01.300904396 -0600
|
||||
@@ -232,6 +232,7 @@ def type_debug(cls):
|
||||
--- src/sage/cpython/debug.pyx.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/cpython/debug.pyx 2021-05-28 11:39:54.261578894 -0600
|
||||
@@ -231,6 +231,7 @@ def type_debug(cls):
|
||||
tp_basicsize: 16
|
||||
tp_itemsize: 0
|
||||
tp_dictoffset: 0
|
||||
|
@ -105,7 +28,7 @@ diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx
|
|||
tp_weaklistoffset: 0
|
||||
tp_base (__base__): NULL
|
||||
tp_bases (__bases__): tuple:
|
||||
@@ -259,7 +260,6 @@ def type_debug(cls):
|
||||
@@ -258,7 +259,6 @@ def type_debug(cls):
|
||||
tp_dealloc (__dealloc__): 0x7fc57d757010
|
||||
tp_free: PyObject_Del
|
||||
tp_repr (__repr__): 0x7fc57d75b990
|
||||
|
@ -114,9 +37,9 @@ diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx
|
|||
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 2020-10-24 11:37:59.000000000 -0600
|
||||
+++ src/sage/geometry/triangulation/point_configuration.py 2020-10-30 14:03:01.301904394 -0600
|
||||
@@ -619,11 +619,11 @@ class PointConfiguration(UniqueRepresent
|
||||
--- src/sage/geometry/triangulation/point_configuration.py.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/geometry/triangulation/point_configuration.py 2021-05-28 11:39:54.263578895 -0600
|
||||
@@ -618,11 +618,11 @@ class PointConfiguration(UniqueRepresent
|
||||
['{{0,1,2,4},{1,2,3,4}}']
|
||||
"""
|
||||
timeout = 600
|
||||
|
@ -131,9 +54,9 @@ diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/ge
|
|||
if verbose:
|
||||
print("#### TOPCOM input ####")
|
||||
diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py
|
||||
--- src/sage/interfaces/frobby.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||
+++ src/sage/interfaces/frobby.py 2020-10-30 14:03:02.534902319 -0600
|
||||
@@ -79,7 +79,7 @@ class Frobby:
|
||||
--- src/sage/interfaces/frobby.py.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/interfaces/frobby.py 2021-05-28 11:39:54.264578894 -0600
|
||||
@@ -78,7 +78,7 @@ class Frobby:
|
||||
print("Frobby command: ", repr(command))
|
||||
print("Frobby input:\n", input)
|
||||
|
||||
|
@ -143,9 +66,9 @@ diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py
|
|||
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 2020-10-24 11:37:59.000000000 -0600
|
||||
+++ src/sage/interfaces/gfan.py 2020-10-30 14:11:30.550047499 -0600
|
||||
@@ -62,7 +62,7 @@ class Gfan(object):
|
||||
--- src/sage/interfaces/gfan.py.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/interfaces/gfan.py 2021-05-28 11:39:54.264578894 -0600
|
||||
@@ -61,7 +61,7 @@ class Gfan(object):
|
||||
print("gfan input:\n%s" % I)
|
||||
|
||||
gfan_processes = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE,
|
||||
|
@ -155,9 +78,9 @@ diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py
|
|||
|
||||
# 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 2020-10-24 11:37:59.000000000 -0600
|
||||
+++ src/sage/interfaces/latte.py 2020-10-30 14:03:03.974899895 -0600
|
||||
@@ -152,6 +152,7 @@ def count(arg, ehrhart_polynomial=False,
|
||||
--- src/sage/interfaces/latte.py.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/interfaces/latte.py 2021-05-28 11:39:54.265578894 -0600
|
||||
@@ -162,6 +162,7 @@ def count(arg, ehrhart_polynomial=False,
|
||||
latte_proc = Popen(args,
|
||||
stdin=PIPE, stdout=PIPE,
|
||||
stderr=(None if verbose else PIPE),
|
||||
|
@ -165,7 +88,7 @@ diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
|
|||
cwd=str(SAGE_TMP))
|
||||
|
||||
ans, err = latte_proc.communicate(arg)
|
||||
@@ -364,6 +365,7 @@ def integrate(arg, polynomial=None, algo
|
||||
@@ -385,6 +386,7 @@ def integrate(arg, polynomial=None, algo
|
||||
latte_proc = Popen(args,
|
||||
stdin=PIPE, stdout=PIPE,
|
||||
stderr=(None if verbose else PIPE),
|
||||
|
@ -174,8 +97,8 @@ diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
|
|||
|
||||
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 2020-10-24 11:37:59.000000000 -0600
|
||||
+++ src/sage/interfaces/sagespawn.pyx 2020-10-30 14:03:03.975899894 -0600
|
||||
--- src/sage/interfaces/sagespawn.pyx.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/interfaces/sagespawn.pyx 2021-05-28 11:39:54.266578895 -0600
|
||||
@@ -1,6 +1,6 @@
|
||||
"""
|
||||
Sage wrapper around pexpect's ``spawn`` class and
|
||||
|
@ -224,8 +147,8 @@ diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.py
|
|||
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 2020-10-24 11:37:59.000000000 -0600
|
||||
+++ src/sage/libs/coxeter3/coxeter.pyx 2020-10-30 14:03:03.976899892 -0600
|
||||
--- src/sage/libs/coxeter3/coxeter.pyx.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/libs/coxeter3/coxeter.pyx 2021-05-28 11:39:54.267578895 -0600
|
||||
@@ -37,7 +37,7 @@ cdef class String:
|
||||
EXAMPLES::
|
||||
|
||||
|
@ -359,9 +282,9 @@ diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.
|
|||
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 2020-11-01 10:38:08.203022437 -0700
|
||||
+++ src/sage/misc/sageinspect.py 2020-11-01 10:43:43.355143620 -0700
|
||||
@@ -463,12 +463,9 @@ class SageArgSpecVisitor(ast.NodeVisitor
|
||||
--- src/sage/misc/sageinspect.py.orig 2021-05-28 11:01:40.384274506 -0600
|
||||
+++ src/sage/misc/sageinspect.py 2021-05-28 11:39:54.269578895 -0600
|
||||
@@ -462,12 +462,9 @@ class SageArgSpecVisitor(ast.NodeVisitor
|
||||
"""
|
||||
return node.id
|
||||
|
||||
|
@ -377,7 +300,7 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
|
|||
|
||||
INPUT:
|
||||
|
||||
@@ -476,17 +473,21 @@ class SageArgSpecVisitor(ast.NodeVisitor
|
||||
@@ -475,17 +472,21 @@ class SageArgSpecVisitor(ast.NodeVisitor
|
||||
|
||||
OUTPUT:
|
||||
|
||||
|
@ -405,7 +328,7 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
|
|||
"""
|
||||
|
||||
return node.value
|
||||
@@ -520,57 +521,6 @@ class SageArgSpecVisitor(ast.NodeVisitor
|
||||
@@ -519,57 +520,6 @@ class SageArgSpecVisitor(ast.NodeVisitor
|
||||
"""
|
||||
return node.arg
|
||||
|
||||
|
@ -464,9 +387,9 @@ diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
|
|||
"""
|
||||
Visit a Python AST :class:`ast.List` node.
|
||||
diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py
|
||||
--- src/sage/plot/plot3d/plot3d.py.orig 2020-10-24 11:37:59.000000000 -0600
|
||||
+++ src/sage/plot/plot3d/plot3d.py 2020-10-30 14:24:36.813732073 -0600
|
||||
@@ -186,7 +186,7 @@ class _Coordinates(object):
|
||||
--- src/sage/plot/plot3d/plot3d.py.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/plot/plot3d/plot3d.py 2021-05-28 11:39:54.270578895 -0600
|
||||
@@ -185,7 +185,7 @@ class _Coordinates(object):
|
||||
sage: arb((x+z,y*z,z), z, (x,y))
|
||||
Arbitrary Coordinates coordinate transform (z in terms of x, y)
|
||||
"""
|
||||
|
@ -476,9 +399,9 @@ diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py
|
|||
raise ValueError('variables were specified incorrectly for this coordinate system; incorrect variables were %s'%list(set(all_vars).symmetric_difference(set(indep_vars+[dep_var]))))
|
||||
self.dep_var = dep_var
|
||||
diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx
|
||||
--- src/sage/rings/integer.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||
+++ src/sage/rings/integer.pyx 2020-10-30 14:03:05.737896928 -0600
|
||||
@@ -7093,7 +7093,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c
|
||||
--- src/sage/rings/integer.pyx.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/rings/integer.pyx 2021-05-28 11:39:54.274578895 -0600
|
||||
@@ -7089,7 +7089,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c
|
||||
x += 1 # Strip spaces
|
||||
|
||||
# Disallow a sign here
|
||||
|
@ -488,9 +411,9 @@ diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx
|
|||
|
||||
assert base >= 2
|
||||
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 2020-10-24 11:37:59.000000000 -0600
|
||||
+++ src/sage/rings/polynomial/pbori/pbori.pyx 2020-11-05 15:44:02.756454276 -0700
|
||||
@@ -4800,8 +4800,7 @@ cdef class PolynomialConstruct:
|
||||
--- src/sage/rings/polynomial/pbori/pbori.pyx.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/rings/polynomial/pbori/pbori.pyx 2021-05-28 11:39:54.278578895 -0600
|
||||
@@ -4704,8 +4704,7 @@ cdef class PolynomialConstruct:
|
||||
# So, it is just a conversion. [Simon King]
|
||||
return (<BooleanPolynomialRing>ring)._element_constructor_(x)
|
||||
|
||||
|
@ -501,9 +424,9 @@ diff -up src/sage/rings/polynomial/pbori/pbori.pyx.orig src/sage/rings/polynomia
|
|||
|
||||
cdef class MonomialConstruct:
|
||||
diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
|
||||
--- src/sage/rings/real_mpfi.pyx.orig 2020-10-30 11:34:28.078977132 -0600
|
||||
+++ src/sage/rings/real_mpfi.pyx 2020-10-30 14:03:09.088891288 -0600
|
||||
@@ -1955,12 +1955,12 @@ cdef class RealIntervalFieldElement(Ring
|
||||
--- src/sage/rings/real_mpfi.pyx.orig 2021-05-28 11:01:45.006275360 -0600
|
||||
+++ src/sage/rings/real_mpfi.pyx 2021-05-28 11:39:54.280578896 -0600
|
||||
@@ -1944,12 +1944,12 @@ cdef class RealIntervalFieldElement(Ring
|
||||
|
||||
cdef long digits
|
||||
digits = strlen(lower_s)
|
||||
|
@ -518,7 +441,7 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
|
|||
digits -= 1
|
||||
upper_expo -= digits
|
||||
|
||||
@@ -2129,7 +2129,7 @@ cdef class RealIntervalFieldElement(Ring
|
||||
@@ -2118,7 +2118,7 @@ cdef class RealIntervalFieldElement(Ring
|
||||
raise MemoryError("Unable to allocate memory for the mantissa of an interval")
|
||||
mpz_get_str(tmp_cstr, base, lower_mpz)
|
||||
digits = strlen(tmp_cstr)
|
||||
|
@ -528,9 +451,9 @@ diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
|
|||
mant_string = bytes_to_str(tmp_cstr+1)
|
||||
sign_string = bytes_to_str(b'-')
|
||||
diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx
|
||||
--- src/sage/rings/real_mpfr.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||
+++ src/sage/rings/real_mpfr.pyx 2020-11-05 15:44:02.769454276 -0700
|
||||
@@ -2091,7 +2091,7 @@ cdef class RealNumber(sage.structure.ele
|
||||
--- src/sage/rings/real_mpfr.pyx.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/rings/real_mpfr.pyx 2021-05-28 11:39:54.283578896 -0600
|
||||
@@ -2095,7 +2095,7 @@ cdef class RealNumber(sage.structure.ele
|
||||
if s is NULL:
|
||||
raise RuntimeError("unable to convert an mpfr number to a string")
|
||||
# t contains just digits (no sign, decimal point or exponent)
|
||||
|
@ -540,8 +463,8 @@ diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx
|
|||
t = char_to_str(s + 1)
|
||||
else:
|
||||
diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.pyx
|
||||
--- src/sage/structure/sage_object.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
||||
+++ src/sage/structure/sage_object.pyx 2020-10-30 14:03:09.091891283 -0600
|
||||
--- src/sage/structure/sage_object.pyx.orig 2021-05-09 16:00:11.000000000 -0600
|
||||
+++ src/sage/structure/sage_object.pyx 2021-05-28 11:39:54.284578896 -0600
|
||||
@@ -688,7 +688,7 @@ cdef class SageObject:
|
||||
try:
|
||||
s = self._interface_init_(I)
|
||||
|
@ -552,9 +475,9 @@ diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.
|
|||
if c:
|
||||
try:
|
||||
diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
|
||||
--- src/sage/symbolic/expression.pyx.orig 2020-10-30 12:10:19.747169301 -0600
|
||||
+++ src/sage/symbolic/expression.pyx 2020-10-30 14:03:09.095891276 -0600
|
||||
@@ -13071,7 +13071,7 @@ cdef class hold_class:
|
||||
--- src/sage/symbolic/expression.pyx.orig 2021-05-28 11:01:45.016275362 -0600
|
||||
+++ src/sage/symbolic/expression.pyx 2021-05-28 11:39:54.289578896 -0600
|
||||
@@ -13201,7 +13201,7 @@ cdef class hold_class:
|
||||
sage: SR(2)^5
|
||||
32
|
||||
"""
|
||||
|
@ -563,7 +486,7 @@ diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
|
|||
|
||||
def __exit__(self, *args):
|
||||
"""
|
||||
@@ -13084,7 +13084,7 @@ cdef class hold_class:
|
||||
@@ -13214,7 +13214,7 @@ cdef class hold_class:
|
||||
sage: SR(2)^5
|
||||
32
|
||||
"""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue