On Sage 8.6 with Python 2, the following command produces the expected 
result (namely, a sage.interfaces.gap.GapElement):

sage: gap('0')
0

whereas in Sage 8.6 with Python 3 I get the following error:

sage: gap('0')
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
_start(self)
   1239                 # been upgraded.
-> 1240                 if os.path.getmtime(WORKSPACE) < timestamp():
   1241                     raise OSError("GAP workspace too old")

/sage/local/lib/python3.6/genericpath.py in getmtime(filename)
     54     """Return the last modification time of a file, reported by 
os.stat()."""
---> 55     return os.stat(filename).st_mtime
     56 

FileNotFoundError: [Errno 2] No such file or directory: 
'/home/sage/.sage/gap/gap-workspace-0x752c50fd99b2032f'

During handling of the above exception, another exception occurred:

UnicodeDecodeError                        Traceback (most recent call last)
/sage/local/lib/python3.6/site-packages/sage/interfaces/expect.py in 
__init__(self, parent, value, is_name, name)
   1436             try:
-> 1437                 self._name = parent._create(value, name=name)
   1438             # Convert ValueError and RuntimeError to TypeError for

/sage/local/lib/python3.6/site-packages/sage/interfaces/interface.py in 
_create(self, value, name)
    483         name = self._next_var_name() if name is None else name
--> 484         self.set(name, value)
    485         return name

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in set(self, 
var, value)
   1413         cmd = ('%s:=%s;;' % (var, value)).replace('\n','')
-> 1414         self._eval_line(cmd, allow_use_file=True)
   1415 

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
_eval_line(self, line, allow_use_file, wait_for_prompt, restart_if_needed)
    742             if self._expect is None:
--> 743                 self._start()
    744             E = self._expect

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
_start(self)
   1246             except OSError:
-> 1247                 gap_reset_workspace(verbose=False)
   1248 

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
gap_reset_workspace(max_workspace_size, verbose)
   1578     g = Gap(use_workspace_cache=False, max_workspace_size=None)
-> 1579     g.eval('SetUserPreference("HistoryMaxLines", 30)')
   1580     from sage.tests.gap_packages import all_installed_packages

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
eval(self, x, newlines, strip, split_lines, **kwds)
    582                 input_line += ';'
--> 583         result = Expect.eval(self, input_line, **kwds)
    584         if not newlines:

/sage/local/lib/python3.6/site-packages/sage/interfaces/expect.py in 
eval(self, code, strip, synchronize, locals, allow_use_file, split_lines, 
**kwds)
   1350                     return '\n'.join([self._eval_line(L, 
allow_use_file=allow_use_file, **kwds)
-> 1351                                         for L in code.split('\n') 
if L != ''])
   1352                 else:

/sage/local/lib/python3.6/site-packages/sage/interfaces/expect.py in 
<listcomp>(.0)
   1350                     return '\n'.join([self._eval_line(L, 
allow_use_file=allow_use_file, **kwds)
-> 1351                                         for L in code.split('\n') 
if L != ''])
   1352                 else:

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
_eval_line(self, line, allow_use_file, wait_for_prompt, restart_if_needed)
    742             if self._expect is None:
--> 743                 self._start()
    744             E = self._expect

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
_start(self)
   1273         # set random seed
-> 1274         self.set_seed(self._seed)
   1275 

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
set_seed(self, seed)
   1178             seed = self.rand_seed()
-> 1179         self.eval("Reset(GlobalMersenneTwister,%d)" % seed)
   1180         self.eval("Reset(GlobalRandomSource,%d)" % seed)

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
eval(self, x, newlines, strip, split_lines, **kwds)
    582                 input_line += ';'
--> 583         result = Expect.eval(self, input_line, **kwds)
    584         if not newlines:

/sage/local/lib/python3.6/site-packages/sage/interfaces/expect.py in 
eval(self, code, strip, synchronize, locals, allow_use_file, split_lines, 
**kwds)
   1350                     return '\n'.join([self._eval_line(L, 
allow_use_file=allow_use_file, **kwds)
-> 1351                                         for L in code.split('\n') 
if L != ''])
   1352                 else:

/sage/local/lib/python3.6/site-packages/sage/interfaces/expect.py in 
<listcomp>(.0)
   1350                     return '\n'.join([self._eval_line(L, 
allow_use_file=allow_use_file, **kwds)
-> 1351                                         for L in code.split('\n') 
if L != ''])
   1352                 else:

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
_eval_line(self, line, allow_use_file, wait_for_prompt, restart_if_needed)
    754             # them (on Python 3), currently just using the default 
encoding
--> 755             normal, error = bytes_to_str(normal), 
bytes_to_str(error)
    756 

/sage/local/lib/python3.6/site-packages/sage/cpython/string.pxd in 
sage.cpython.string.bytes_to_str 
(build/cythonized/sage/cpython/string.c:1509)()
     30 
---> 31 cpdef inline str bytes_to_str(b, encoding=None, errors=None):
     32     r"""

/sage/local/lib/python3.6/site-packages/sage/cpython/string.pxd in 
sage.cpython.string.bytes_to_str 
(build/cythonized/sage/cpython/string.c:1393)()
     59     else:
---> 60         return _cstr_to_str(<bytes>b, encoding, errors)
     61 

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 15: 
invalid start byte

During handling of the above exception, another exception occurred:

TypeError                                 Traceback (most recent call last)
<ipython-input-1-051215b8675e> in <module>()
----> 1 gap('0')

/sage/local/lib/python3.6/site-packages/sage/interfaces/interface.py in 
__call__(self, x, name)
    286 
    287         if isinstance(x, string_types):
--> 288             return cls(self, x, name=name)
    289         try:
    290             return self._coerce_from_special_method(x)

/sage/local/lib/python3.6/site-packages/sage/interfaces/expect.py in 
__init__(self, parent, value, is_name, name)
   1440             except (RuntimeError, ValueError) as x:
   1441                 self._session_number = -1
-> 1442                 raise_(TypeError, TypeError(*x.args), 
sys.exc_info()[2])
   1443             except BaseException:
   1444                 self._session_number = -1

/sage/local/lib/python3.6/site-packages/six.py in reraise(tp, value, tb)
    690                 value = tp()
    691             if value.__traceback__ is not tb:
--> 692                 raise value.with_traceback(tb)
    693             raise value
    694         finally:

/sage/local/lib/python3.6/site-packages/sage/interfaces/expect.py in 
__init__(self, parent, value, is_name, name)
   1435         else:
   1436             try:
-> 1437                 self._name = parent._create(value, name=name)
   1438             # Convert ValueError and RuntimeError to TypeError for
   1439             # coercion to work properly.

/sage/local/lib/python3.6/site-packages/sage/interfaces/interface.py in 
_create(self, value, name)
    482     def _create(self, value, name=None):
    483         name = self._next_var_name() if name is None else name
--> 484         self.set(name, value)
    485         return name
    486 

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in set(self, 
var, value)
   1412         """
   1413         cmd = ('%s:=%s;;' % (var, value)).replace('\n','')
-> 1414         self._eval_line(cmd, allow_use_file=True)
   1415 
   1416     def get(self, var, use_file=False):

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
_eval_line(self, line, allow_use_file, wait_for_prompt, restart_if_needed)
    741         try:
    742             if self._expect is None:
--> 743                 self._start()
    744             E = self._expect
    745             #import pdb; pdb.set_trace()

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
_start(self)
   1245                 os.utime(WORKSPACE, None)
   1246             except OSError:
-> 1247                 gap_reset_workspace(verbose=False)
   1248 
   1249         global first_try

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
gap_reset_workspace(max_workspace_size, verbose)
   1577     # Create new workspace with filename WORKSPACE
   1578     g = Gap(use_workspace_cache=False, max_workspace_size=None)
-> 1579     g.eval('SetUserPreference("HistoryMaxLines", 30)')
   1580     from sage.tests.gap_packages import all_installed_packages
   1581     for pkg in all_installed_packages():

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
eval(self, x, newlines, strip, split_lines, **kwds)
    581             if not input_line.endswith(';'):
    582                 input_line += ';'
--> 583         result = Expect.eval(self, input_line, **kwds)
    584         if not newlines:
    585             result = result.replace("\\\n","")

/sage/local/lib/python3.6/site-packages/sage/interfaces/expect.py in 
eval(self, code, strip, synchronize, locals, allow_use_file, split_lines, 
**kwds)
   1349                 elif split_lines:
   1350                     return '\n'.join([self._eval_line(L, 
allow_use_file=allow_use_file, **kwds)
-> 1351                                         for L in code.split('\n') 
if L != ''])
   1352                 else:
   1353                     return self._eval_line(code, 
allow_use_file=allow_use_file, **kwds)

/sage/local/lib/python3.6/site-packages/sage/interfaces/expect.py in 
<listcomp>(.0)
   1349                 elif split_lines:
   1350                     return '\n'.join([self._eval_line(L, 
allow_use_file=allow_use_file, **kwds)
-> 1351                                         for L in code.split('\n') 
if L != ''])
   1352                 else:
   1353                     return self._eval_line(code, 
allow_use_file=allow_use_file, **kwds)

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
_eval_line(self, line, allow_use_file, wait_for_prompt, restart_if_needed)
    741         try:
    742             if self._expect is None:
--> 743                 self._start()
    744             E = self._expect
    745             #import pdb; pdb.set_trace()

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
_start(self)
   1272 
   1273         # set random seed
-> 1274         self.set_seed(self._seed)
   1275 
   1276     def _function_class(self):

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
set_seed(self, seed)
   1177         if seed is None:
   1178             seed = self.rand_seed()
-> 1179         self.eval("Reset(GlobalMersenneTwister,%d)" % seed)
   1180         self.eval("Reset(GlobalRandomSource,%d)" % seed)
   1181         self._seed = seed

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
eval(self, x, newlines, strip, split_lines, **kwds)
    581             if not input_line.endswith(';'):
    582                 input_line += ';'
--> 583         result = Expect.eval(self, input_line, **kwds)
    584         if not newlines:
    585             result = result.replace("\\\n","")

/sage/local/lib/python3.6/site-packages/sage/interfaces/expect.py in 
eval(self, code, strip, synchronize, locals, allow_use_file, split_lines, 
**kwds)
   1349                 elif split_lines:
   1350                     return '\n'.join([self._eval_line(L, 
allow_use_file=allow_use_file, **kwds)
-> 1351                                         for L in code.split('\n') 
if L != ''])
   1352                 else:
   1353                     return self._eval_line(code, 
allow_use_file=allow_use_file, **kwds)

/sage/local/lib/python3.6/site-packages/sage/interfaces/expect.py in 
<listcomp>(.0)
   1349                 elif split_lines:
   1350                     return '\n'.join([self._eval_line(L, 
allow_use_file=allow_use_file, **kwds)
-> 1351                                         for L in code.split('\n') 
if L != ''])
   1352                 else:
   1353                     return self._eval_line(code, 
allow_use_file=allow_use_file, **kwds)

/sage/local/lib/python3.6/site-packages/sage/interfaces/gap.py in 
_eval_line(self, line, allow_use_file, wait_for_prompt, restart_if_needed)
    753             # garbage should be filtered out by this point); here 
we decode
    754             # them (on Python 3), currently just using the default 
encoding
--> 755             normal, error = bytes_to_str(normal), 
bytes_to_str(error)
    756 
    757             if len(error):

/sage/local/lib/python3.6/site-packages/sage/cpython/string.pxd in 
sage.cpython.string.bytes_to_str 
(build/cythonized/sage/cpython/string.c:1509)()
     29 
     30 
---> 31 cpdef inline str bytes_to_str(b, encoding=None, errors=None):
     32     r"""
     33     Convert ``bytes`` to ``str``.

/sage/local/lib/python3.6/site-packages/sage/cpython/string.pxd in 
sage.cpython.string.bytes_to_str 
(build/cythonized/sage/cpython/string.c:1393)()
     58         return <str>b
     59     else:
---> 60         return _cstr_to_str(<bytes>b, encoding, errors)
     61 
     62 

TypeError: ('utf-8', b'[ <...snipped...>\ngap> ', 15, 16, 'invalid start 
byte')


Possibly this is related to (or a subset of)

https://trac.sagemath.org/ticket/26992

though the command "libgap('0')" has no problems.  Is the plan to make 
"gap" and alias of (or a wrapper for) "libgap" in future releases? 

Thanks,

Nathan

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to