Ich habe nach dieser Funktion gesucht, sie aber nicht in der Dokumentation gefunden, daher öffne ich eine Funktionsanfrage.
Ich würde gerne einen Fixer sehen, der Python 2/3-kompatiblen Code verwendet und die Python 2-Unterstützung so gut wie möglich entfernt.
Das würde:
__future__
Importe (zum Beispiel print_function
)from future import standard_library
und standard_library.install_aliases()
entfernenfrom builtins import *
Zeilen entfernenfrom future.utils import python_2_unicode_compatible
entfernenFalls ein solcher Fixer bereits existiert, würde ich gerne davon erfahren.
Einige meiner Kunden verwenden future
, um ihren Code auf Python 3 zu aktualisieren und dann kurz darauf die Unterstützung von Python 2 einzustellen, und ein solcher Fixer wäre für sie sehr hilfreich.
Wenn es existiert, dann ist es nicht gut dokumentiert. Ich musste das alles manuell entfernen. Die Verwendung eines Fixtures, das automatisch ausgeführt wird, möglicherweise mit einem Flag wie -3
, um nur die Refaktorierung für 3 Compliance zu bedeuten und die Python2-Kompatibilität zu ignorieren, wäre großartig.
Ich habe selbst einige Transformationen vorgenommen und sie in ein Skript gebündelt. Es ist derzeit hier verfügbar: https://github.com/purplediane/drop2
Ein verwandtes Tool mit einigen Überschneidungen (nämlich __future__
Importe):
Andere bemerkenswerte Dinge:
u
(object)
aus class
Definitionensuper()
Anrufemock
ImporteDas heißt, ich konnte sed
für standard_library
:
sed -i '' '/.*standard_library.*/d' **/*.py
-from future import standard_library
-standard_library.install_aliases()
import json
import logging
import urllib.parse
Das gleiche habe ich vor für:
.*python_2_unicode_compatible.*
.*implements_iterator.*
from builtins.*
Ich kenne pyupgrade bereits und habe es verwendet. Es ist sehr hilfreich.
pyupgrade
(plus Pre-Commit-Hook) ist ein großartiges Werkzeug für diesen Zweck. Können wir diese FR schließen, da die Alternative verfügbar ist?
Hilfreichster Kommentar
Ich habe selbst einige Transformationen vorgenommen und sie in ein Skript gebündelt. Es ist derzeit hier verfügbar: https://github.com/purplediane/drop2