Библиотека Python для статического обнаружения типов для узлов AST.
Хороший вариант использования - это Линтер, которому необходимо запустить некоторые правила только для определенных типов. Например, чтобы проверить аргументы something.format(a=b) только в том случае, если something имеет тип str .
python3 -m pip install astypesAstypes использует астроиду, чтобы вывести определения узлов. Итак, если ваш код работает с узлами AST, вам нужно сначала преобразовать в астроиду:
import astroid
import astypes
module = astroid . parse ( source_code )
node = astypes . find_node ( module , ast_node )А когда у вас есть астроидный узел, вы можете получить его тип:
node_type = astype . get_node ( node )
print ( node_type . annotation )Пример:
import astroid
import astypes
node = astroid . extract_node ( '1 + 2.3' )
t = astypes . get_type ( node )
print ( t . annotation ) # 'float'Для примера использования в реальном мире посетите типы вывода. Это инструмент CLI, который автоматически добавляет аннотации типа в код Python с использованием Astypes.
Вы можете найти большую часть логики в astypes/_handlers.py. Суммируя:
13 всегда int .list(x) возвращает list типов. Это может быть не правдой, если вы list с чем -то другим.