Migrando Para Python 3
Está sendo desenvolvida a versão 3.0 de Python, que quebra a [http://en.wikipedia.org/wiki/Backwards_compatibility backward compatibility] (ou [http://en.wikipedia.org/wiki/Backwards_compatibility compatibilidade reversa], mas há termos que a tradução é horrivel...). Esse artigo não tentará convencê-lo da necessidade nem da importância dessa manobra - Apenas como estar pronto para migrar para ela.
Antes de tudo
Esteja preparado para o futuro. Muitas mudanças são para eliminar alternativas menos óbvias de se fazer algo; outras são remoção de detalhes cujo uso foi desestimulado devido à introdução de novas caracteristicas; outras são simplemente funcionalidades já acessiveis atravez de from __future__ import ... - apenas algumas mudanças serão na semântica da linguagem ou na sintaxe - logo, muito do que você escreve hoje não mudará, se você for Pythonico suficiênte. Veja mais na wiki do python.org: [http://wiki.python.org/moin/FutureProofPython FutureProofPython].
O plano
Em seu [http://www.artima.com/weblogs/viewpost.jsp?thread=208549 "status update"] ([http://lambdaspace.wordpress.com/2007/06/20/atualizacao-da-situacao-do-python-3000-longo-python-3000-status-update-long/ tradução]), GuidoVanRossum delineou o seguinte plano:
0. Comece com excelentes testes de unidade (unit tests), o mais próximo possível de cobrir todas as possibilidades. 1. Porte o projeto para o Python 2.6. 2. Ative o modo de alertas do Py3k (Py3k warnings mode). 3. Teste e modifique até que nenhum alerta permaneça. 4. Use a ferramente 2to3 para converter o código-fonte para a sintaxe da versão 3.0 (Nâo edite manualmente a saída!!!). 5. Teste o código convertido sob a versão 3.0. 6. Se problemas forem achados, faça correções para a versão 2.6 do código-fonte e volte ao passo 3. 7. Quando for lançar, lançe tarballs separados da versão para 2.6 e para 3.0 (ou qualquer outra forma de arquivar que você use para releases)
A intenção desse artigo é detalhar um pouco esse plano.
Testes de Unidade (passo 0)
Portando para 2.6 e os alertas de compatibilidade com 3.0 (passos 1, 2, 3)
Conversão automática com 2to3, testes e refatorações (passos 4, 5 e 6)