Получение строк документов Python с помощью ast

Получение doc-строк с помощью ast в Python намного проще и надежнее, чем любой метод regex или перебора. Это также гораздо менее пугающе, чем я думал вначале.

Парсинг

Сначала вам нужно загрузить некоторый код python в виде строки и разобрать его с помощью команды

py_file = Path("plugins/auto_publish.py") raw_tree = py_file.read_text() tree = ast.parse(raw_tree)
Войти в полноэкранный режим Выйти из полноэкранного режима

Получение строки Docstring

Затем вы можете использовать ast.get_docstring, чтобы получить docstring узла, который вы сейчас просматриваете. В случае свежей загрузки в файл, это будет докстринг уровня модуля, который находится в самом верху файла.

module_docstring = ast.get_docstring(tree)
Войти в полноэкранный режим Выход из полноэкранного режима

Поиск всех функций

Чтобы получить докстринги всех функций, мы можем использовать ast.walk для поиска узлов, которые являются экземпляром ast.FunctionDef, затем запустить get_docstring на этих узлах.

functions = [f for f in ast.walk(tree) if isinstance(f, ast.FunctionDef)] function_docs = [ast.get_docstring(f) for f in functions]
Вход в полноэкранный режим Выход из полноэкранного режима

ast.walk docs: Рекурсивно вывести все узлы-потомки в дереве, начиная с узла
(включая сам узел), без указания порядка. Это полезно, если вы
хотите изменять только узлы на месте и не заботитесь о контексте.

Пример

Вот изображение того, как я запускаю этот пример через ipython.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *