Instagram открыл код MonkeyType, системы аннотации типов для Python

Материал из Викиновостей, свободного источника новостей

22 декабря 2017 года

Сервис Instagram объявил об открытии исходных текстов проекта MonkeyType, в рамках которого разработана система для языка Python, позволяющая генерировать аннотации типов на основе сбора информации о типах переменных во время выполнения кода. Код открыт под лицензией BSD. Для работы требуется Python 3.6 (аннотации сохраняются в атрибуте __annotations__ , а не в комментариях) и опционально утилита retype для подстановки аннотаций в код.

Система была разработана как для упрощения понимания кода проектов новыми разработчиками, так и для автоматизированного выявления ошибок через применение статического анализа типов. Статический анализ имеет смысл только если большая часть кода снабжена сведениями о типах, но если для нового кода такая работа может быть выполнена вручную, то для старого кода и сторонних библиотек подобная задача оказалась не по силам и после ряда попыток анализа типов в модулях вручную было принято решение автоматизировать работу. В итоге была создана система MonkeyType.

Для сбора информации о типах применяется вызов sys.setprofile, предоставляемый в Python для перехвата событий вызова/завершения функций и результатов работы генераторов/yield. Вначале Python-приложение запускается под контролем MonkeyType в режиме трассировки, в ходе которой определяются типы аргументов и возвращаемых значений функций и методов во всех импортированных модулях. На основании полученных сведений формируется дамп трассировки (monkeytype.sqlite3), на базе которого затем могут быть сгенерированы файлы-заглушки (stub) для утилиты retype или выполнена подстановка черновых аннотаций типов прямо в исходные тексты.

Источники[править]


Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «Instagram открыл код MonkeyType, системы аннотации типов для Python», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.