On Mon, Jun 21, 2010 at 10:18 AM, Aaron S. Meurer <[email protected]> wrote: > > On Jun 21, 2010, at 10:52 AM, James Pearson wrote: > > On Mon, Jun 21, 2010 at 1:38 AM, Christophe BAL <[email protected]> wrote: >> >> Hello, >> do you think that one day sympy will be avaible for Python 3 ? > > Considering that Python 3.0 was released in December '08, it would be nice > to see SymPy at least start moving in that direction. > > Yes. I agree. Although, the real benchmark should be how many other > projects have ported and how many people have moved, not when it came out. > > The difficulty is that Python3 is backwards-incompatible, meaning that > either two concurrent branches must be maintained, or SymPy has to switch > completely at some point in time. The latter is difficult due to a sort of > Catch-22 with libraries - people don't move over their projects to Py3 > because they rely on other code that hasn't moved, and the other code hasn't > moved because of the same thing. > > SymPy is designed to be without any dependencies. However, one way that we > include the pyglet and mpmath libraries directly in sympy, and any changes > to those have to be backported to their respective projects. Ondrej has > stated that he thinks we should remove pyglet and make it an optional > external library. But this is not going to happen for mpmath. So we have > basically one project that needs to be ported first or concurrently, which > is not too bad compared to most major Python libraries. > > Now, I've been told that 2to3 should work perfectly, and any issues with the > code generated from it are actually things that should be fixed in the > Python 2.x codebase. I've also been told that that's bollocks. > > 2to3 does not work perfectly. It can't by the nature of the language. > Utilities like 2to3 work by statically analyzing the code, which works 99% > of the time because people usually do not take advantage of the dynamic > features of the language. But there will always be code that is just a hack > that will break (and I guarantee you there is in SymPy). For example, any > code that works by building up a string to be passed to the exec statement > will not be fixed by 2to3 if the code in the string is potentially > incompatible with Python 3. Also, I have come across things that will not > work in Python 3 and are not fixed by 2to3 or caught by -3 (see [1]) > According to the Python docs, the first step is to fix things that also work > in Python 2.6 using the -3 switch to Python 2.6 [0]. This is probably the > most difficult step, because it requires making non-trivial changes like > converting cmp functions into key functions. You can run python2.6 -3 > bin/test in the sympy directory to see what the current problems are. These > can be fixed immediately, without ever having to run Python 3. > After that, we can try passing things to 2to3 and seeing how they work. > Note that even if this works perfectly, we still need to setup some kind of > 2to3 buildbot that handles the conversion automatically after each commit. > I wouldn't be surprised if someone has already written one of these, > though. > Aaron Meurer > [0] - http://docs.python.org/py3k/whatsnew/3.0.html#porting-to-python-3-0 > [1] > - > http://asmeurersympy.wordpress.com/2010/06/16/strange-python-behavior-can-someone-please-explain-to-me-what-is-going-on-here/ > > Anyways, there is a task[0] for it in the issue tracker, so you can keep > track of its progress there. There's also some discussion in this > thread[1], linked to from the issue. > > [0]: http://code.google.com/p/sympy/issues/detail?id=1262 > [1]: > http://groups.google.com/group/sympy/browse_thread/thread/9b730436cf602a64?pli=1
Aaron has summed it up nicely. It's not trivial to update it, I have spent several full days on it already, for example the 2to3 tool didn't even run on the sympy repository (in 2008) related to metaclasses and other stuff, so I have reported the bugs, upstream has promptly fixed most of it, some has remained, but now in 2010 the 2to3 tool runs nicely (so I think most of the bugs in it were fixed). I currently don't have time to work on this, but if someone takes a lead on this, I will chip in with testing. Ondrej -- You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sympy?hl=en.
