[sage-devel] Re: C question
Michel [EMAIL PROTECTED] writes: At the risk of saying something really stupid (as I am relatively clueless in the matter)it seems LD_PRELOAD is often used to achieve the effect you want. The same thought crossed my mind, but not wanting to do the followup reading I kept my mouth shut :) Nick --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: C question
Thanks, I had forgot about that sort of thing and it might work. I'm not sure because some of the libraries linked in are static. My python module links against libsuperlu.a which is static which links against libblas. Because libsuperlu.a is static I'm not sure whether the static or dynamic version of libblas is linked against. A followup question. I want to find the exact name of the function that calls exit, however I can't figure out how to make gdb tell me that because the program doesn't crash it exits normally. Anyone know a way to find the name of the last function called before a program exits. Josh On Jun 5, 12:18 am, Nick Alexander [EMAIL PROTECTED] wrote: Michel [EMAIL PROTECTED] writes: At the risk of saying something really stupid (as I am relatively clueless in the matter)it seems LD_PRELOAD is often used to achieve the effect you want. The same thought crossed my mind, but not wanting to do the followup reading I kept my mouth shut :) Nick --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: Sage in chroot
Well this problem I could solve. They were caused by an /etc/mtab file which was out of sync, making mount -a believe some filesystems were mounted when they weren't. I have now a running setup. The only problem is that one has to be root to do chroot in Fedora. So I created a user sage inside the jail and start the notebook as follows #/usr/sbin/chroot /sage-root su - sage -c sage -notebook Are there any security problems associated with this? Michel On Jun 5, 2:15 pm, Michel [EMAIL PROTECTED] wrote: I have compiled sage from source in a FC7 chroot environment on FC4. Everything works fine except pexpect which I can't get to work properly. sage: import pexpect sage: pexpect.spawn(maxima) class 'pexpect.ExceptionPexpect'Traceback (most recent call last) class 'pexpect.ExceptionPexpect': Pexpect: pty.fork() failed: out of pty devices I have mounted /dev/pts etc... Sometimes the error goes away for unclear reasons but after reboot it it is there again. Really frustrating. I am going to give up for now, unless somebody knows what causes this behaviour. Michel --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: Bug in sage-test (strip_automount_prefix)?
Michael, Which thread? Kate On Jun 4, 2:04 pm, Michel [EMAIL PROTECTED] wrote: William already posted a patch to this in another thread! On Jun 4, 7:39 pm, Nick Alexander [EMAIL PROTECTED] wrote: PS. Strictly speaking one should use os.path.separator instead of / :-) Perhaps os.path.realpath and os.path.normpath are even better? I think Kate Minola will have to patch this, because such automounted paths are rare. Nick --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: Bug in sage-test (strip_automount_prefix)?
This one! Hope the URL works. http://groups.google.com/group/sage-devel/browse_thread/thread/ea56d4fc266fd79b/7bc0cb3bb2ff28cc?lnk=stq=rnum=4#7bc0cb3bb2ff28cc Michel On Jun 5, 2:46 pm, Kate [EMAIL PROTECTED] wrote: Michael, Which thread? Kate On Jun 4, 2:04 pm, Michel [EMAIL PROTECTED] wrote: William already posted a patch to this in another thread! On Jun 4, 7:39 pm, Nick Alexander [EMAIL PROTECTED] wrote: PS. Strictly speaking one should use os.path.separator instead of / :-) Perhaps os.path.realpath and os.path.normpath are even better? I think Kate Minola will have to patch this, because such automounted paths are rare. Nick --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: Bug in sage-test (strip_automount_prefix)?
Michael, Thanks for the URL. (Alternately, you could have told me to look in the maxima.console() works but not maxima.interact() thread.) I do not have a problem with William's fix. To explain why strip_automount_prefix() is necessary, some computer networks only mount directories on demand. So for example, on one network I see /u/kate whereas the absolute path is /automount/u/kate By the way, the word automount could be anything and is under system administrator control. So strip_automount_prefix() just removes this prefix that os.path.abspath() shows. Nick Alexander suggests using os.path.realpath or os.path.normpath. Neither work on this network, and so I suspect those functions are not portable. Kate On Jun 5, 9:16 am, Michel [EMAIL PROTECTED] wrote: This one! Hope the URL works. http://groups.google.com/group/sage-devel/browse_thread/thread/ea56d4... Michel On Jun 5, 2:46 pm, Kate [EMAIL PROTECTED] wrote: Michael, Which thread? Kate On Jun 4, 2:04 pm, Michel [EMAIL PROTECTED] wrote: William already posted a patch to this in another thread! On Jun 4, 7:39 pm, Nick Alexander [EMAIL PROTECTED] wrote: PS. Strictly speaking one should use os.path.separator instead of / :-) Perhaps os.path.realpath and os.path.normpath are even better? I think Kate Minola will have to patch this, because such automounted paths are rare. Nick --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] plot_vector_field
At the moment, plot_vector_field is only capable of plotting product vector fields, which is unacceptable for my use of it in an ODE class. Since it is a crucial issue for my use, I plan on trying to extend it to handle arbitrary 2d fields, unless Alex Clemesha feels like doing it for me. Any tips are appreciated. actually I think my first attempt works, I just modified GraphicPrimitiveFactory_plot_field so that it evaluates functions of two arguments. A diff patch file is at http://www.d.umn.edu/~mhampton/plotpatch If this looks okay I will try to update the documentation as well. -Marshall Hampton --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: Bug in sage-test (strip_automount_prefix)?
Ok thanks for the explanation. BTW My name is Michel and not Michael! On Jun 5, 3:54 pm, Kate [EMAIL PROTECTED] wrote: Michael, Thanks for the URL. (Alternately, you could have told me to look in the maxima.console() works but not maxima.interact() thread.) I do not have a problem with William's fix. To explain why strip_automount_prefix() is necessary, some computer networks only mount directories on demand. So for example, on one network I see /u/kate whereas the absolute path is /automount/u/kate By the way, the word automount could be anything and is under system administrator control. So strip_automount_prefix() just removes this prefix that os.path.abspath() shows. Nick Alexander suggests using os.path.realpath or os.path.normpath. Neither work on this network, and so I suspect those functions are not portable. Kate On Jun 5, 9:16 am, Michel [EMAIL PROTECTED] wrote: This one! Hope the URL works. http://groups.google.com/group/sage-devel/browse_thread/thread/ea56d4... Michel On Jun 5, 2:46 pm, Kate [EMAIL PROTECTED] wrote: Michael, Which thread? Kate On Jun 4, 2:04 pm, Michel [EMAIL PROTECTED] wrote: William already posted a patch to this in another thread! On Jun 4, 7:39 pm, Nick Alexander [EMAIL PROTECTED] wrote: PS. Strictly speaking one should use os.path.separator instead of / :-) Perhaps os.path.realpath and os.path.normpath are even better? I think Kate Minola will have to patch this, because such automounted paths are rare. Nick --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: C question
On Jun 5, 2007, at 01:18 , Joshua Kantor wrote: Thanks, I had forgot about that sort of thing and it might work. I'm not sure because some of the libraries linked in are static. My python module links against libsuperlu.a which is static which links against libblas. Because libsuperlu.a is static I'm not sure whether the static or dynamic version of libblas is linked against. A followup question. I want to find the exact name of the function that calls exit, however I can't figure out how to make gdb tell me that because the program doesn't crash it exits normally. Anyone know a way to find the name of the last function called before a program exits. If it exits normally, it should pass through exit(), I think. A breakpoint there should tell you what the call stack looks like (although it may not set up the stack correctly for full symbolic debugging). I didn't fully grok your original question, but does atexit() help there? Justin -- Justin C. Walker, Curmudgeon-At-Large Institute for the Enhancement of the Director's Income Experience is what you get when you don't get what you want. --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: Sage in chroot
On 6/5/07, Michel [EMAIL PROTECTED] wrote: Well this problem I could solve. They were caused by an /etc/mtab file which was out of sync, making mount -a believe some filesystems were mounted when they weren't. I have now a running setup. The only problem is that one has to be root to do chroot in Fedora. So I created a user sage inside the jail and start the notebook as follows #/usr/sbin/chroot /sage-root su - sage -c sage -notebook Are there any security problems associated with this? Beyond the natural issues of breaking out of a chroot jail, which I'll ignore since they have nothing to do with SAGE, there are at least the following problems: (1) A user can -- via the notebook -- vandalize the sage user account in the chroot. However, the SAGE notebook currently resaves its state from RAM every few seconds, so this doesn't cause much damage. We are considering making it so worksheet processes can be started as a different user in chroot; this would help deal with the vandalism problem. (2) If one can connect from the chroot to the outside world via a network, then a person could run code in your chroot via the notebook that could do nasty things. (3) Cross-side scripting -- people post a SAGE web page that contains HTML and maybe javascript that takes over somebody else's web browser. (4) Robustness issues -- the SAGE notebook as it is currently implemented is not designed to have many users at once -- it's a simple single threaded synchronous web server. We very much hope to fix this problem at SAGE Days 4 next week. (5) Resource issues -- users could evaluate code via the notebook that uses a lot of resources, e.g., RAM, CPU, etc. So you may want to run the notebook renice'd to 19. Also, and this is something we hope to do at SD4, it would be good if any worksheet that used more than XXX MB of RAM were to automatically stop with an error; this could be accomplished by running the SAGE subprocesses under ulimit. Currently, in the public SAGE notebook I solve this by just having it automatically restart every 10 minutes -- this is not a good solution in the long run, but it's a simple way to ensure that the notebook is mostly up and running -- this is just the auto_restart option to the notebook command. You'll have to do something like sage -c notebook(..., auto_restart=1000). (6) A model we'll switch to hopefully very soon (once we figure out how!) for the notebook is that all users will have to have accounts, and anything *they* do will consequently be logged. This will help a lot to cut down on several of the above problems. Then you can just give accounts to all the students you have who will want to use the notebook at your university, and if somebody is doing something nefarious, you'll be able to tell who it was. (7) There are surely other security and robustness related issues that I haven't addressed. However, that said, many many people have found the public SAGE notebook that I posted very useful over the last year, and we haven't had any known serious security problems as a result of it. As background, note that the SAGE notebook was designed and implemented 1 year ago (by Alex Clemesha, me, and Tom Boothby) to solve one problem: provide SAGE with some sort of graphical interface. Using a web browser was just a shortcut to make it cross platform, have font support, etc., very quickly. Then we quickly realized we could put the notebook online for anybody to access. It wasn't initially designed to have dozens of users at once, and currently it won't work well in that context. With proper resource limitations, Tasynchronous support, user authentication, and SSL (all mostly available in SAGE right now via Twisted and GNUTLS), we should be able to make the notebook extremely robust. William --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: plot_vector_field
One thing I can't figure out is how to make the arrows a constant length. Any suggestions? Thanks, Marshall On Jun 5, 9:39 am, Hamptonio [EMAIL PROTECTED] wrote: At the moment, plot_vector_field is only capable of plotting product vector fields, which is unacceptable for my use of it in an ODE class. Since it is a crucial issue for my use, I plan on trying to extend it to handle arbitrary 2d fields, unless Alex Clemesha feels like doing it for me. Any tips are appreciated. actually I think my first attempt works, I just modified GraphicPrimitiveFactory_plot_field so that it evaluates functions of two arguments. A diff patch file is at http://www.d.umn.edu/~mhampton/plotpatch If this looks okay I will try to update the documentation as well. -Marshall Hampton --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: strings and symbolic expressions
On 6/5/07, Joel B. Mohler [EMAIL PROTECTED] wrote: I'm find the string representations of symbolic expressions to be a little non-intuitive. Short answer: use repr. SAGE is just following the official Python guidelines for str versus repr: str -- nice display to screen representation repr -- more compact form that is similar to what you might type to get the object. The following transcript illustrates my concerns: sage: type(x) class 'sage.calculus.calculus.SymbolicVariable' sage: str(x^2+1) '\t\t\t\t 2\r\n \t\t\t\tx + 1' sage: x^2+1 x^2 + 1 sage: print str(x^2+1) 2 x + 1 sage: maxima('%s' % (repr(x^2+1),)) x^2+1 sage: maxima('%s' % (x^2+1,)) This hangs because of the \t From my background, you would expect the canonical string conversion to naturally work. I use the % operator on strings a great deal so I want str(object) to nicely to embed strings, but clearly the author of __str__ doesn't use it so much -- maybe I'm unique in this. This is just following the Python definitions for __str__ and __repr__ (scroll down here): http://docs.python.org/ref/customization.html william --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: SAGE in chroot
On 6/5/07, Michel Van den Bergh [EMAIL PROTECTED] wrote: Hi. I have things running pretty well now. Below are my notes. Perhaps they can posted on the Wiki somewhere (in polished form). Could you make a new section of the SAGE install guide and send me a patch? To do this: (1) cd to SAGE_ROOT/devel/doc/inst (2) Type ./build_pdf or ./build_dvi depending on your preference to make sure you can build the install guide. (3) Edit it -- it's just latex. (4) Start SAGE and type hg_doc.ci() to check in your changes. Then type hg_doc.send('inst-doc-patch.hg') to make a patch for me. Don't worry -- I'll look over the patch and edit it after you send it to me. Michel = The following instructions for making sage run in a chroot environment have not been audited for security. Unless otherwise specified all instructions have to be executed as root. Step 0: Creating a root directory = #mkdir /sage-server Below we will refer to /sage-server as sage-server. Step 1: Teaching yum how to work with installroot = We want to use #yum --installroot sage-server install packages Unfortunately the standard entries in /etc/yum.repos.d do not work well with --installroot. No doubt there is a clean solution to this problem but I didn't find it. So I made a backup copy of /etc/yum.repos.d and created the following two files in /etc/yum.repos.d /etc/yum.repos.d/fedora.repo [base] name=Fedora 7 - i386 - Base baseurl=http://download.fedora.redhat.com/pub/fedora/linux/releases/7/Fedora/i386/os #mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-7 enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora /etc/yum.repos.d/fedora-updates.repo [updates-released] name=Fedora 7 - i386 - Released Updates baseurl=http://download.fedora.redhat.com/pub/fedora/linux/updates/7/i386/ #mirrorlist=http://fedora.redhat.com/download/mirrors/updates-released-fc7 enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora I disabled all other repos. Step 2: Installing a minimal FC7 system === My definition of minimal was the following #yum --installroot sage-server bash fileutils sed which make gcc gcc-c++ m4 tar gzip bzip2 flex bison findutils yum rpm passwd Sit back and relax. After this command completes you should be able to do (as root) #/usr/sbin/chroot sage-server and be greeted with a bash prompt. Type ^D to exit. Step 4: Auxiliary steps. === a) Populating the dev directory. We use the dev directory of the host environment. #mount --rbind /dev sage-server/dev c) Creating a sage user inside the chrooted environment #/usr/sbin/chroot sage-server #/usr/sbin/useradd -u 5000 sage# 5000 is a UID not existing in # the host environment #passwd sage Changing password for user sage. New UNIX password: etc... Step 3: Dowloading and compiling sage = Download the sage source code (a big tar file). Move the source code to sage-server/root. Do #tar xvf source-archive This extracts the source code into a directory sage-root. #/usr/sbin/chroot sage-server #chdir sage-root #make #make test #make install This should succeed, otherwise install extra packages as needed. This can be done from within the chroot environment (since we have installed yum and rpm). Run sage once to modify the hardcoded paths #sage Test if the command sage works. If so: exit. #^D Step 4: Firing up the notebook == Do as root in the host environment #/usr/sbin/chroot sage-server su - sage -c sage -notebook Step 5: Making things more user friendly Scripts: /etc/sysconfig/sage-config == SAGE_SERVER=/sage-root ADDRESS=xxx.xxx.xxx.xxx PORT=8000 USER=5000 /usr/local/bin/sage-server == #!/bin/bash . /etc/sysconfig/sage-config COMMAND=notebook(address='$ADDRESS', port=$PORT) if ! ( grep $SAGE_SERVER /etc/mtab /dev/null ) then mount --rbind /dev/ $SAGE_SERVER/dev fi nohup /usr/sbin/chroot $SAGE_SERVER su - sage -c sage -c \$COMMAND\ /usr/local/bin/sage-killer === #!/bin/bash . /etc/sysconfig/sage-config kill -9 `ps -u $USER -o pid=` /dev/null 2/dev/null /etc/rc.d/init.d/sage = Note: I hate bash. The script below is very bad. It does no error checking whatsoever. To run the initscript at boot do #/sbin/chkconfig sage on To disable the initscript do #/sbin/chkconfig sage off ===
[sage-devel] Re: strings and symbolic expressions
On 6/5/07, Joel B. Mohler [EMAIL PROTECTED] wrote: sage: maxima('%s' % (repr(x^2+1),)) x^2+1 sage: maxima('%s' % (x^2+1,)) This hangs because of the \t By the way, I think this is a very bad way of moving symbolic expressions into Maxima. *Much* *much* better are any of the following: (1) s = some symbolic expression (2) maxima(s) # underlying maxima object (3) s._maxima_init_() # the correct maxima string Definitely do not do maxima('%s'% repr(x^2+1)), since more general things like maxima('%s'%repr(x^2 + pi)) will fail, whereas if you use s._maxima_init_() or maxima(s) things like pi are correctly translated into maxima's language. William --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: Bug in sage-test (strip_automount_prefix)?
Michel, BTW My name is Michel and not Michael! Sincere apologies! Kate --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: C question
Thanks, setting a breakpoint at exit allowed me to get a stacktrace which told me that the function called before exit is xerbla_ in the dynamic library liblapack.so. So the LD_PRELOAD trick may work. I can't seem to get it to work with sage yet though. Is there a similar command to LD_PRELOAD available on OSX. The basic question is suppose you have a dynamic library that has some function f. Suppose you want to change the behaviour of f. Is there a way to write a replacement my_f and make sure that whenever f would be called, my_f is called instead. LD_PRELOAD on linux accomplishes this. Josh On Jun 5, 8:43 am, Justin C. Walker [EMAIL PROTECTED] wrote: On Jun 5, 2007, at 01:18 , Joshua Kantor wrote: Thanks, I had forgot about that sort of thing and it might work. I'm not sure because some of the libraries linked in are static. My python module links against libsuperlu.a which is static which links against libblas. Because libsuperlu.a is static I'm not sure whether the static or dynamic version of libblas is linked against. A followup question. I want to find the exact name of the function that calls exit, however I can't figure out how to make gdb tell me that because the program doesn't crash it exits normally. Anyone know a way to find the name of the last function called before a program exits. If it exits normally, it should pass through exit(), I think. A breakpoint there should tell you what the call stack looks like (although it may not set up the stack correctly for full symbolic debugging). I didn't fully grok your original question, but does atexit() help there? Justin -- Justin C. Walker, Curmudgeon-At-Large Institute for the Enhancement of the Director's Income Experience is what you get when you don't get what you want. --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: strings and symbolic expressions
On Tuesday 05 June 2007 12:09, William Stein wrote: On 6/5/07, Joel B. Mohler [EMAIL PROTECTED] wrote: sage: maxima('%s' % (repr(x^2+1),)) x^2+1 sage: maxima('%s' % (x^2+1,)) This hangs because of the \t By the way, I think this is a very bad way of moving symbolic expressions into Maxima. *Much* *much* better are any of the following: (1) s = some symbolic expression (2) maxima(s) # underlying maxima object (3) s._maxima_init_() # the correct maxima string Ok, yes, I agree it's a bad way to do that. However, it's a very natural way especially if you want to embed some other decorations along with the expressions. I also use the % operator on strings for many other things besides moving things to other systems -- indeed, I very rarely do that, it just happened to be the instance that annoyed me right before that e-mail. I realize too from your other reply that you are following python conventions. I'm still not entirely convinced that __str__ should be the 2D ascii display though. Many users of the command line will never actually see the 2D ascii display since there is no natural reason to use print from the command line. That is, the 2D ascii display is not available as a non-python user would intuitively expect and I think it breaks most other uses of __str__. -- Joel --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: strings and symbolic expressions
I think I agree with Joel here. str(...) should give something which is suitable for embedding in text. In case of maxima objects it doesn't do that. In fact when I first encountered this behaviour I thought the str(...) function had a bug. It hadn't occurred to me that the \t's where for 2d display. Since there is already a display2d method I don't see why str(...) could not return the 1D version. Michel On Jun 5, 7:42 pm, Joel B. Mohler [EMAIL PROTECTED] wrote: On Tuesday 05 June 2007 12:09, William Stein wrote: On 6/5/07, Joel B. Mohler [EMAIL PROTECTED] wrote: sage: maxima('%s' % (repr(x^2+1),)) x^2+1 sage: maxima('%s' % (x^2+1,)) This hangs because of the \t By the way, I think this is a very bad way of moving symbolic expressions into Maxima. *Much* *much* better are any of the following: (1) s = some symbolic expression (2) maxima(s) # underlying maxima object (3) s._maxima_init_() # the correct maxima string Ok, yes, I agree it's a bad way to do that. However, it's a very natural way especially if you want to embed some other decorations along with the expressions. I also use the % operator on strings for many other things besides moving things to other systems -- indeed, I very rarely do that, it just happened to be the instance that annoyed me right before that e-mail. I realize too from your other reply that you are following python conventions. I'm still not entirely convinced that __str__ should be the 2D ascii display though. Many users of the command line will never actually see the 2D ascii display since there is no natural reason to use print from the command line. That is, the 2D ascii display is not available as a non-python user would intuitively expect and I think it breaks most other uses of __str__. -- Joel --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: strings and symbolic expressions
On 6/5/07, Michel [EMAIL PROTECTED] wrote: I think I agree with Joel here. str(...) should give something which is suitable for embedding in text. In case of maxima objects it doesn't do that. In fact when I first encountered this behaviour I thought the str(...) function had a bug. It hadn't occurred to me that the \t's where for 2d display. Since there is already a display2d method I don't see why str(...) could not return the 1D version. As I remarked above, the definition of __str__ and __repr__ in the Python documentation say that __str__ should return a pretty version and __repr__ and 1-d version. That's just how things are defined in the Python. And, as Tom says, use %r instead of %s. William William --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: strings and symbolic expressions
On Jun 5, 2007, at 10:55 AM, [EMAIL PROTECTED] wrote: sage: maxima('%s' % (repr(x^2+1),)) x^2+1 sage: maxima('%s' % (x^2+1,)) This hangs because of the \t From my background, you would expect the canonical string conversion to naturally work. I use the % operator on strings a great deal so I want str(object) to nicely to embed strings, but clearly the author of __str__ doesn't use it so much -- maybe I'm unique in this. use %r to get the repr, %s gets the pretty string. sage: maxima('%r' % (x^2+1,)) x^2+1 I have found the multi-line notion of str() odd too for this reason. I did not know about the %r command though (as it looks like few others did) $ grep -r %s sage | wc -l 6576 $ grep -r %s sage | grep -v repr | wc -l 6507 $ grep -r %r sage | wc -l 73 Perhaps this should be changed to be more inline with python standards. - Robert --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: strings and symbolic expressions
sage: maxima('%s' % (repr(x^2+1),)) x^2+1 sage: maxima('%s' % (x^2+1,)) This hangs because of the \t From my background, you would expect the canonical string conversion to naturally work. I use the % operator on strings a great deal so I want str(object) to nicely to embed strings, but clearly the author of __str__ doesn't use it so much -- maybe I'm unique in this. use %r to get the repr, %s gets the pretty string. sage: maxima('%r' % (x^2+1,)) x^2+1 --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: plot_vector_field
At the moment, plot_vector_field is only capable of plotting product vector fields, which is unacceptable for my use of it in an ODE class. Since it is a crucial issue for my use, I plan on trying to extend it to handle arbitrary 2d fields, unless Alex Clemesha feels like doing it for me. Any tips are appreciated. Hi Marshall, The motivation behind the function 'plot_vector_field' is it is one of several from Mathematica's 'PlotField' plotting functions, see: http://reference.wolfram.com/mathematica/Compatibility/tutorial/Graphics/PlotField.html If you go to the above link, I think you will find that the other couple 'missing' functions (not in SAGE yet), are the others listed on the page. Actually, in SAGE, is the class 'GraphicPrimitive_PlotField', which is a more general class that was designed to enable the implementation all the functions of Mathematica's 'PlotField' package ... and actually implementing the rest of those functions might be 'easy'. (but if you want to do that and you want them to look really nice, get ready to chase around pixels ;) What is really going on with the class 'GraphicPrimitive_PlotField' is it is a wrapper on top of matplotlib's (see google if you are not familiar) 'quiver' function. The quiver function is a pretty general function, and it holds all the underlying parameters (arrows of constant length) that can be manipulated. Alex p.s. I'm glad you are interested in some of the more 'advanced'-ish plotting functions in SAGE, you can make some beautiful and illuminating images with them, and they definitely couldn't hurt being improved. --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: plot_vector_field
Alex, Any chance you could commit to implementing the other vector field plots during SD4 next week? On 6/5/07, alex clemesha [EMAIL PROTECTED] wrote: At the moment, plot_vector_field is only capable of plotting product vector fields, which is unacceptable for my use of it in an ODE class. Since it is a crucial issue for my use, I plan on trying to extend it to handle arbitrary 2d fields, unless Alex Clemesha feels like doing it for me. Any tips are appreciated. Hi Marshall, The motivation behind the function 'plot_vector_field' is it is one of several from Mathematica's 'PlotField' plotting functions, see: http://reference.wolfram.com/mathematica/Compatibility/tutorial/Graphics/PlotField.html If you go to the above link, I think you will find that the other couple 'missing' functions (not in SAGE yet), are the others listed on the page. Actually, in SAGE, is the class 'GraphicPrimitive_PlotField', which is a more general class that was designed to enable the implementation all the functions of Mathematica's 'PlotField' package ... and actually implementing the rest of those functions might be 'easy'. (but if you want to do that and you want them to look really nice, get ready to chase around pixels ;) What is really going on with the class 'GraphicPrimitive_PlotField' is it is a wrapper on top of matplotlib's (see google if you are not familiar) 'quiver' function. The quiver function is a pretty general function, and it holds all the underlying parameters (arrows of constant length) that can be manipulated. Alex p.s. I'm glad you are interested in some of the more 'advanced'-ish plotting functions in SAGE, you can make some beautiful and illuminating images with them, and they definitely couldn't hurt being improved. -- William Stein Associate Professor of Mathematics University of Washington http://www.williamstein.org --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: plot_vector_field
Any chance you could commit to implementing the other vector field plots during SD4 next week? Yes, I guess could 'commit' ... ... does that mean 'promise to implement perfectly', I at least commit to try ;) b.t.w. Dorian and I have been working very hard on our project that we are calling Knoboo ... our generalized computation notebook. We have 'solved' (not robustly completed, but 'solved') problems like: SSL-enabled user sessions with Twisted, i.e. only allow users to log in who provide correct (say email/password combo, maybe setup beforehand), and associated 'settings' to each user. Once each user logs in he is presented with his own notebooks / settings, and very Mathematica like interface (nested / collapsing / code cells and text cells). Some problems we have yet to tackle are some of the others you mention earlier in the chroot thread like controlling users resources and permissions, which will be great to collaborate on at SAGE days. -Alex (Sorry about the above thread high-jacking) On 6/5/07, alex clemesha [EMAIL PROTECTED] wrote: At the moment, plot_vector_field is only capable of plotting product vector fields, which is unacceptable for my use of it in an ODE class. Since it is a crucial issue for my use, I plan on trying to extend it to handle arbitrary 2d fields, unless Alex Clemesha feels like doing it for me. Any tips are appreciated. Hi Marshall, The motivation behind the function 'plot_vector_field' is it is one of several from Mathematica's 'PlotField' plotting functions, see: http://reference.wolfram.com/mathematica/Compatibility/tutorial/Graphics/PlotField.html If you go to the above link, I think you will find that the other couple 'missing' functions (not in SAGE yet), are the others listed on the page. Actually, in SAGE, is the class 'GraphicPrimitive_PlotField', which is a more general class that was designed to enable the implementation all the functions of Mathematica's 'PlotField' package ... and actually implementing the rest of those functions might be 'easy'. (but if you want to do that and you want them to look really nice, get ready to chase around pixels ;) What is really going on with the class 'GraphicPrimitive_PlotField' is it is a wrapper on top of matplotlib's (see google if you are not familiar) 'quiver' function. The quiver function is a pretty general function, and it holds all the underlying parameters (arrows of constant length) that can be manipulated. Alex p.s. I'm glad you are interested in some of the more 'advanced'-ish plotting functions in SAGE, you can make some beautiful and illuminating images with them, and they definitely couldn't hurt being improved. -- William Stein Associate Professor of Mathematics University of Washington http://www.williamstein.org --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: plot_vector_field
On 6/5/07, alex clemesha [EMAIL PROTECTED] wrote: Any chance you could commit to implementing the other vector field plots during SD4 next week? Yes, I guess could 'commit' ... ... does that mean 'promise to implement perfectly', I at least commit to try ;) Excellent! b.t.w. Dorian and I have been working very hard on our project that we are calling Knoboo ... our generalized computation notebook. We have 'solved' (not robustly completed, but 'solved') problems like: Post some easy-to-try demo code! It will help us prepare for the coding sprints. Some problems we have yet to tackle are some of the others you mention earlier in the chroot thread like controlling users resources and permissions, which will be great to collaborate on at SAGE days. I can help with that. William --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Problem with sage-2.6 OSX binaries.
I just downloaded the sage-2.6 OSX intel binaries. They ran fine but when I tried to clone a repository and do -ba I got the errors usr/bin/ld: Undefined symbols: ___gmpn_add_n referenced from libntl expected to be defined in /Users/ was/tmp/sage-2.6.alpha1/local/lib/libgmp.3.dylib ___gmpn_addmul_1 referenced from libntl expected to be defined in / Users/was/tmp/sage-2.6.alpha1/local/lib/libgmp.3.dylib ___gmpn_divrem_1 referenced from libntl expected to be defined in / Users/was/tmp/sage-2.6.alpha1/local/lib/libgmp.3.dylib ___gmpn_gcd referenced from libntl expected to be defined in /Users/ was/tmp/sage-2.6.alpha1/local/lib/libgmp.3.dylib ___gmpn_gcdext referenced from libntl expected to be defined in /Users/ was/tmp/sage-2.6.alpha1/local/lib/libgmp.3.dylib ___gmpn_lshift referenced from libntl expected to be defined in /Users/ was/tmp/sage-2.6.alpha1/local/lib/libgmp.3.dylib ___gmpn_mod_1 referenced from libntl expected to be defined in /Users/ was/tmp/sage-2.6.alpha1/local/lib/libgmp.3.dylib ___gmpn_mul referenced from libntl expected to be defined in /Users/ was/tmp/sage-2.6.alpha1/local/lib/libgmp.3.dylib ___gmpn_mul_1 referenced from libntl expected to be defined in /Users/ was/tmp/sage-2.6.alpha1/local/lib/libgmp.3.dylib ___gmpn_rshift referenced from libntl expected to be defined in /Users/ was/tmp/sage-2.6.alpha1/local/lib/libgmp.3.dylib ___gmpn_sqrtrem referenced from libntl expected to be defined in / Users/was/tmp/sage-2.6.alpha1/local/lib/libgmp.3.dylib ___gmpn_sub_n referenced from libntl expected to be defined in /Users/ was/tmp/sage-2.6.alpha1/local/lib/libgmp.3.dylib ___gmpn_tdiv_qr referenced from libntl expected to be defined in / Users/was/tmp/sage-2.6.alpha1/local/lib/libgmp.3.dylib collect2: ld returned 1 exit status error: command 'g++' failed with exit status 1 sage: There was an error installing modified sage library code. Josh --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: plot_vector_field
OK, thanks. I will look into hacking the quiver function. It is unclear to me, from your response, if you understand the problem with plot_vector_field in its current form. The example from the wolfram site is somewhat misleading, since it uses a vector field of the form (f(x),g(y)), but this is not necessary in mathematica - it can handle fields of the form (f(x,y),g(x,y)), which is what my patch fixes. Cheers, Marshall Hampton On Jun 5, 1:09 pm, alex clemesha [EMAIL PROTECTED] wrote: At the moment, plot_vector_field is only capable of plotting product vector fields, which is unacceptable for my use of it in an ODE class. Since it is a crucial issue for my use, I plan on trying to extend it to handle arbitrary 2d fields, unless Alex Clemesha feels like doing it for me. Any tips are appreciated. Hi Marshall, The motivation behind the function 'plot_vector_field' is it is one of several from Mathematica's 'PlotField' plotting functions, see:http://reference.wolfram.com/mathematica/Compatibility/tutorial/Graph... If you go to the above link, I think you will find that the other couple 'missing' functions (not in SAGE yet), are the others listed on the page. Actually, in SAGE, is the class 'GraphicPrimitive_PlotField', which is a more general class that was designed to enable the implementation all the functions of Mathematica's 'PlotField' package ... and actually implementing the rest of those functions might be 'easy'. (but if you want to do that and you want them to look really nice, get ready to chase around pixels ;) What is really going on with the class 'GraphicPrimitive_PlotField' is it is a wrapper on top of matplotlib's (see google if you are not familiar) 'quiver' function. The quiver function is a pretty general function, and it holds all the underlying parameters (arrows of constant length) that can be manipulated. Alex p.s. I'm glad you are interested in some of the more 'advanced'-ish plotting functions in SAGE, you can make some beautiful and illuminating images with them, and they definitely couldn't hurt being improved. --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] SAGEControl 0.0.1 - A first impression
Hello, due to work and I being lazy the last week I didn't work on SAGEControl until yesterday. A first 0.0.1 snapshot can be seen at http://apcocoa.org/~mabshoff/snapshots/SAGEControl-0.0.1.png The snapshot should give you an idea how the code will work. You cannot start the notebook at the moment, but thatfeature is trivial to implement. The code is also a little buggy when selecting the SAGE executable. There is a hg repo at http://apcocoa.org/~mabshoff/hg/SAGEControl/ if you would like to check out the code. The code is build with Qt 4.3, due to some QFileinfo methods used one cannot compile againsts earlier version of Qt. Qt 4.3 was release a couple days ago, so you probably need to compile it yourself. The code is only one widget at the moment that is a 99.5% percent copy of a widget I use for the new ApCoCoA GUI. SAGEControl doesn't work properly at the monent due to some bug that prohibits the SAGE prompt from showing up. Since the widget works fine with CoCoA there must be another bug hidden in my code, so stay tuned. If you would like to build just consult the README. I can build some static 32 bit linux binary build if somebody cares. Because I am rewriting the ApCoCoA GUI with Qt's new MDI class for CoCoA VI and MEGA in 10 days I will have little time to work on the code for the next 3 weeks or so. But I do expect to push changes made to the ApCoAoA codebase into the SAGEControl code. If somebody would like to send me patches feel free to do so. The code is licensed under the GPL V2 only at the moment, once the GPL V3 is out I might reconsider. What will come up in the future: - a setup wizard - config and profiles, i.e. have several different sage releases selectable from a drop down menu - start the notebook - start the notebook only, log on remote server - translation of the interface with on the fly language changes - proper packaging, i.e. create a dmg on Mac or an MSI installer on Windows Cheers, Michael --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: Problem with sage-2.6 OSX binaries.
I've also got another library problem: -- | SAGE Version 2.6, Release Date: 2007-06-02 | | Type notebook() for the GUI, and license() for information.| -- sage: import gd --- type 'exceptions.ImportError' Traceback (most recent call last) /Users/robert/ipython console in module() /Users/robert/sage/current/local/lib/python2.5/site-packages/gd.py in module() 8 library. 9 --- 10 import _gd 11 from _gd import * 12 del image type 'exceptions.ImportError': dlopen(/Users/robert/sage/current/ local/lib/python2.5/site-packages/_gd.so, 2): Symbol not found: _png_get_rowbytes Referenced from: /Users/robert/sage/current/local/lib//libgd.2.dylib Expected in: flat namespace --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] plot+wiki questions
Hi: 1. Plot question: has anyone looked into http://pyqwt.sourceforge.net/? It seems to have some 3d capabilities http://pyqwt.sourceforge.net/pyqwt3d-examples.html but requires qt. 2. Some links on the wiki http://www.sagemath.org:9001/Software_that_may_be_useful seem to be broken since they point to the wiki on sage.math. If there is no objection, i will fix them by replacing sage.math with sagemath.org. - David --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] sage -upgrade blowing away users patches?
Hello all, sage -upgrade seems to be blowing away my committed hg patches that have not been pushed to William yet. To the best of my memory, that did not happen in the past; has this changed? Am I doing something wrong? This is getting annoying -- it's very hard to submit patches against up-to-date releases with this behaviour. Nick --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: sage -upgrade blowing away users patches?
Yikes, that sounds like a bug. FWIW, I think it's a good policy to never touch the main branch. When I want to test a patch, I make a new branch from the clean one, and apply the patch (or set of patches) there. On Tue, 5 Jun 2007, Nick Alexander wrote: Hello all, sage -upgrade seems to be blowing away my committed hg patches that have not been pushed to William yet. To the best of my memory, that did not happen in the past; has this changed? Am I doing something wrong? This is getting annoying -- it's very hard to submit patches against up-to-date releases with this behaviour. Nick --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: sage -upgrade blowing away users patches?
[EMAIL PROTECTED] writes: Yikes, that sounds like a bug. FWIW, I think it's a good policy to never touch the main branch. When I want to test a patch, I make a new branch from the clean one, and apply the patch (or set of patches) there. I'd love to do that, but sage -branch takes upwards of 20 minutes on my machine. Any ideas why that is true? Nick --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---
[sage-devel] Re: sage -upgrade blowing away users patches?
On Jun 5, 2007, at 10:01 PM, Nick Alexander wrote: [EMAIL PROTECTED] writes: Yikes, that sounds like a bug. FWIW, I think it's a good policy to never touch the main branch. When I want to test a patch, I make a new branch from the clean one, and apply the patch (or set of patches) there. I'd love to do that, but sage -branch takes upwards of 20 minutes on my machine. Any ideas why that is true? Nick No idea, but you can do cp -R sage-main sage-new-branch sage -b new-branch and it should work just fine too. --~--~-~--~~~---~--~~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~--~~~~--~~--~--~---