Django Brasil


Blog da Django Brasil


Feeds RSS

Arquivo

Se deseja publicar uma notícia ou artigo neste Weblog, ou tem alguma sugestão de algum assunto que poderia ser publicado por aqui, entre em contato.

Arquivo de Setembro de 2012

Suporte experimental ao Python 3

Publicado em 09/09/2012 às 16h11

Um pouco de história

Em maio, Vinay Sajip publicou um fork provando que era possível suportar ambas as versões atuais do Python, a 2 e a 3, a partir de uma base única de código, e passar toda a suíte de testes. O fork foi construído sobre esforços anteriores de Martin von Löwis.

Logo após, o core team decidiu usar o sixcomo uma camada de compatibilidade, ao invés de uma biblioteca ad-hoc. O alvo era não apenas cobrir as necessidades do Django, mas também escolher uma solução que fosse útil para todo o ecossistema python. A partir do Django 1.5, six vai ser empacotado como django.utils.six, e assim vai estar disponível para todas as aplicações Django que usem a mesma estratégia de portabilidade que o próprio Django.

O primeiro passo real na direção do suporte ao Python 3 support foi removeer os prefixos u das strings unicode e adicionar o unicode_literals future import. Essa mudança foi comitada nos sprints da DjangoCon Europe em julho.

Então a maior parte do trabalho aconteceu nas últimas semanas, com centenas de commits atualizando várias partes do Django.

O core team focou em escrever código Python 3 compatível com Python 2, ao invés do contrário, para tornar o código resistente ao tempo. Para evitar confusão, funções e classes cujos nomes incluíam string ou unicode foram renomeadas para bytes e text respectivamente. Como uma consequência, a adaptação foi significativamente mais invasiva que a prova de conceito de Vinay Sajip.

Vendo pelo lado bom das coisas, já que operações de encode e decode de strings precisam ser corrigidas no Python 3, várias aproximações foram corrigidas no esforço de adaptação. Mesmo que o código de compatibilidade adicione algum ruído em alguns lugares, o código resultante é mais claro em muitos lugares.

Eu gostaria de agradecer a todos os membros da comunidade e aos desenvolvedores do projeto que contribuíram para esse grande projeto.

E depois?

Isso significa que o Django está pronto para o Python 3? Ainda não!

Primeiro, o Django recebeu quase nenhum teste real no Python 3. Considere o código como pre-alpha.

Depois, enquanto o core team fez o melhor para eliminar bugs, a suíte de testes ainda não cobre todos os usos possíveis do Django. É aí que entra a comunidade.

Precisamos da sua ajuda para testar a versão de desenvolvimento do Django, não somente para reportar bugs ao executar no Python 3, mas também regressões no Python 2. Enquanto o Django é muito conservador em relação a compatibilidade retroativa, erros sempre podem acontecer, e é provável que o esforço massivo de refatoração tenha introduzido algumas regressões.

Finalmente, o Django é muito mais que um framework web — é um acossistema de aplicações plugáveis. Nesse ponto, poucas aplicações plugáveis de terceiros suportam o Python 3. Autores são fortemente encorajados a portar suas aplicações plugáveis o mais rápido possível. Dicas de refatoração estão disponíveis na documentação.

por Aymeric Augustin em 19 de Agosto de 2012 no blog de desenvolvimento do Django


Hospedado por APyB. Django Brasil é a comunidade brasileira de usuários do framework web Django. Django é uma marca registrada de Lawrence Journal-World.