Python Library pour détecter statiquement les types pour les nœuds AST.
Un bon cas d'utilisation est un linter qui doit exécuter certaines règles uniquement pour des types particuliers. Par exemple, pour vérifier les arguments de something.format(a=b) uniquement si something a type str .
python3 -m pip install astypesASTYPES utilise l'astroïde pour déduire les définitions des nœuds. Donc, si votre code fonctionne avec les nœuds AST, vous devrez d'abord les convertir en astroïd:
import astroid
import astypes
module = astroid . parse ( source_code )
node = astypes . find_node ( module , ast_node )Et lorsque vous avez un nœud astroïde, vous pouvez obtenir son type:
node_type = astype . get_node ( node )
print ( node_type . annotation )Exemple:
import astroid
import astypes
node = astroid . extract_node ( '1 + 2.3' )
t = astypes . get_type ( node )
print ( t . annotation ) # 'float'Pour un exemple d'utilisation du monde réel, consultez les types d'inférences. Il s'agit d'un outil CLI qui ajoute automatiquement des annotations de type dans le code Python à l'aide d'Astypes.
Vous pouvez trouver la majeure partie de la logique dans Astypes / _Handlers.py. En bref:
13 est toujours int .list(x) renvoie list des types. Ce n'est peut-être pas vrai si vous list l'ombre avec autre chose.