|
|
55beead |
diff -up build/pkgs/sagetex/src/remote-sagetex.py.orig build/pkgs/sagetex/src/remote-sagetex.py
|
|
|
861d3bc |
--- build/pkgs/sagetex/src/remote-sagetex.py.orig 2020-08-12 02:35:31.000000000 -0600
|
|
|
861d3bc |
+++ build/pkgs/sagetex/src/remote-sagetex.py 2020-10-30 14:03:01.286904419 -0600
|
|
|
eaa777c |
@@ -24,12 +24,11 @@
|
|
|
eaa777c |
## You should have received a copy of the GNU General Public License along
|
|
|
eaa777c |
## with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
eaa777c |
##
|
|
|
eaa777c |
-from __future__ import print_function
|
|
|
eaa777c |
import json
|
|
|
eaa777c |
import sys
|
|
|
eaa777c |
import time
|
|
|
eaa777c |
import re
|
|
|
eaa777c |
-import urllib
|
|
|
eaa777c |
+import urllib.request, urllib.parse, urllib.error
|
|
|
eaa777c |
import hashlib
|
|
|
eaa777c |
import os
|
|
|
eaa777c |
import os.path
|
|
|
eaa777c |
@@ -156,7 +155,7 @@ class RemoteSage:
|
|
|
eaa777c |
'\n*(?P<output>.*)', re.DOTALL)
|
|
|
eaa777c |
self._404 = re.compile('404 Not Found')
|
|
|
eaa777c |
self._session = self._get_url('login',
|
|
|
eaa777c |
- urllib.urlencode({'username': user,
|
|
|
eaa777c |
+ urllib.parse.urlencode({'username': user,
|
|
|
eaa777c |
'password':
|
|
|
eaa777c |
password}))['session']
|
|
|
eaa777c |
self._codewrap = """try:
|
|
|
eaa777c |
@@ -176,18 +175,18 @@ except:
|
|
|
eaa777c |
_p_.save(filename=plotfilename, **kwargs)""")
|
|
|
eaa777c |
|
|
|
eaa777c |
def _encode(self, d):
|
|
|
eaa777c |
- return 'session={0}&'.format(self._session) + urllib.urlencode(d)
|
|
|
eaa777c |
+ return 'session={0}&'.format(self._session) + urllib.parse.urlencode(d)
|
|
|
eaa777c |
|
|
|
eaa777c |
def _get_url(self, action, u):
|
|
|
eaa777c |
- with closing(urllib.urlopen(self._srv + '/simple/' + action +
|
|
|
eaa777c |
- '?' + u)) as h:
|
|
|
eaa777c |
+ with closing(urllib.request.urlopen(self._srv + '/simple/' + action +
|
|
|
eaa777c |
+ '?' + u)) as h:
|
|
|
eaa777c |
data = self._response.match(h.read())
|
|
|
eaa777c |
result = json.loads(data.group('header'))
|
|
|
eaa777c |
result['output'] = data.group('output').rstrip()
|
|
|
eaa777c |
return result
|
|
|
eaa777c |
|
|
|
eaa777c |
def _get_file(self, fn, cell, ofn=None):
|
|
|
eaa777c |
- with closing(urllib.urlopen(self._srv + '/simple/' + 'file' + '?' +
|
|
|
eaa777c |
+ with closing(urllib.request.urlopen(self._srv + '/simple/' + 'file' + '?' +
|
|
|
eaa777c |
self._encode({'cell': cell, 'file': fn}))) as h:
|
|
|
eaa777c |
myfn = ofn if ofn else fn
|
|
|
eaa777c |
data = h.read()
|
|
|
eaa777c |
@@ -277,13 +276,13 @@ if login_info_file:
|
|
|
eaa777c |
password = get_val(line)
|
|
|
eaa777c |
|
|
|
eaa777c |
if not server:
|
|
|
eaa777c |
- server = raw_input('Enter server: ')
|
|
|
eaa777c |
+ server = input('Enter server: ')
|
|
|
eaa777c |
|
|
|
eaa777c |
if not server.startswith('http'):
|
|
|
eaa777c |
server = 'https://' + server
|
|
|
eaa777c |
|
|
|
eaa777c |
if not username:
|
|
|
eaa777c |
- username = raw_input('Enter username: ')
|
|
|
eaa777c |
+ username = input('Enter username: ')
|
|
|
eaa777c |
|
|
|
eaa777c |
if not password:
|
|
|
eaa777c |
from getpass import getpass
|
|
|
ecae648 |
diff -up build/pkgs/sagetex/src/sagetexparse.py.orig build/pkgs/sagetex/src/sagetexparse.py
|
|
|
861d3bc |
--- build/pkgs/sagetex/src/sagetexparse.py.orig 2020-08-12 02:35:31.000000000 -0600
|
|
|
861d3bc |
+++ build/pkgs/sagetex/src/sagetexparse.py 2020-10-30 14:03:01.286904419 -0600
|
|
|
ecae648 |
@@ -132,7 +132,7 @@ class SageCodeExtractor():
|
|
|
ecae648 |
|
|
|
ecae648 |
def plotout(self, s, l, t):
|
|
|
ecae648 |
self.result += '# \\sageplot{} from line %s:\n' % lineno(l, s)
|
|
|
ecae648 |
- if t.format is not '':
|
|
|
ecae648 |
+ if t.format != '':
|
|
|
ecae648 |
self.result += '# format: %s' % t.format[0][1:-1] + '\n'
|
|
|
ecae648 |
self.result += t.code[1:-1] + '\n\n'
|
|
|
ecae648 |
|
|
|
eb706cd |
diff -up src/sage/cpython/debugimpl.c.orig src/sage/cpython/debugimpl.c
|
|
|
861d3bc |
--- src/sage/cpython/debugimpl.c.orig 2020-10-24 11:37:59.000000000 -0600
|
|
|
861d3bc |
+++ src/sage/cpython/debugimpl.c 2020-10-30 14:03:01.299904398 -0600
|
|
|
861d3bc |
@@ -148,6 +148,7 @@ static void _type_debug(PyTypeObject* tp
|
|
|
eb706cd |
printf(" tp_basicsize: %ld\n", (long)tp->tp_basicsize);
|
|
|
eb706cd |
printf(" tp_itemsize: %ld\n", (long)tp->tp_itemsize);
|
|
|
eb706cd |
printf(" tp_dictoffset: %ld\n", (long)tp->tp_dictoffset);
|
|
|
eb706cd |
+ printf(" tp_vectorcall_offset: %ld\n", (long)tp->tp_vectorcall_offset);
|
|
|
eb706cd |
if HAVE_WEAKREFS(tp)
|
|
|
eb706cd |
{
|
|
|
eb706cd |
printf(" tp_weaklistoffset: %ld\n", (long)tp->tp_weaklistoffset);
|
|
|
861d3bc |
@@ -178,7 +179,6 @@ static void _type_debug(PyTypeObject* tp
|
|
|
eb706cd |
attr_pointer(tp_free);
|
|
|
eb706cd |
|
|
|
eb706cd |
attr_pointer_meth(tp_repr, "__repr__");
|
|
|
eb706cd |
- attr_pointer(tp_print);
|
|
|
eb706cd |
attr_pointer_meth(tp_hash, "__hash__");
|
|
|
eb706cd |
attr_pointer_meth(tp_call, "__call__");
|
|
|
eb706cd |
attr_pointer_meth(tp_str, "__str__");
|
|
|
eb706cd |
diff -up src/sage/cpython/debug.pyx.orig src/sage/cpython/debug.pyx
|
|
|
861d3bc |
--- src/sage/cpython/debug.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
|
|
861d3bc |
+++ src/sage/cpython/debug.pyx 2020-10-30 14:03:01.300904396 -0600
|
|
|
eb706cd |
@@ -232,6 +232,7 @@ def type_debug(cls):
|
|
|
eb706cd |
tp_basicsize: 16
|
|
|
eb706cd |
tp_itemsize: 0
|
|
|
eb706cd |
tp_dictoffset: 0
|
|
|
eb706cd |
+ tp_vectorcall_offset: 0
|
|
|
eb706cd |
tp_weaklistoffset: 0
|
|
|
eb706cd |
tp_base (__base__): NULL
|
|
|
eb706cd |
tp_bases (__bases__): tuple:
|
|
|
eb706cd |
@@ -259,7 +260,6 @@ def type_debug(cls):
|
|
|
eb706cd |
tp_dealloc (__dealloc__): 0x7fc57d757010
|
|
|
eb706cd |
tp_free: PyObject_Del
|
|
|
eb706cd |
tp_repr (__repr__): 0x7fc57d75b990
|
|
|
eb706cd |
- tp_print: NULL
|
|
|
eb706cd |
tp_hash (__hash__): _Py_HashPointer
|
|
|
eb706cd |
tp_call (__call__): NULL
|
|
|
eb706cd |
tp_str (__str__): 0x7fc57d757020
|
|
|
55beead |
diff -up src/sage/geometry/triangulation/point_configuration.py.orig src/sage/geometry/triangulation/point_configuration.py
|
|
|
861d3bc |
--- src/sage/geometry/triangulation/point_configuration.py.orig 2020-10-24 11:37:59.000000000 -0600
|
|
|
861d3bc |
+++ src/sage/geometry/triangulation/point_configuration.py 2020-10-30 14:03:01.301904394 -0600
|
|
|
2fac775 |
@@ -619,11 +619,11 @@ class PointConfiguration(UniqueRepresent
|
|
|
55beead |
['{{0,1,2,4},{1,2,3,4}}']
|
|
|
55beead |
"""
|
|
|
55beead |
timeout = 600
|
|
|
55beead |
- proc = pexpect.spawn(executable, timeout=timeout)
|
|
|
55beead |
+ proc = pexpect.spawn(executable, timeout=timeout, encoding='utf-8')
|
|
|
55beead |
proc.expect(r'Evaluating Commandline Options \.\.\.')
|
|
|
55beead |
proc.expect(r'\.\.\. done\.')
|
|
|
55beead |
proc.setecho(0)
|
|
|
2fac775 |
- assert proc.readline().strip() == b''
|
|
|
2fac775 |
+ assert proc.readline().strip() == ''
|
|
|
2fac775 |
|
|
|
2fac775 |
if verbose:
|
|
|
2fac775 |
print("#### TOPCOM input ####")
|
|
|
55beead |
diff -up src/sage/interfaces/frobby.py.orig src/sage/interfaces/frobby.py
|
|
|
861d3bc |
--- src/sage/interfaces/frobby.py.orig 2020-10-24 11:37:59.000000000 -0600
|
|
|
861d3bc |
+++ src/sage/interfaces/frobby.py 2020-10-30 14:03:02.534902319 -0600
|
|
|
2fac775 |
@@ -79,7 +79,7 @@ class Frobby:
|
|
|
55beead |
print("Frobby command: ", repr(command))
|
|
|
55beead |
print("Frobby input:\n", input)
|
|
|
55beead |
|
|
|
55beead |
- process = Popen(command, stdin = PIPE, stdout = PIPE, stderr = PIPE)
|
|
|
2fac775 |
+ process = Popen(command, stdin = PIPE, stdout = PIPE, stderr = PIPE, encoding='utf-8')
|
|
|
2fac775 |
if input:
|
|
|
2fac775 |
frinput = str_to_bytes(input)
|
|
|
2fac775 |
else:
|
|
|
55beead |
diff -up src/sage/interfaces/gfan.py.orig src/sage/interfaces/gfan.py
|
|
|
861d3bc |
--- src/sage/interfaces/gfan.py.orig 2020-10-24 11:37:59.000000000 -0600
|
|
|
861d3bc |
+++ src/sage/interfaces/gfan.py 2020-10-30 14:11:30.550047499 -0600
|
|
|
861d3bc |
@@ -62,7 +62,7 @@ class Gfan(object):
|
|
|
861d3bc |
print("gfan input:\n%s" % I)
|
|
|
55beead |
|
|
|
55beead |
gfan_processes = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE,
|
|
|
861d3bc |
- encoding='latin-1')
|
|
|
861d3bc |
+ encoding='utf-8')
|
|
|
861d3bc |
ans, err = gfan_processes.communicate(input=I)
|
|
|
55beead |
|
|
|
861d3bc |
# sometimes, gfan outputs stuff to stderr even though everything is fine
|
|
|
55beead |
diff -up src/sage/interfaces/latte.py.orig src/sage/interfaces/latte.py
|
|
|
861d3bc |
--- src/sage/interfaces/latte.py.orig 2020-10-24 11:37:59.000000000 -0600
|
|
|
861d3bc |
+++ src/sage/interfaces/latte.py 2020-10-30 14:03:03.974899895 -0600
|
|
|
7b54d21 |
@@ -152,6 +152,7 @@ def count(arg, ehrhart_polynomial=False,
|
|
|
55beead |
latte_proc = Popen(args,
|
|
|
55beead |
stdin=PIPE, stdout=PIPE,
|
|
|
55beead |
stderr=(None if verbose else PIPE),
|
|
|
55beead |
+ encoding='utf-8',
|
|
|
55beead |
cwd=str(SAGE_TMP))
|
|
|
55beead |
|
|
|
55beead |
ans, err = latte_proc.communicate(arg)
|
|
|
7b54d21 |
@@ -364,6 +365,7 @@ def integrate(arg, polynomial=None, algo
|
|
|
55beead |
latte_proc = Popen(args,
|
|
|
55beead |
stdin=PIPE, stdout=PIPE,
|
|
|
55beead |
stderr=(None if verbose else PIPE),
|
|
|
55beead |
+ encoding='utf-8',
|
|
|
55beead |
cwd=str(SAGE_TMP))
|
|
|
55beead |
|
|
|
55beead |
ans, err = latte_proc.communicate(arg)
|
|
|
55beead |
diff -up src/sage/interfaces/sagespawn.pyx.orig src/sage/interfaces/sagespawn.pyx
|
|
|
861d3bc |
--- src/sage/interfaces/sagespawn.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
|
|
861d3bc |
+++ src/sage/interfaces/sagespawn.pyx 2020-10-30 14:03:03.975899894 -0600
|
|
|
55beead |
@@ -1,6 +1,6 @@
|
|
|
55beead |
"""
|
|
|
55beead |
Sage wrapper around pexpect's ``spawn`` class and
|
|
|
55beead |
-the ptyprocess's ``PtyProcess`` class.
|
|
|
55beead |
+the ptyprocess's ``PtyProcessUnicode`` class.
|
|
|
55beead |
|
|
|
55beead |
AUTHOR:
|
|
|
55beead |
|
|
|
55beead |
@@ -21,7 +21,7 @@ AUTHOR:
|
|
|
55beead |
#*****************************************************************************
|
|
|
55beead |
|
|
|
55beead |
from pexpect import *
|
|
|
55beead |
-from ptyprocess import PtyProcess
|
|
|
55beead |
+from ptyprocess import PtyProcessUnicode
|
|
|
55beead |
|
|
|
55beead |
from cpython.ref cimport Py_INCREF
|
|
|
55beead |
from libc.signal cimport *
|
|
|
55beead |
@@ -30,7 +30,6 @@ from posix.unistd cimport getpid, getpgi
|
|
|
55beead |
|
|
|
55beead |
from time import sleep
|
|
|
55beead |
|
|
|
55beead |
-from sage.cpython.string cimport str_to_bytes
|
|
|
55beead |
from sage.interfaces.process cimport ContainChildren
|
|
|
55beead |
|
|
|
55beead |
|
|
|
861d3bc |
@@ -173,7 +172,7 @@ class SageSpawn(spawn):
|
|
|
55beead |
return ret
|
|
|
55beead |
|
|
|
55beead |
|
|
|
55beead |
-class SagePtyProcess(PtyProcess):
|
|
|
55beead |
+class SagePtyProcess(PtyProcessUnicode):
|
|
|
55beead |
def close(self, force=None):
|
|
|
55beead |
"""
|
|
|
55beead |
Quit the child process: send the quit string, close the
|
|
|
861d3bc |
@@ -194,11 +193,7 @@ class SagePtyProcess(PtyProcess):
|
|
|
55beead |
if self.quit_string is not None:
|
|
|
55beead |
try:
|
|
|
55beead |
# This can fail if the process already exited
|
|
|
55beead |
- # PtyProcess.write takes bytes; ideally we would use
|
|
|
55beead |
- # an encoding picked specifically for the target process
|
|
|
55beead |
- # but the default (UTF-8) will do now, since I don't
|
|
|
55beead |
- # think we have any non-ASCII quit_strings anyways.
|
|
|
55beead |
- self.write(str_to_bytes(self.quit_string))
|
|
|
55beead |
+ self.write(self.quit_string)
|
|
|
55beead |
except (OSError, IOError):
|
|
|
55beead |
pass
|
|
|
55beead |
self.fileobj.close()
|
|
|
ecae648 |
diff -up src/sage/libs/coxeter3/coxeter.pyx.orig src/sage/libs/coxeter3/coxeter.pyx
|
|
|
861d3bc |
--- src/sage/libs/coxeter3/coxeter.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
|
|
861d3bc |
+++ src/sage/libs/coxeter3/coxeter.pyx 2020-10-30 14:03:03.976899892 -0600
|
|
|
861d3bc |
@@ -37,7 +37,7 @@ cdef class String:
|
|
|
ecae648 |
EXAMPLES::
|
|
|
ecae648 |
|
|
|
ecae648 |
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
|
|
ecae648 |
- sage: s = String("hello"); s # optional - coxeter3
|
|
|
ecae648 |
+ sage: s = String(b"hello"); s # optional - coxeter3
|
|
|
ecae648 |
hello
|
|
|
ecae648 |
sage: del s # optional - coxeter3
|
|
|
ecae648 |
"""
|
|
|
861d3bc |
@@ -48,11 +48,11 @@ cdef class String:
|
|
|
ecae648 |
EXAMPLES::
|
|
|
ecae648 |
|
|
|
ecae648 |
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
|
|
ecae648 |
- sage: s = String('Hi') # optional - coxeter3
|
|
|
ecae648 |
+ sage: s = String(b'Hi') # optional - coxeter3
|
|
|
ecae648 |
sage: s # optional - coxeter3
|
|
|
ecae648 |
Hi
|
|
|
ecae648 |
"""
|
|
|
7b54d21 |
- return bytes_to_str(self.x.ptr())
|
|
|
ecae648 |
+ return self.x.ptr().decode('utf-8')
|
|
|
ecae648 |
|
|
|
ecae648 |
def __hash__(self):
|
|
|
ecae648 |
"""
|
|
|
861d3bc |
@@ -64,7 +64,7 @@ cdef class String:
|
|
|
ecae648 |
EXAMPLES::
|
|
|
ecae648 |
|
|
|
ecae648 |
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
|
|
ecae648 |
- sage: s = String('hello') # optional - coxeter3
|
|
|
ecae648 |
+ sage: s = String(b'hello') # optional - coxeter3
|
|
|
ecae648 |
sage: hash(s) == hash('hello') # optional - coxeter3
|
|
|
ecae648 |
True
|
|
|
ecae648 |
"""
|
|
|
861d3bc |
@@ -75,9 +75,9 @@ cdef class String:
|
|
|
ecae648 |
EXAMPLES::
|
|
|
ecae648 |
|
|
|
ecae648 |
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
|
|
ecae648 |
- sage: ta1 = String('A') # optional - coxeter3
|
|
|
ecae648 |
- sage: ta2 = String('A') # optional - coxeter3
|
|
|
ecae648 |
- sage: tb = String('b') # optional - coxeter3
|
|
|
ecae648 |
+ sage: ta1 = String(b'A') # optional - coxeter3
|
|
|
ecae648 |
+ sage: ta2 = String(b'A') # optional - coxeter3
|
|
|
ecae648 |
+ sage: tb = String(b'b') # optional - coxeter3
|
|
|
ecae648 |
sage: ta1 == ta2 # optional - coxeter3
|
|
|
ecae648 |
True
|
|
|
ecae648 |
sage: tb != ta1 # optional - coxeter3
|
|
|
861d3bc |
@@ -113,7 +113,7 @@ cdef class String:
|
|
|
ecae648 |
EXAMPLES::
|
|
|
ecae648 |
|
|
|
ecae648 |
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
|
|
ecae648 |
- sage: s = String('Hi') # optional - coxeter3
|
|
|
ecae648 |
+ sage: s = String(b'Hi') # optional - coxeter3
|
|
|
ecae648 |
sage: len(s) # optional - coxeter3
|
|
|
ecae648 |
2
|
|
|
ecae648 |
"""
|
|
|
861d3bc |
@@ -124,7 +124,7 @@ cdef class String:
|
|
|
ecae648 |
EXAMPLES::
|
|
|
ecae648 |
|
|
|
ecae648 |
sage: from sage.libs.coxeter3.coxeter import String # optional - coxeter3
|
|
|
ecae648 |
- sage: s = String('Hi') # optional - coxeter3
|
|
|
ecae648 |
+ sage: s = String(b'Hi') # optional - coxeter3
|
|
|
ecae648 |
sage: TestSuite(s).run() # optional - coxeter3
|
|
|
ecae648 |
"""
|
|
|
ecae648 |
return (String, (repr(self),) )
|
|
|
861d3bc |
@@ -138,7 +138,7 @@ cdef class Type:
|
|
|
ecae648 |
EXAMPLES::
|
|
|
ecae648 |
|
|
|
ecae648 |
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
|
|
ecae648 |
- sage: t = Type('A'); t # optional - coxeter3
|
|
|
ecae648 |
+ sage: t = Type(b'A'); t # optional - coxeter3
|
|
|
ecae648 |
A
|
|
|
ecae648 |
sage: del t # optional - coxeter3
|
|
|
ecae648 |
"""
|
|
|
861d3bc |
@@ -149,7 +149,7 @@ cdef class Type:
|
|
|
ecae648 |
EXAMPLES::
|
|
|
ecae648 |
|
|
|
ecae648 |
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
|
|
ecae648 |
- sage: t = Type('A'); t # optional - coxeter3
|
|
|
ecae648 |
+ sage: t = Type(b'A'); t # optional - coxeter3
|
|
|
ecae648 |
A
|
|
|
ecae648 |
"""
|
|
|
7b54d21 |
return bytes_to_str(self.x.name().ptr())
|
|
|
861d3bc |
@@ -159,7 +159,7 @@ cdef class Type:
|
|
|
ecae648 |
EXAMPLES::
|
|
|
ecae648 |
|
|
|
ecae648 |
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
|
|
ecae648 |
- sage: t = Type('A') # optional - coxeter3
|
|
|
ecae648 |
+ sage: t = Type(b'A') # optional - coxeter3
|
|
|
ecae648 |
sage: t.name() # optional - coxeter3
|
|
|
ecae648 |
A
|
|
|
ecae648 |
"""
|
|
|
861d3bc |
@@ -175,8 +175,8 @@ cdef class Type:
|
|
|
ecae648 |
EXAMPLES::
|
|
|
ecae648 |
|
|
|
ecae648 |
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
|
|
ecae648 |
- sage: a = Type('A') # optional - coxeter3
|
|
|
ecae648 |
- sage: b = Type('B') # optional - coxeter3
|
|
|
ecae648 |
+ sage: a = Type(b'A') # optional - coxeter3
|
|
|
ecae648 |
+ sage: b = Type(b'B') # optional - coxeter3
|
|
|
ecae648 |
sage: hash(a) == hash(b) # optional - coxeter3
|
|
|
ecae648 |
False
|
|
|
ecae648 |
sage: d = {a: 1, b: 2} # optional - coxeter3
|
|
|
861d3bc |
@@ -188,9 +188,9 @@ cdef class Type:
|
|
|
ecae648 |
EXAMPLES::
|
|
|
ecae648 |
|
|
|
ecae648 |
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
|
|
ecae648 |
- sage: ta1 = Type('A') # optional - coxeter3
|
|
|
ecae648 |
- sage: ta2 = Type('A') # optional - coxeter3
|
|
|
ecae648 |
- sage: tb = Type('b') # optional - coxeter3
|
|
|
ecae648 |
+ sage: ta1 = Type(b'A') # optional - coxeter3
|
|
|
ecae648 |
+ sage: ta2 = Type(b'A') # optional - coxeter3
|
|
|
ecae648 |
+ sage: tb = Type(b'b') # optional - coxeter3
|
|
|
ecae648 |
sage: ta1 == ta2 # optional - coxeter3
|
|
|
ecae648 |
True
|
|
|
ecae648 |
sage: tb != ta1 # optional - coxeter3
|
|
|
861d3bc |
@@ -224,7 +224,7 @@ cdef class Type:
|
|
|
ecae648 |
EXAMPLES::
|
|
|
ecae648 |
|
|
|
ecae648 |
sage: from sage.libs.coxeter3.coxeter import Type # optional - coxeter3
|
|
|
ecae648 |
- sage: t = Type('A') # optional - coxeter3
|
|
|
ecae648 |
+ sage: t = Type(b'A') # optional - coxeter3
|
|
|
ecae648 |
sage: TestSuite(t).run() # optional - coxeter3
|
|
|
ecae648 |
"""
|
|
|
ecae648 |
return (Type, (repr(self), ))
|
|
|
861d3bc |
@@ -268,7 +268,7 @@ cdef class CoxGroup(SageObject):
|
|
|
861d3bc |
pass
|
|
|
ecae648 |
type = type.lower()
|
|
|
ecae648 |
|
|
|
ecae648 |
- type = 'B' if type == 'C' else type
|
|
|
ecae648 |
+ type = b'B' if type == 'C' else type.encode('utf-8')
|
|
|
ecae648 |
|
|
|
ecae648 |
if rank == 0:
|
|
|
ecae648 |
raise NotImplementedError("Coxeter group of type ['A',0] using Coxeter 3 not yet implemented")
|
|
|
eb706cd |
diff -up src/sage/misc/sageinspect.py.orig src/sage/misc/sageinspect.py
|
|
|
861d3bc |
--- src/sage/misc/sageinspect.py.orig 2020-11-01 10:38:08.203022437 -0700
|
|
|
861d3bc |
+++ src/sage/misc/sageinspect.py 2020-11-01 10:43:43.355143620 -0700
|
|
|
861d3bc |
@@ -463,12 +463,9 @@ class SageArgSpecVisitor(ast.NodeVisitor
|
|
|
861d3bc |
"""
|
|
|
eb706cd |
return node.id
|
|
|
eb706cd |
|
|
|
861d3bc |
- def visit_NameConstant(self, node):
|
|
|
861d3bc |
- """
|
|
|
861d3bc |
- Visit a Python AST :class:`ast.NameConstant` node.
|
|
|
861d3bc |
-
|
|
|
861d3bc |
- This is an optimization added in Python 3.4 for the special cases
|
|
|
861d3bc |
- of True, False, and None.
|
|
|
eb706cd |
+ def visit_Constant(self, node):
|
|
|
eb706cd |
+ r"""
|
|
|
eb706cd |
+ Visit a Python AST :class:`ast.Constant` node.
|
|
|
eb706cd |
|
|
|
861d3bc |
INPUT:
|
|
|
eb706cd |
|
|
|
861d3bc |
@@ -476,17 +473,21 @@ class SageArgSpecVisitor(ast.NodeVisitor
|
|
|
eb706cd |
|
|
|
861d3bc |
OUTPUT:
|
|
|
eb706cd |
|
|
|
861d3bc |
- - None, True, False.
|
|
|
eb706cd |
+ - the boolean, number, or string the ``node`` represents
|
|
|
eb706cd |
|
|
|
861d3bc |
EXAMPLES::
|
|
|
eb706cd |
|
|
|
861d3bc |
- sage: import ast, sage.misc.sageinspect as sms # py3
|
|
|
861d3bc |
- sage: visitor = sms.SageArgSpecVisitor() # py3
|
|
|
861d3bc |
- sage: vis = lambda x: visitor.visit_NameConstant(ast.parse(x).body[0].value) # py3
|
|
|
861d3bc |
- sage: [vis(n) for n in ['True', 'False', 'None']] # py3
|
|
|
eb706cd |
+ sage: import ast, sage.misc.sageinspect as sms
|
|
|
eb706cd |
+ sage: visitor = sms.SageArgSpecVisitor()
|
|
|
eb706cd |
+ sage: vis = lambda x: visitor.visit_Constant(ast.parse(x).body[0].value)
|
|
|
eb706cd |
+ sage: [vis(n) for n in ['True', 'False', 'None']]
|
|
|
861d3bc |
[True, False, None]
|
|
|
861d3bc |
- sage: [type(vis(n)) for n in ['True', 'False', 'None']] # py3
|
|
|
eb706cd |
+ sage: [type(vis(n)) for n in ['True', 'False', 'None']]
|
|
|
861d3bc |
[<type 'bool'>, <type 'bool'>, <type 'NoneType'>]
|
|
|
eb706cd |
+ sage: [vis(s) for s in ['"abstract"', "u'syntax'", r'''r"tr\ee"''']]
|
|
|
eb706cd |
+ ['abstract', u'syntax', 'tr\\ee']
|
|
|
861d3bc |
+ sage: [vis(n) for n in ['123', '0.0']]
|
|
|
eb706cd |
+ [123, 0.0]
|
|
|
861d3bc |
"""
|
|
|
eb706cd |
|
|
|
861d3bc |
return node.value
|
|
|
861d3bc |
@@ -520,57 +521,6 @@ class SageArgSpecVisitor(ast.NodeVisitor
|
|
|
861d3bc |
"""
|
|
|
861d3bc |
return node.arg
|
|
|
eb706cd |
|
|
|
eb706cd |
- def visit_Num(self, node):
|
|
|
eb706cd |
- """
|
|
|
eb706cd |
- Visit a Python AST :class:`ast.Num` node.
|
|
|
eb706cd |
-
|
|
|
eb706cd |
- INPUT:
|
|
|
eb706cd |
-
|
|
|
eb706cd |
- - ``node`` - the node instance to visit
|
|
|
eb706cd |
-
|
|
|
eb706cd |
- OUTPUT:
|
|
|
eb706cd |
-
|
|
|
eb706cd |
- - the number the ``node`` represents
|
|
|
eb706cd |
-
|
|
|
eb706cd |
- EXAMPLES::
|
|
|
eb706cd |
-
|
|
|
eb706cd |
- sage: import ast, sage.misc.sageinspect as sms
|
|
|
eb706cd |
- sage: visitor = sms.SageArgSpecVisitor()
|
|
|
eb706cd |
- sage: vis = lambda x: visitor.visit_Num(ast.parse(x).body[0].value)
|
|
|
eb706cd |
- sage: [vis(n) for n in ['123', '0.0', str(-pi.n())]] # py2
|
|
|
eb706cd |
- [123, 0.0, -3.14159265358979]
|
|
|
eb706cd |
- sage: [vis(n) for n in ['123', '0.0']] # py3
|
|
|
eb706cd |
- [123, 0.0]
|
|
|
eb706cd |
-
|
|
|
eb706cd |
- .. NOTE::
|
|
|
eb706cd |
-
|
|
|
eb706cd |
- On Python 3 negative numbers are parsed first, for some reason, as
|
|
|
eb706cd |
- a UnaryOp node.
|
|
|
eb706cd |
- """
|
|
|
eb706cd |
- return node.n
|
|
|
eb706cd |
-
|
|
|
eb706cd |
- def visit_Str(self, node):
|
|
|
eb706cd |
- r"""
|
|
|
eb706cd |
- Visit a Python AST :class:`ast.Str` node.
|
|
|
eb706cd |
-
|
|
|
eb706cd |
- INPUT:
|
|
|
eb706cd |
-
|
|
|
eb706cd |
- - ``node`` - the node instance to visit
|
|
|
eb706cd |
-
|
|
|
eb706cd |
- OUTPUT:
|
|
|
eb706cd |
-
|
|
|
eb706cd |
- - the string the ``node`` represents
|
|
|
eb706cd |
-
|
|
|
eb706cd |
- EXAMPLES::
|
|
|
eb706cd |
-
|
|
|
eb706cd |
- sage: import ast, sage.misc.sageinspect as sms
|
|
|
eb706cd |
- sage: visitor = sms.SageArgSpecVisitor()
|
|
|
eb706cd |
- sage: vis = lambda x: visitor.visit_Str(ast.parse(x).body[0].value)
|
|
|
eb706cd |
- sage: [vis(s) for s in ['"abstract"', "u'syntax'", r'''r"tr\ee"''']]
|
|
|
eb706cd |
- ['abstract', u'syntax', 'tr\\ee']
|
|
|
eb706cd |
- """
|
|
|
eb706cd |
- return node.s
|
|
|
eb706cd |
-
|
|
|
eb706cd |
def visit_List(self, node):
|
|
|
eb706cd |
"""
|
|
|
eb706cd |
Visit a Python AST :class:`ast.List` node.
|
|
|
55beead |
diff -up src/sage/plot/plot3d/plot3d.py.orig src/sage/plot/plot3d/plot3d.py
|
|
|
861d3bc |
--- src/sage/plot/plot3d/plot3d.py.orig 2020-10-24 11:37:59.000000000 -0600
|
|
|
861d3bc |
+++ src/sage/plot/plot3d/plot3d.py 2020-10-30 14:24:36.813732073 -0600
|
|
|
861d3bc |
@@ -186,7 +186,7 @@ class _Coordinates(object):
|
|
|
55beead |
sage: arb((x+z,y*z,z), z, (x,y))
|
|
|
eaa777c |
Arbitrary Coordinates coordinate transform (z in terms of x, y)
|
|
|
eaa777c |
"""
|
|
|
55beead |
- all_vars = sage_getargspec(self.transform).args[1:]
|
|
|
861d3bc |
+ all_vars = inspect.getfullargspec(self.transform)[0][1:]
|
|
|
eaa777c |
if set(all_vars) != set(indep_vars + [dep_var]):
|
|
|
eaa777c |
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]))))
|
|
|
eaa777c |
self.dep_var = dep_var
|
|
|
0533707 |
diff -up src/sage/rings/integer.pyx.orig src/sage/rings/integer.pyx
|
|
|
861d3bc |
--- src/sage/rings/integer.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
|
|
861d3bc |
+++ src/sage/rings/integer.pyx 2020-10-30 14:03:05.737896928 -0600
|
|
|
861d3bc |
@@ -7093,7 +7093,7 @@ cdef int mpz_set_str_python(mpz_ptr z, c
|
|
|
861d3bc |
x += 1 # Strip spaces
|
|
|
eaa777c |
|
|
|
eaa777c |
# Disallow a sign here
|
|
|
eaa777c |
- if x[0] == '-' or x[0] == '+':
|
|
|
eaa777c |
+ if x[0] == c'-' or x[0] == c'+':
|
|
|
eaa777c |
x = "" # Force an error below
|
|
|
eaa777c |
|
|
|
eaa777c |
assert base >= 2
|
|
|
861d3bc |
diff -up src/sage/rings/polynomial/pbori/pbori.pyx.orig src/sage/rings/polynomial/pbori/pbori.pyx
|
|
|
861d3bc |
--- src/sage/rings/polynomial/pbori/pbori.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
|
|
861d3bc |
+++ src/sage/rings/polynomial/pbori/pbori.pyx 2020-11-05 15:44:02.756454276 -0700
|
|
|
861d3bc |
@@ -4800,8 +4800,7 @@ cdef class PolynomialConstruct:
|
|
|
55beead |
# So, it is just a conversion. [Simon King]
|
|
|
55beead |
return (<BooleanPolynomialRing>ring)._element_constructor_(x)
|
|
|
55beead |
|
|
|
7b54d21 |
- raise TypeError("Cannot generate Boolean polynomial from %s , %s" %
|
|
|
55beead |
- (type(x), type(ring)))
|
|
|
55beead |
+ raise TypeError(f"Cannot generate Boolean polynomial from {type(x)}, {type(ring)}")
|
|
|
55beead |
|
|
|
55beead |
|
|
|
55beead |
cdef class MonomialConstruct:
|
|
|
55beead |
diff -up src/sage/rings/real_mpfi.pyx.orig src/sage/rings/real_mpfi.pyx
|
|
|
861d3bc |
--- src/sage/rings/real_mpfi.pyx.orig 2020-10-30 11:34:28.078977132 -0600
|
|
|
861d3bc |
+++ src/sage/rings/real_mpfi.pyx 2020-10-30 14:03:09.088891288 -0600
|
|
|
861d3bc |
@@ -1955,12 +1955,12 @@ cdef class RealIntervalFieldElement(Ring
|
|
|
eaa777c |
|
|
|
eaa777c |
cdef long digits
|
|
|
eaa777c |
digits = strlen(lower_s)
|
|
|
eaa777c |
- if lower_s[0] == '-':
|
|
|
eaa777c |
+ if lower_s[0] == c'-':
|
|
|
eaa777c |
digits -= 1
|
|
|
eaa777c |
lower_expo -= digits
|
|
|
eaa777c |
|
|
|
eaa777c |
digits = strlen(upper_s)
|
|
|
eaa777c |
- if upper_s[0] == '-':
|
|
|
eaa777c |
+ if upper_s[0] == c'-':
|
|
|
eaa777c |
digits -= 1
|
|
|
eaa777c |
upper_expo -= digits
|
|
|
eaa777c |
|
|
|
861d3bc |
@@ -2129,7 +2129,7 @@ cdef class RealIntervalFieldElement(Ring
|
|
|
eaa777c |
raise MemoryError("Unable to allocate memory for the mantissa of an interval")
|
|
|
eaa777c |
mpz_get_str(tmp_cstr, base, lower_mpz)
|
|
|
eaa777c |
digits = strlen(tmp_cstr)
|
|
|
eaa777c |
- if tmp_cstr[0] == '-':
|
|
|
eaa777c |
+ if tmp_cstr[0] == c'-':
|
|
|
eaa777c |
digits -= 1
|
|
|
eaa777c |
mant_string = bytes_to_str(tmp_cstr+1)
|
|
|
eaa777c |
sign_string = bytes_to_str(b'-')
|
|
|
55beead |
diff -up src/sage/rings/real_mpfr.pyx.orig src/sage/rings/real_mpfr.pyx
|
|
|
861d3bc |
--- src/sage/rings/real_mpfr.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
|
|
861d3bc |
+++ src/sage/rings/real_mpfr.pyx 2020-11-05 15:44:02.769454276 -0700
|
|
|
861d3bc |
@@ -2091,7 +2091,7 @@ cdef class RealNumber(sage.structure.ele
|
|
|
55beead |
if s is NULL:
|
|
|
55beead |
raise RuntimeError("unable to convert an mpfr number to a string")
|
|
|
55beead |
# t contains just digits (no sign, decimal point or exponent)
|
|
|
55beead |
- if s[0] == '-':
|
|
|
55beead |
+ if s[0] == c'-':
|
|
|
55beead |
sgn = "-"
|
|
|
55beead |
t = char_to_str(s + 1)
|
|
|
55beead |
else:
|
|
|
55beead |
diff -up src/sage/structure/sage_object.pyx.orig src/sage/structure/sage_object.pyx
|
|
|
861d3bc |
--- src/sage/structure/sage_object.pyx.orig 2020-10-24 11:37:59.000000000 -0600
|
|
|
861d3bc |
+++ src/sage/structure/sage_object.pyx 2020-10-30 14:03:09.091891283 -0600
|
|
|
861d3bc |
@@ -688,7 +688,7 @@ cdef class SageObject:
|
|
|
55beead |
try:
|
|
|
55beead |
s = self._interface_init_(I)
|
|
|
55beead |
except Exception:
|
|
|
55beead |
- raise NotImplementedError("coercion of object %s to %s not implemented:\n%s\n%s" % (repr(self), I))
|
|
|
55beead |
+ raise NotImplementedError(f"coercion of object {repr(self)} to {I} not implemented")
|
|
|
55beead |
X = I(s)
|
|
|
55beead |
if c:
|
|
|
55beead |
try:
|
|
|
55beead |
diff -up src/sage/symbolic/expression.pyx.orig src/sage/symbolic/expression.pyx
|
|
|
861d3bc |
--- src/sage/symbolic/expression.pyx.orig 2020-10-30 12:10:19.747169301 -0600
|
|
|
861d3bc |
+++ src/sage/symbolic/expression.pyx 2020-10-30 14:03:09.095891276 -0600
|
|
|
861d3bc |
@@ -13071,7 +13071,7 @@ cdef class hold_class:
|
|
|
eaa777c |
sage: SR(2)^5
|
|
|
eaa777c |
32
|
|
|
eaa777c |
"""
|
|
|
eaa777c |
- g_set_state('hold', True)
|
|
|
eaa777c |
+ g_set_state(b'hold', True)
|
|
|
eaa777c |
|
|
|
eaa777c |
def __exit__(self, *args):
|
|
|
eaa777c |
"""
|
|
|
861d3bc |
@@ -13084,7 +13084,7 @@ cdef class hold_class:
|
|
|
eaa777c |
sage: SR(2)^5
|
|
|
eaa777c |
32
|
|
|
eaa777c |
"""
|
|
|
eaa777c |
- g_set_state('hold', False)
|
|
|
eaa777c |
+ g_set_state(b'hold', False)
|
|
|
eaa777c |
|
|
|
eaa777c |
def start(self):
|
|
|
eaa777c |
"""
|