[sympy] How much longer should we support Python 2.4?

15 views
Skip to first unread message

Aaron S. Meurer

unread,
May 17, 2010, 2:17:41 AM5/17/10
to sy...@googlegroups.com
Python 2.4 incompatibilities have kind of annoyed me recently, so I am sort of resurrecting this thread: http://groups.google.com/group/sympy/browse_thread/thread/6fd82f6a77c24f63

How much longer should we support Python 2.4? That thread was written almost a year ago (a year minus one month), and I think it was mentioned that we should keep support at least for a year. I am of the opinion that the 0.7.0 release should drop Python 2.4 support. It will be a point release, with big changes anyway.

The main annoyance is that there were many nice syntactical and standard library additions to Python 2.5 that we have to either not use or create work arounds for. Here are some examples. Everything that I list here I have either personally run into as a problem, or have seen other people run into:

- any() and all() built-in functions. Right now, we have our own versions of these functions for use in Python 2.4.

- min(x, y, key=func). The key argument was not introduced until Python 2.5, meaning that finding the minimum of a list with respect to a custom key function must be done manually.

- with statements. These are supported in Python 2.5 with the from __future__ import with_statement directive. These are currently unused (because we can't), but they could be very useful with the new assumptions, and probably in other places too.

- finally. Use of finally blocks with except blocks using try was introduced in Python 2.5.

- conditional expressions. true_value if condition else false_value. Currently emulated with the iff() function.

- functools. There are some useful things here, such as wraps(), which can clean up our decorators a bit. See http://groups.google.com/group/sympy/browse_thread/thread/bfc8509a39e1c296/427bbd6c314231a5 and issue 1843.

- SKIP in doctests. We have to use >> instead.

- Python 3 style relative imports. This was mentioned by Frederick in the thread last year as a potential problem for supporting both Python 3 and Python 2.4.

- func(1, *args, key=value). You have to use func(1, *args, **{key:value}). This wasn't added until Python 2.6, so we still wouldn't be able to use it, but still I wanted to add it here because it annoys me :)

In addition to these, .txt doctests don't work in Python 2.4. And speaking of tests, when Python 2.7 comes out very soon, we will have to either drop Python 2.4 or support 4 Python versions, which is additionally complicated by the fact that we should be testing all the combinations of the various ground types for the new polys, as well as -Qnew, and in 32 and 64 bits.

So what are people's opinions on this? If we decide to drop support in sympy 0.7.0, we can drop support now, since that will be the next version.

Aaron Meurer

--
You received this message because you are subscribed to the Google Groups "sympy" group.
To post to this group, send email to sy...@googlegroups.com.
To unsubscribe from this group, send email to sympy+un...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/sympy?hl=en.

Ondrej Certik

unread,
May 17, 2010, 10:10:02 AM5/17/10
to sy...@googlegroups.com
On Sun, May 16, 2010 at 11:17 PM, Aaron S. Meurer <asme...@gmail.com> wrote:
> Python 2.4 incompatibilities have kind of annoyed me recently, so I am sort of resurrecting this thread: http://groups.google.com/group/sympy/browse_thread/thread/6fd82f6a77c24f63
>
> How much longer should we support Python 2.4?  That thread was written almost a year ago (a year minus one month), and I think it was mentioned that we should keep support at least for a year.  I am of the opinion that the 0.7.0 release should drop Python 2.4 support.  It will be a point release, with big changes anyway.
>
> The main annoyance is that there were many nice syntactical and standard library additions to Python 2.5 that we have to either not use or create work arounds for.  Here are some examples.  Everything that I list here I have either personally run into as a problem, or have seen other people run into:
>
> - any() and all() built-in functions.  Right now, we have our own versions of these functions for use in Python 2.4.
>
> - min(x, y, key=func).  The key argument was not introduced until Python 2.5, meaning that finding the minimum of a list with respect to a custom key function must be done manually.
>
> - with statements.  These are supported in Python 2.5 with the from __future__ import with_statement directive.  These are currently unused (because we can't), but they could be very useful with the new assumptions, and probably in other places too.
>
> - finally.  Use of finally blocks with except blocks using try was introduced in Python 2.5.
>
> - conditional expressions.  true_value if condition else false_value.  Currently emulated with the iff() function.
>
> - functools.  There are some useful things here, such as wraps(), which can clean up our decorators a bit.  See http://groups.google.com/group/sympy/browse_thread/thread/bfc8509a39e1c296/427bbd6c314231a5 and issue 1843.
>
> - SKIP in doctests.  We have to use >> instead.
>
> - Python 3 style relative imports.  This was mentioned by Frederick in the thread last year as a potential problem for supporting both Python 3 and Python 2.4.
>
> - func(1, *args, key=value).  You have to use func(1, *args, **{key:value}).  This wasn't added until Python 2.6, so we still wouldn't be able to use it, but still I wanted to add it here because it annoys me :)
>
> In addition to these, .txt doctests don't work in Python 2.4.  And speaking of tests, when Python 2.7 comes out very soon, we will have to either drop Python 2.4 or support 4 Python versions, which is additionally complicated by the fact that we should be testing all the combinations of the various ground types for the new polys, as well as -Qnew, and in 32 and 64 bits.
>
> So what are people's opinions on this?  If we decide to drop support in sympy 0.7.0, we can drop support now, since that will be the next version.

Well I think that we need to fix our tests anyway, so that they work
with any hashing. As to python2.4, I don't use it anymore, but let's
see what people think.

Ondrej

Vinzent Steinberg

unread,
May 17, 2010, 12:19:38 PM5/17/10
to sympy
On 17 Mai, 16:10, Ondrej Certik <ond...@certik.cz> wrote:
> Well I think that we need to fix our tests anyway, so that they work
> with any hashing. As to python2.4, I don't use it anymore, but let's
> see what people think.

I would happily drop it.

Vinzent
Reply all
Reply to author
Forward
0 new messages