Oct 27

Plan a porting sprint using our new guide!

What better time to port your code to Python 3 than now? Check out our new porting guide, then round up your friends and start converting your projects. You write the code, we'll buy the pizza.

In case you missed it, the Cape Town Python Users Group recently did a sprint to port Genshi to Python 3. Their experience is a great example of what a group can complete when it comes to porting, and it's something we'd love to support more of. Do you have a module or package holding you up from switching to Python 3? Get a group together and let us know at sprints@python.org, we'd be happy to fund your efforts.

Additionally, we'd like to supplement your porting work with yet another guide: The Python Sprints Porting Guide. As with the core development guide, it's still in progress but covers a significant amount of material so far. Much of the guide is written using notes from a recent porting effort, but also borrows from a number of the existing Python 3 porting resources listed here. There are some obvious holes that we need to fill, so if you're interested in helping out, we'd love it.

The guide is written with the intent that you can easily find topics that affect you, then get one or more solutions. For example, the most commonly discussed 3.x change is moving print from a statement to a function, which we cover here. Thanks to the __future__ module, users of recent 2.x versions can make a very simple transition to print-as-a-function. However, if you support versions of Python prior to 2.6, we show how you can effectively "print" across older 2.x versions and 3.x at the same time via sys.stdout.

There's also a section on porting strategies which could use a little help from those who have gone through this. We cover the idea of having a mixed-version source, as well as 2.x or 3.x plus the use of an automated conversion. Tools like six, 2to3, and 3to2 are helpful in this area so we briefly introduce each of them.

The next guide we're working on is for porting C extensions. If you have any input from your own extension porting efforts, let us know!