Blueprint takes advantage of several features introduced in Python 2.5
[1], including conditional expressions [2], the `with` statement and
several context managers [3], and `defaultdict` [4].
Blueprint also takes advantage of features introduced in Python 2.6
[5] with an eye towards supporting Python 3 as soon as necessary. The
`with` statement is not imported from `__future__` as this is no
longer necessary in Python 2.6. Blueprint uses the new advanced
string formatting [6] over the `%` operator that is to be deprecated
in Python 3.x [7] and the new-style exception handling syntax [8]
introduced in Python 2.6 to bridge compatibility with Python 3.
Almost all of the common and supported Linux distros package Python
2.6: stable Debian, Ubuntu LTS, and Fedora. RHEL (and therefore
CentOS) is the odd one out by shipping Python 2.4. RHEL 6 was
released on November 10, 2010 with Python 2.6.5 which means CentOS 6
will be acceptably up-to-date when it is released. Unfortunately,
CentOS 5.6 (due any day now) remains on Python 2.4.
The python26 package is available to CentOS users through EPEL and
fixing issue #25 [9] will make it trivial to use there. Users of
older Debian or Ubuntu releases can use APT-pinning [10] to install
the python2.6 package. I'm happy to help out (I'm rcrowley on IRC and
I'm almost always in #devstructure) if I can.
In summary, the number of missing features and the dramatically larger
test matrix make it difficult for DevStructure to commit to Python 2.4
support at this time. I'm happy to revisit this decision at a later
date but right now I believe it is in the best interest of most of
Blueprint's users to require Python 2.6.
Thanks,
Richard
[1] http://docs.python.org/whatsnew/2.5.html
[2] http://www.python.org/dev/peps/pep-0308/
[3] http://www.python.org/dev/peps/pep-0343/
[4] http://docs.python.org/library/collections.html#collections.defaultdict
[5] http://docs.python.org/whatsnew/2.6.html
[6] http://www.python.org/dev/peps/pep-3101/
[7] http://docs.python.org/release/3.0.1/whatsnew/3.0.html#changes-already-present-in-python-2-6
[8] http://www.python.org/dev/peps/pep-3110/
[9] https://github.com/devstructure/blueprint/issues/25
[10] http://jaqque.sbih.org/kplug/apt-pinning.html