Eu estava procurando por esse recurso, mas não o vi na documentação, então estou abrindo uma solicitação de recurso.
Adoraria ver um fixador que pegasse código compatível com Python 2/3 e removesse o suporte Python 2 da melhor maneira possível.
Isso seria:
__future__
importações desnecessárias ( print_function
por exemplo)from future import standard_library
e standard_library.install_aliases()
linhasfrom builtins import *
linhasfrom future.utils import python_2_unicode_compatible
Se esse fixador já existe, adoraria saber sobre ele.
Vários de meus clientes estão usando future
para atualizar seu código para Python 3 e, em seguida, abandonando o suporte ao Python 2 logo em seguida, e esse fixador seria muito útil para eles.
Se existir, não está bem documentado. Tive que remover tudo isso manualmente. O uso de uma fixação que rodou automaticamente talvez com um sinalizador como -3
para significar apenas refatorar para conformidade 3 e ignorar a compatibilidade com python2 seria ótimo.
Eu mesmo fiz algumas transformações e as agrupei em um script. Atualmente está disponível aqui: https://github.com/purplediane/drop2
Uma ferramenta relacionada, com alguma sobreposição (nomeadamente __future__
importações):
Outras coisas notáveis:
u
prefixo(object)
de class
definiçõessuper()
chamadasmock
importaçõesDito isso, consegui usar sed
para standard_library
:
sed -i '' '/.*standard_library.*/d' **/*.py
-from future import standard_library
-standard_library.install_aliases()
import json
import logging
import urllib.parse
Estou planejando fazer o mesmo para:
.*python_2_unicode_compatible.*
.*implements_iterator.*
from builtins.*
Já estou ciente do pyupgrade e usei-o. É muito útil.
pyupgrade
(mais o gancho de pré-confirmação) é uma ótima ferramenta para esse propósito. Podemos fechar este FR já que a alternativa está disponível?
Comentários muito úteis
Eu mesmo fiz algumas transformações e as agrupei em um script. Atualmente está disponível aqui: https://github.com/purplediane/drop2