After some windows update, it does not work for me anymore... :( Sage starts, the notebook loads, but once I try to do anything (i.e. create a new worksheet or open an existing one) I get a server error (on the browser) and some '[Errno 12] Cannot allocate memory' on the terminal. As suggested at some previous post, I increased the amount of virtual memory, but nothing changed.
On Friday, December 16, 2016 at 2:09:55 AM UTC+3, Bill Hart wrote: > > It works for me too! > > On Thursday, 15 December 2016 07:40:11 UTC+1, GK wrote: >> >> Hi again, thanks to the insight. I managed to successfully run sage in >> WSL. notebook(automatic_login='False') triggered indeed a different >> reaction, but again did not work. The trick was to run bash on ubuntu on >> windows as administrator and run sage. Afterwards all seem to work even >> without running Bash as administrator. (except that sage does not manage to >> open the browser, I do that manually). Also, I have added the line >> >> 127.0.0.1 localhost YOUR_MACHINE_NAME_HERE >> >> in /etc/hosts, which may be necessary for the sage server to start. >> >> On Saturday, December 10, 2016 at 1:51:46 AM UTC+3, Dima Pasechnik wrote: >>> >>> >>> >>> On Friday, December 9, 2016 at 10:13:03 PM UTC, Bill Hart wrote: >>>> >>>> Ah I see. I assumed it would also try to spawn a browser or something. >>>> >>> >>> the default ( notebook()) is indeed to try to open a browser/browser tab >>> to show the URL served by the server, whereas >>> >>> notebook(automatic_login=False) >>> >>> will just run the server, and let the user to do the rest (connect to >>> the URL using a browser). >>> >>> >>> >>>> >>>> On the other hand, I understand some of the networking stuff is still >>>> not completed. You can of course use wget and the like so it can't be too >>>> broken. >>>> >>>> Bill. >>>> >>>> On Friday, 9 December 2016 15:15:43 UTC+1, Dima Pasechnik wrote: >>>>> >>>>> >>>>> >>>>> On Friday, December 9, 2016 at 12:48:30 PM UTC, Bill Hart wrote: >>>>>> >>>>>> The Sage Notebook isn't likely to work under the WSL. It's a text >>>>>> console environment only. Microsoft intended it mainly to provide Linux >>>>>> development tools to people, not as a way of running graphical >>>>>> applications. >>>>>> >>>>> >>>>> Hmm, no, all what gets to run here is a web server (on a local port) >>>>> talking to a Sage backend. Graphics happens in a web browser, so it >>>>> should >>>>> not be a problem of being "text console only". >>>>> >>>>> >>>>>> >>>>>> You can probably fix the memory allocation issues though. You likely >>>>>> need to increase the Pagefile system size. Windows allocates a >>>>>> ridiculously >>>>>> small amount of memory for this. >>>>>> >>>>>> There's a walkthrough here: >>>>>> >>>>>> http://www.softwareok.com/?seite=faq-Windows-10&faq=52 >>>>>> >>>>>> I use 16GB on my system (of course you need enough disk space). >>>>>> >>>>>> Bill. >>>>>> >>>>>> On Monday, 5 December 2016 11:24:21 UTC+1, GK wrote: >>>>>>> >>>>>>> Hi from me. My (more recent) experience is similar but not >>>>>>> identical. I install sage from the ppa and I am having problems. Sage >>>>>>> loads >>>>>>> and seems to be working, but: >>>>>>> >>>>>>> >>>>>>> ┌────────────────────────────────────────────────────────────────────┐ >>>>>>> │ SageMath version 7.3, Release Date: 2016-08-04 >>>>>>> │ >>>>>>> │ Type "notebook()" for the browser-based notebook interface. >>>>>>> │ >>>>>>> │ Type "help()" for help. >>>>>>> │ >>>>>>> >>>>>>> └────────────────────────────────────────────────────────────────────┘ >>>>>>> sage: gp.eval('2+2') >>>>>>> >>>>>>> --------------------------------------------------------------------------- >>>>>>> OSError Traceback (most recent >>>>>>> call last) >>>>>>> <ipython-input-1-e5d4083fb83e> in <module>() >>>>>>> ----> 1 gp.eval('2+2') >>>>>>> >>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/interfaces/expect.pyc >>>>>>> >>>>>>> in eval(self, code, strip, synchronize, locals, allow_use_file, >>>>>>> split_lines, **kwds) >>>>>>> 1292 elif split_lines: >>>>>>> 1293 return '\n'.join([self._eval_line(L, >>>>>>> allow_use_file=allow_use_file, **kwds) >>>>>>> -> 1294 for L in >>>>>>> code.split('\n') if L != '']) >>>>>>> 1295 else: >>>>>>> 1296 return self._eval_line(code, >>>>>>> allow_use_file=allow_use_file, **kwds) >>>>>>> >>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/interfaces/gp.pyc >>>>>>> >>>>>>> in _eval_line(self, line, allow_use_file, wait_for_prompt, >>>>>>> restart_if_needed) >>>>>>> 439 a = Expect._eval_line(self, line, >>>>>>> 440 allow_use_file=allow_use_file, >>>>>>> --> 441 >>>>>>> wait_for_prompt=wait_for_prompt) >>>>>>> 442 if a.find("the PARI stack overflows") != -1: >>>>>>> 443 verbose("automatically doubling the PARI stack >>>>>>> and re-executing current input line") >>>>>>> >>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/interfaces/expect.pyc >>>>>>> >>>>>>> in _eval_line(self, line, allow_use_file, wait_for_prompt, >>>>>>> restart_if_needed) >>>>>>> 903 try: >>>>>>> 904 if self._expect is None: >>>>>>> --> 905 self._start() >>>>>>> 906 E = self._expect >>>>>>> 907 try: >>>>>>> >>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/interfaces/gp.pyc >>>>>>> >>>>>>> in _start(self, alt_message, block_during_init) >>>>>>> 239 >>>>>>> 240 def _start(self, alt_message=None, >>>>>>> block_during_init=True): >>>>>>> --> 241 Expect._start(self, alt_message, block_during_init) >>>>>>> 242 # disable timer >>>>>>> 243 self._eval_line('default(timer,0);') >>>>>>> >>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/interfaces/expect.pyc >>>>>>> >>>>>>> in _start(self, alt_message, block_during_init) >>>>>>> 480 env=pexpect_env, >>>>>>> 481 name=self._repr_(), >>>>>>> --> 482 quit_string=self._quit_string()) >>>>>>> 483 except (ExceptionPexpect, pexpect.EOF) as e: >>>>>>> 484 # Change pexpect errors to RuntimeError >>>>>>> >>>>>>> sage/interfaces/sagespawn.pyx in >>>>>>> sage.interfaces.sagespawn.SageSpawn.__init__ >>>>>>> (/usr/lib/sagemath//src/build/cythonized/sage/interfaces/sagespawn.c:1446)() >>>>>>> >>>>>>> sage/interfaces/sagespawn.pyx in >>>>>>> sage.interfaces.sagespawn.SageSpawn.__init__ >>>>>>> (/usr/lib/sagemath//src/build/cythonized/sage/interfaces/sagespawn.c:1398)() >>>>>>> >>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/pexpect/pty_spawn.pyc >>>>>>> >>>>>>> in __init__(self, command, args, timeout, maxread, searchwindowsize, >>>>>>> logfile, cwd, env, ignore_sighup, echo, preexec_fn, encoding, >>>>>>> codec_errors, >>>>>>> dimensions) >>>>>>> 196 self.name = '<pexpect factory incomplete>' >>>>>>> 197 else: >>>>>>> --> 198 self._spawn(command, args, preexec_fn, >>>>>>> dimensions) >>>>>>> 199 >>>>>>> 200 def __str__(self): >>>>>>> >>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/pexpect/pty_spawn.pyc >>>>>>> >>>>>>> in _spawn(self, command, args, preexec_fn, dimensions) >>>>>>> 296 >>>>>>> 297 self.ptyproc = self._spawnpty(self.args, >>>>>>> env=self.env, >>>>>>> --> 298 cwd=self.cwd, **kwargs) >>>>>>> 299 >>>>>>> 300 self.pid = self.ptyproc.pid >>>>>>> >>>>>>> sage/interfaces/sagespawn.pyx in >>>>>>> sage.interfaces.sagespawn.SageSpawn._spawnpty >>>>>>> (/usr/lib/sagemath//src/build/cythonized/sage/interfaces/sagespawn.c:1631)() >>>>>>> >>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/ptyprocess/ptyprocess.pyc >>>>>>> >>>>>>> in spawn(cls, argv, cwd, env, echo, preexec_fn, dimensions) >>>>>>> 218 >>>>>>> 219 if use_native_pty_fork: >>>>>>> --> 220 pid, fd = pty.fork() >>>>>>> 221 else: >>>>>>> 222 # Use internal fork_pty, for Solaris >>>>>>> >>>>>>> /usr/lib/sagemath/local/lib/python/pty.pyc in fork() >>>>>>> 106 >>>>>>> 107 master_fd, slave_fd = openpty() >>>>>>> --> 108 pid = os.fork() >>>>>>> 109 if pid == CHILD: >>>>>>> 110 # Establish a new session. >>>>>>> >>>>>>> OSError: [Errno 12] Cannot allocate memory >>>>>>> sage: >>>>>>> >>>>>>> and I cannot load the notebook interface: >>>>>>> >>>>>>> sage: notebook() >>>>>>> >>>>>>> --------------------------------------------------------------------------- >>>>>>> EnvironmentError Traceback (most recent >>>>>>> call last) >>>>>>> <ipython-input-2-3728cb3d7c7d> in <module>() >>>>>>> ----> 1 notebook() >>>>>>> >>>>>>> sage/misc/lazy_import.pyx in >>>>>>> sage.misc.lazy_import.LazyImport.__call__ >>>>>>> (/usr/lib/sagemath//src/build/cythonized/sage/misc/lazy_import.c:3635)() >>>>>>> >>>>>>> sage/misc/lazy_import.pyx in >>>>>>> sage.misc.lazy_import.LazyImport._get_object >>>>>>> (/usr/lib/sagemath//src/build/cythonized/sage/misc/lazy_import.c:2242)() >>>>>>> >>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/sagenb/notebook/notebook_object.py >>>>>>> >>>>>>> in <module>() >>>>>>> 15 import time, os, shutil, signal, tempfile >>>>>>> 16 >>>>>>> ---> 17 import notebook as _notebook >>>>>>> 18 >>>>>>> 19 import run_notebook >>>>>>> >>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/sagenb/notebook/notebook.py >>>>>>> >>>>>>> in <module>() >>>>>>> 33 >>>>>>> 34 # Sage libraries >>>>>>> ---> 35 from sagenb.misc.misc import (pad_zeros, cputime, tmp_dir, >>>>>>> load, save, >>>>>>> 36 ignore_nonexistent_files, >>>>>>> unicode_str) >>>>>>> 37 >>>>>>> >>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/sagenb/misc/misc.py >>>>>>> in <module>() >>>>>>> 379 >>>>>>> 380 try: >>>>>>> --> 381 from sage.misc.cython import cython >>>>>>> 382 except ImportError: >>>>>>> 383 @stub >>>>>>> >>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/misc/cython.py >>>>>>> in <module>() >>>>>>> 28 >>>>>>> 29 # CBLAS can be one of multiple implementations >>>>>>> ---> 30 cblas_pc = pkgconfig.parse('cblas') >>>>>>> 31 cblas_libs = list(cblas_pc['libraries']) >>>>>>> 32 cblas_library_dirs = list(cblas_pc['library_dirs']) >>>>>>> >>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/pkgconfig-1.1.0-py2.7.egg/pkgconfig/pkgconfig.py >>>>>>> >>>>>>> in parse(packages) >>>>>>> 185 >>>>>>> 186 for package in packages.split(): >>>>>>> --> 187 for k, v in parse_package(package).items(): >>>>>>> 188 result[k].update(v) >>>>>>> 189 >>>>>>> >>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/pkgconfig-1.1.0-py2.7.egg/pkgconfig/pkgconfig.py >>>>>>> >>>>>>> in parse_package(package) >>>>>>> 158 >>>>>>> 159 # Execute the query to pkg-config and clean the >>>>>>> result. >>>>>>> --> 160 out = _query(package, '--cflags --libs') >>>>>>> 161 out = out.replace('\\"', '') >>>>>>> 162 >>>>>>> >>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/pkgconfig-1.1.0-py2.7.egg/pkgconfig/pkgconfig.py >>>>>>> >>>>>>> in _wrapper(*args, **kwargs) >>>>>>> 56 >>>>>>> Enter code here... >>>>>>> >>>>>>> >>>>>>> return func(*args, **kwargs) >>>>>>> 57 except OSError: >>>>>>> ---> 58 raise EnvironmentError("pkg-config is not >>>>>>> installed") >>>>>>> 59 >>>>>>> 60 return _wrapper >>>>>>> >>>>>>> EnvironmentError: pkg-config is not installed >>>>>>> sage: >>>>>>> >>>>>>> while I do have pkg-config installed. >>>>>>> >>>>>>> On Wednesday, May 18, 2016 at 5:07:02 PM UTC+3, William wrote: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On Wednesday, May 18, 2016, Brian Beavers <drbeav...@gmail.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Looks like there's more going on than just a lack of pty. Here's >>>>>>>>> the result: >>>>>>>>> >>>>>>>>> >>>>>>>> Well that is just another test of pty... >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> sage: gp.eval('2+2') >>>>>>>>> >>>>>>>>> --------------------------------------------------------------------------- >>>>>>>>> OSError Traceback (most recent >>>>>>>>> call last) >>>>>>>>> <ipython-input-1-e5d4083fb83e> in <module>() >>>>>>>>> ----> 1 gp.eval('2+2') >>>>>>>>> >>>>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/interfaces/expect.pyc >>>>>>>>> >>>>>>>>> in eval(self, code, strip, synchronize, locals, allow_use_file, >>>>>>>>> split_lines, **kwds) >>>>>>>>> 1237 elif split_lines: >>>>>>>>> 1238 return '\n'.join([self._eval_line(L, >>>>>>>>> allow_use_file=allow_use_file, **kwds) >>>>>>>>> -> 1239 for L in >>>>>>>>> code.split('\n') if L != '']) >>>>>>>>> 1240 else: >>>>>>>>> 1241 return self._eval_line(code, >>>>>>>>> allow_use_file=allow_use_file, **kwds) >>>>>>>>> >>>>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/interfaces/gp.pyc >>>>>>>>> >>>>>>>>> in _eval_line(self, line, allow_use_file, wait_for_prompt, >>>>>>>>> restart_if_needed) >>>>>>>>> 437 a = Expect._eval_line(self, line, >>>>>>>>> 438 >>>>>>>>> allow_use_file=allow_use_file, >>>>>>>>> --> 439 >>>>>>>>> wait_for_prompt=wait_for_prompt) >>>>>>>>> 440 if a.find("the PARI stack overflows") != -1: >>>>>>>>> 441 verbose("automatically doubling the PARI stack >>>>>>>>> and re-executing current input line") >>>>>>>>> >>>>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/interfaces/expect.pyc >>>>>>>>> >>>>>>>>> in _eval_line(self, line, allow_use_file, wait_for_prompt, >>>>>>>>> restart_if_needed) >>>>>>>>> 848 try: >>>>>>>>> 849 if self._expect is None: >>>>>>>>> --> 850 self._start() >>>>>>>>> 851 E = self._expect >>>>>>>>> 852 try: >>>>>>>>> >>>>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/interfaces/gp.pyc >>>>>>>>> >>>>>>>>> in _start(self, alt_message, block_during_init) >>>>>>>>> 237 >>>>>>>>> 238 def _start(self, alt_message=None, >>>>>>>>> block_during_init=True): >>>>>>>>> --> 239 Expect._start(self, alt_message, block_during_init) >>>>>>>>> 240 # disable timer >>>>>>>>> 241 self._eval_line('default(timer,0);') >>>>>>>>> >>>>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/sage/interfaces/expect.pyc >>>>>>>>> >>>>>>>>> in _start(self, alt_message, block_during_init) >>>>>>>>> 423 env=pexpect_env, >>>>>>>>> 424 name=self._repr_(), >>>>>>>>> --> 425 quit_string=self._quit_string()) >>>>>>>>> 426 except (ExceptionPexpect, pexpect.EOF) as e: >>>>>>>>> 427 # Change pexpect errors to RuntimeError >>>>>>>>> >>>>>>>>> sage/interfaces/sagespawn.pyx in >>>>>>>>> sage.interfaces.sagespawn.SageSpawn.__init__ >>>>>>>>> (/usr/lib/sagemath//src/build/cythonized/sage/interfaces/sagespawn.c:1331)() >>>>>>>>> >>>>>>>>> sage/interfaces/sagespawn.pyx in >>>>>>>>> sage.interfaces.sagespawn.SageSpawn.__init__ >>>>>>>>> (/usr/lib/sagemath//src/build/cythonized/sage/interfaces/sagespawn.c:1284)() >>>>>>>>> >>>>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/pexpect/pty_spawn.pyc >>>>>>>>> >>>>>>>>> in __init__(self, command, args, timeout, maxread, searchwindowsize, >>>>>>>>> logfile, cwd, env, ignore_sighup, echo, preexec_fn, encoding, >>>>>>>>> codec_errors, >>>>>>>>> dimensions) >>>>>>>>> 191 self.name = '<pexpect factory incomplete>' >>>>>>>>> 192 else: >>>>>>>>> --> 193 self._spawn(command, args, preexec_fn, >>>>>>>>> dimensions) >>>>>>>>> 194 >>>>>>>>> 195 def __str__(self): >>>>>>>>> >>>>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/pexpect/pty_spawn.pyc >>>>>>>>> >>>>>>>>> in _spawn(self, command, args, preexec_fn, dimensions) >>>>>>>>> 286 >>>>>>>>> 287 self.ptyproc = self._spawnpty(self.args, >>>>>>>>> env=self.env, >>>>>>>>> --> 288 cwd=self.cwd, >>>>>>>>> **kwargs) >>>>>>>>> 289 >>>>>>>>> 290 self.pid = self.ptyproc.pid >>>>>>>>> >>>>>>>>> sage/interfaces/sagespawn.pyx in >>>>>>>>> sage.interfaces.sagespawn.SageSpawn._spawnpty >>>>>>>>> (/usr/lib/sagemath//src/build/cythonized/sage/interfaces/sagespawn.c:1520)() >>>>>>>>> >>>>>>>>> /usr/lib/sagemath/local/lib/python2.7/site-packages/ptyprocess/ptyprocess.pyc >>>>>>>>> >>>>>>>>> in spawn(cls, argv, cwd, env, echo, preexec_fn, dimensions) >>>>>>>>> 218 >>>>>>>>> 219 if use_native_pty_fork: >>>>>>>>> --> 220 pid, fd = pty.fork() >>>>>>>>> 221 else: >>>>>>>>> 222 # Use internal fork_pty, for Solaris >>>>>>>>> >>>>>>>>> /usr/lib/sagemath/local/lib/python/pty.pyc in fork() >>>>>>>>> 105 return pid, fd >>>>>>>>> 106 >>>>>>>>> --> 107 master_fd, slave_fd = openpty() >>>>>>>>> 108 pid = os.fork() >>>>>>>>> 109 if pid == CHILD: >>>>>>>>> >>>>>>>>> /usr/lib/sagemath/local/lib/python/pty.pyc in openpty() >>>>>>>>> 27 except (AttributeError, OSError): >>>>>>>>> 28 pass >>>>>>>>> ---> 29 master_fd, slave_name = _open_terminal() >>>>>>>>> 30 slave_fd = slave_open(slave_name) >>>>>>>>> 31 return master_fd, slave_fd >>>>>>>>> >>>>>>>>> /usr/lib/sagemath/local/lib/python/pty.pyc in _open_terminal() >>>>>>>>> 68 continue >>>>>>>>> 69 return (fd, '/dev/tty' + x + y) >>>>>>>>> ---> 70 raise os.error, 'out of pty devices' >>>>>>>>> 71 >>>>>>>>> 72 def slave_open(tty_name): >>>>>>>>> >>>>>>>>> OSError: out of pty devices >>>>>>>>> >>>>>>>>> >>>>>>>>> Brian Beavers, Ph.D., Associate Professor >>>>>>>>> Department of Mathematics & Statistics >>>>>>>>> Stephen F. Austin State University >>>>>>>>> >>>>>>>>> On Wed, May 18, 2016 at 8:50 AM, William Stein <wst...@gmail.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Wednesday, May 18, 2016, Brian Beavers <drbeavers...@gmail.com> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> I've discovered why the notebook server (and administrative >>>>>>>>>>> pages within) loads but notebooks do not load: WSL does not yet >>>>>>>>>>> suppot pty. >>>>>>>>>>> When I try to create a worksheet, back in the terminal Sage throws >>>>>>>>>>> an error >>>>>>>>>>> that it is out of pty instances. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> What happens if you do >>>>>>>>>> >>>>>>>>>> gp.eval('2+2') >>>>>>>>>> >>>>>>>>>> in the terminal? >>>>>>>>>> >>>>>>>>>> Also, unlike sagenb, jupyter doesn't use pty's so it won't have >>>>>>>>>> this obstruction. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Brian Beavers, Ph.D., Associate Professor >>>>>>>>>>> Department of Mathematics & Statistics >>>>>>>>>>> Stephen F. Austin State University >>>>>>>>>>> >>>>>>>>>>> On Mon, May 16, 2016 at 2:31 AM, Dima Pasechnik < >>>>>>>>>>> dimp...@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> one can do graphics in a browser running on the host, so this >>>>>>>>>>>> is not really a big limitation. >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> 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. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> -- >>>>>>>>>>> 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. >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> Sent from my massive iPhone 6 plus. >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> 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. >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> -- >>>>>>>>> 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. >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Sent from my massive iPhone 6 plus. >>>>>>>> >>>>>>> -- 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.