いくつかの Python ソース コードがあり、変数の型を調べたいと考えています。たとえば、文字列が与えられた場合
"""
greeting = "Hello"
"""
したいget_type('greeting') == str
。または、より複雑な例:
"""
def test(input: str):
output = len(input)
return str
"""
疑似コードでは、次のようなことができるようにしたい:
>>> m = parse_module()
>>> m.functions['test'].locals['output'].get_type()
int
これは、Python 3 の型注釈と MyPy で可能になるはずですが、方法がわかりません。VS コードのような IDE は、Python コードの型を推測するのが非常に得意になっています。
モジュールtyped-astがあり、MyPy でも使用されているようで、そこに行く途中です。ただし、これは型の推論や伝播は行いません。私が理解している限り、明示的な注釈を提供するだけです。MyPy を API として使用しますが、チェッカーを実行することしかできず、コマンド ライン ツールと同じエラー メッセージが返されます。MyPy に「到達」し、推測された情報の一部を取得する方法、または考えもしなかった代替ソリューションを探しています。