Python-future: Correcteur pour supprimer les importations __future__/future du code futurisé

Créé le 28 mai 2019  ·  5Commentaires  ·  Source: PythonCharmers/python-future

Je cherchais cette fonctionnalité, mais je ne l'ai pas vue dans la documentation, j'ouvre donc une demande de fonctionnalité.

J'aimerais voir un réparateur qui prend le code compatible Python 2/3 et supprime le support Python 2 du mieux possible.

Cela permettrait :

  • Supprimer les __future__ importations inutiles ( print_function par exemple)
  • Supprimer les lignes from future import standard_library et standard_library.install_aliases()
  • Supprimer les lignes from builtins import *
  • Supprimer from future.utils import python_2_unicode_compatible

Si un tel réparateur existe déjà, j'aimerais bien le savoir.

Un certain nombre de mes clients utilisent future pour mettre à niveau leur code vers Python 3, puis abandonnent la prise en charge de Python 2 peu de temps après et un tel correctif leur serait très utile.

futurize script help wanted unscheduled wontfix / cantfix

Commentaire le plus utile

J'ai fait quelques transformations moi-même et je les ai regroupées dans un script. Il est actuellement disponible ici : https://github.com/purplediane/drop2

Tous les 5 commentaires

Si cela existe, alors ce n'est pas bien documenté. J'ai dû supprimer manuellement tout cela. L'utilisation d'un appareil qui s'exécute automatiquement peut-être avec un indicateur tel que -3 pour signifier uniquement refactoriser pour la conformité 3 et ignorer la compatibilité python2 serait formidable.

J'ai fait quelques transformations moi-même et je les ai regroupées dans un script. Il est actuellement disponible ici : https://github.com/purplediane/drop2

Un outil connexe, avec un certain chevauchement (à savoir des importations de __future__ ) :

asottile/pyupgrade : un outil (et un hook de pré-commit) pour mettre à niveau automatiquement la syntaxe pour les nouvelles versions du langage.

Autres choses notables :

  • Supprime le préfixe u
  • Supprime (object) des définitions class
  • Mises super() jour
  • Mises mock jour des importations de

Cela dit, j'ai pu utiliser sed pour standard_library :

sed -i '' '/.*standard_library.*/d' **/*.py
-from future import standard_library
-standard_library.install_aliases()
 import json
 import logging
 import urllib.parse

J'envisage de faire la même chose pour :

  • .*python_2_unicode_compatible.*
  • .*implements_iterator.*
  • from builtins.*

Je connais déjà pyupgrade et je l'ai utilisé. C'est très utile.

pyupgrade (plus le hook de pré-commit) est un excellent outil à cet effet. Peut-on fermer ce FR puisque l'alternative est disponible ?

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

foreignmeloman picture foreignmeloman  ·  3Commentaires

wagnerpeer picture wagnerpeer  ·  12Commentaires

jackjansen picture jackjansen  ·  7Commentaires

wimglenn picture wimglenn  ·  5Commentaires

asottile picture asottile  ·  18Commentaires