Frage

Gibt es etwas ähnlich wie Pylint, die in einem Python-Skript aussehen werden (oder es laufen), und ermitteln, welche Version von Python jeder Zeile (oder Funktion) erfordert?

Zum Beispiel theoretische Nutzung:

$ magic_tool <EOF
with something:
    pass
EOF
1: 'with' statement requires Python 2.6 or greater

$ magic_tool <EOF
class Something:
    @classmethod
    def blah(cls):
        pass
EOF
2: classmethod requires Python 2.2 or greater
$ magic_tool <EOF
print """Test
"""
EOF
1: Triple-quote requires Python 1.5 of later

Ist so etwas möglich? Ich nehme an, der einfachste Weg, um alle Python-Versionen auf CD zu haben wäre, führen Sie das Skript mit jedem und sehen, welche Fehler auftreten ..

War es hilfreich?

Lösung

durch diese ausgezeichnete Frage inspiriert, ich vor kurzem zusammen ein Skript setzen, die dies zu tun versucht. Sie können es auf Github finden Sie unter pyqver .

Es ist ziemlich vollständig, aber es gibt einige Aspekte, die noch nicht behandelt werden (wie in der Readme-Datei erwähnt). Fühlen Sie sich frei zu gabeln und zu verbessern!

Andere Tipps

Nicht eine tatsächliche nützliche Antwort, aber hier geht es trotzdem. Ich denke, dies machbar sein sollte, machen (wenn auch wahrscheinlich schon eine Übung), zum Beispiel könnten Sie sicher, dass Sie alle offiziellen Grammatiken für die Versionen haben Sie überprüfen möchten, wie dieses .

Dann das Stück Code analysiert mit der ersten Grammatik-Version zu starten. Als nächstes müssen Sie eine ähnliche Karte aller integrierten Modul Namensraumes und den Code erneut mit der frühesten Version beginnen analysieren, obwohl es schwierig sein könnte, zwischen eingebauten Modulen und Modulen zu unterscheiden, die in zwischen wie ElementTree externen oder etwas sind.

Das Ergebnis sollte ein Überblick über die Versionen sein, die die Syntax des Codes und eine Übersicht über die Module und welche Version (wenn überhaupt) unterstützen wird benötigt, es zu benutzen. Mit diesem Ergebnis konnte man die besten niedrigsten und höchsten Version berechnen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top