52

Pythonスクリプトを見て(または実行して)、各行(または関数)に必要なPythonのバージョンを判断する、Pylintに似たものはありますか?

たとえば、理論上の使用法:

$ 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

そのようなことは可能ですか?最も簡単な方法は、すべての Python バージョンをディスクに保存し、それぞれのバージョンでスクリプトを実行して、どのようなエラーが発生するかを確認することだと思います..

4

3 に答える 3

41

このすばらしい質問に触発されて、私は最近、これを実行しようとするスクリプトをまとめました。githubのpyqverで見つけることができます。

かなり完全ですが、まだ処理されていない側面がいくつかあります(READMEファイルに記載されています)。気軽にフォークして改善してください!

于 2009-05-04T10:55:39.980 に答える
8

実際の有用な答えではありませんが、ここではとにかく行きます。これは実行可能であると思います (おそらくかなりの演習ですが)。たとえば、確認したいバージョンの公式文法がすべて揃っていることを確認できます

次に、最初の文法バージョンから始まるコードのビットを解析します。次に、すべての組み込みモジュールの名前空間の同様のマップが必要であり、最も古いバージョンからコードを再度解析します。

結果は、コードの構文をサポートするバージョンの概要とモジュールの概要、およびそれを使用するために必要なバージョン (必要な場合) です。その結果を使用して、最適な最低バージョンと最高バージョンを計算できます。

于 2009-04-30T00:35:46.027 に答える