Python -Bibliothek, um Typen für AST -Knoten statisch zu erkennen.
Ein guter Anwendungsfall ist ein Linter, der einige Regeln nur für bestimmte Typen ausführen muss. Zum Beispiel, um Argumente something something.format(a=b) zu überprüfen str
python3 -m pip install astypesASTypes verwendet Astroid, um Definitionen von Knoten zu schließen. Wenn Ihr Code also mit AST -Knoten funktioniert, müssen Sie sie zuerst in Astroid konvertieren:
import astroid
import astypes
module = astroid . parse ( source_code )
node = astypes . find_node ( module , ast_node )Und wenn Sie einen Astroidknoten haben, können Sie seinen Typ erhalten:
node_type = astype . get_node ( node )
print ( node_type . annotation )Beispiel:
import astroid
import astypes
node = astroid . extract_node ( '1 + 2.3' )
t = astypes . get_type ( node )
print ( t . annotation ) # 'float'Für ein Beispiel für ein reales Verwendungsbeispiel finden Sie infer-Typen. Es handelt sich um ein CLI -Tool, das mithilfe von ASTypes automatisch Typ Anmerkungen in Python -Code hinzufügt.
Sie finden den größten Teil der Logik in Asttypes/_Handlers.py. Zusamenfassend:
13 immer int .list(x) list zurückgibt. Es ist möglicherweise nicht der Fall, wenn Sie mit etwas anderem list .