Python-future: Fixer para remover __future __ / futuras importações de código futurizado

Criado em 28 mai. 2019  ·  5Comentários  ·  Fonte: PythonCharmers/python-future

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:

  • Remova __future__ importações desnecessárias ( print_function por exemplo)
  • Remova from future import standard_library e standard_library.install_aliases() linhas
  • Remova from builtins import * linhas
  • Remover from 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.

futurize script help wanted unscheduled wontfix / cantfix

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

Todos 5 comentários

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):

asottile / pyupgrade: Uma ferramenta (e gancho de pré-confirmação) para atualizar automaticamente a sintaxe para versões mais recentes da linguagem.

Outras coisas notáveis:

  • Remove u prefixo
  • Remove (object) de class definições
  • Atualiza super() chamadas
  • Atualiza mock importações

Dito 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?

Esta página foi útil?
0 / 5 - 0 avaliações