Perpustakaan Python untuk secara statis mendeteksi jenis untuk node AST.
Kasing penggunaan yang baik adalah linter yang perlu menjalankan beberapa aturan hanya untuk jenis tertentu. Misalnya, untuk memeriksa argumen something.format(a=b) hanya jika ada something yang memiliki tipe str .
python3 -m pip install astypesAstypes menggunakan Astroid untuk menyimpulkan definisi node. Jadi, jika kode Anda bekerja dengan ast node, Anda harus mengubahnya menjadi astroid terlebih dahulu:
import astroid
import astypes
module = astroid . parse ( source_code )
node = astypes . find_node ( module , ast_node )Dan ketika Anda memiliki node astroid, Anda bisa mendapatkan jenisnya:
node_type = astype . get_node ( node )
print ( node_type . annotation )Contoh:
import astroid
import astypes
node = astroid . extract_node ( '1 + 2.3' )
t = astypes . get_type ( node )
print ( t . annotation ) # 'float'Untuk contoh penggunaan dunia nyata, lihat tipe infer. Ini adalah alat CLI yang secara otomatis menambahkan jenis anotasi ke kode python menggunakan astypes.
Anda dapat menemukan sebagian besar logika di astypes/_handlers.py. Pendeknya:
13 selalu int .list(x) mengembalikan list jenis. Mungkin tidak benar jika Anda membayangi list dengan sesuatu yang lain.