Python-future: Fixer zum Entfernen von __future__/future-Importen aus futurisiertem Code

Erstellt am 28. Mai 2019  ·  5Kommentare  ·  Quelle: PythonCharmers/python-future

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:

  • Entfernen Sie unnötige __future__ Importe (zum Beispiel print_function )
  • Zeilen from future import standard_library und standard_library.install_aliases() entfernen
  • from builtins import * Zeilen entfernen
  • from future.utils import python_2_unicode_compatible entfernen

Falls 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.

futurize script help wanted unscheduled wontfix / cantfix

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

Alle 5 Kommentare

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

asottile/pyupgrade: Ein Tool (und Pre-Commit-Hook) zum automatischen Aktualisieren der Syntax für neuere Versionen der Sprache.

Andere bemerkenswerte Dinge:

  • Entfernt das Präfix u
  • Entfernt (object) aus class Definitionen
  • Aktualisiert super() Anrufe
  • Aktualisiert mock Importe

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

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen