私は、Python 3.5用のソースコードをPython 3.4で実行可能にしたいと思っています。私が使用している3.4の3.5の唯一の機能はタイプヒントなので、それらを完全に削除するスクリプトを書いてみたいと思います。Pythonソースのタイプヒントをプログラムで削除する
これは最初の一見では十分に簡単に思えましたが、これを行うためにいくつかの正規表現を書くことにしましたが、いくつかのエッジケースについて考えましたが、次のような、
def foo(bar: Dict[T, List[T]],
baz: Callable[[T], int] = lambda x: (x+3)/7,
**kwargs) -> List[T]:
基本的には、すべてを解析し、型名なしで引数リストを再構築する必要があります。どのように私はこれに近づくだろうか? Dソースコードを解析する
使用Pythonの組み込みastモジュールをして、優れたastunparseライブラリが再び解析され、ASTからソースコードを生成する:
[ASTモジュール](https://docs.python.org/3/library/ast.html)はESP、ソースの変換作業であなたの友達です。 ['NodeTransformer'](https://docs.python.org/3/library/ast.html#ast.NodeTransformer)。逆の場合は、サードパーティ製のパッケージが必要な場合があります。ありがとうございます。 –
うわー、そのものは複雑です...私はこの文法を使ってタイプヒントを認識する方法も知らないでしょう – Klamann
[grammar](https://docs.python.org/3/library/ast.html)を見てください。 #抽象文法):例えば、 'arg'はオプションのexpr' annotation'と 'FunctionDef'オプションのexpr' returns'を含みます。変圧器はそれらを除去するでしょう。 –