Biblioteca de Python para detectar estáticamente tipos de nodos AST.
Un buen caso de uso es un enlace que necesita ejecutar algunas reglas solo para tipos particulares. Por ejemplo, para verificar los argumentos de something.format(a=b) solo si something tiene tipo str .
python3 -m pip install astypesAstipes usa el Atroides para inferir definiciones de nodos. Entonces, si su código funciona con nodos AST, primero deberá convertirlos en Atroides:
import astroid
import astypes
module = astroid . parse ( source_code )
node = astypes . find_node ( module , ast_node )Y cuando tienes un nodo atroides, puedes obtener su tipo:
node_type = astype . get_node ( node )
print ( node_type . annotation )Ejemplo:
import astroid
import astypes
node = astroid . extract_node ( '1 + 2.3' )
t = astypes . get_type ( node )
print ( t . annotation ) # 'float'Para un ejemplo de uso del mundo real, consulte los tipos de infierno. Es una herramienta CLI que agrega automáticamente anotaciones de tipo en el código Python usando Astipes.
Puede encontrar la mayor parte de la lógica en Astipes/_handlers.py. En breve:
13 es siempre int .list(x) devuelve list de tipos. Puede que no sea cierto si list con algo más.