Я работаю с большой существующей кодовой базой Python и хотел бы начать добавлять аннотации типов, чтобы я мог получить некоторый уровень статической проверки. Я представляю себе что-то вроде Erlang, Strongtalk, или Типичная схема /Racket.
Я видел быстрых и грязных декораторов, которые вставляют динамические проверки на основе параметров функций и аннотаций типа возвращаемого типа, но я ищу что-то более надежное и выполняет проверки во время компиляции.
Какие инструменты доступны прямо сейчас для такого рода вещей? Я знаком с компиляторами и проверкой типов, и я определенно готов улучшить неполный инструмент, если он имеет хорошую основу.
(Примечание: меня не интересует обсуждение плюсов и минусов статической типизации.)
EDIT: Пример:
def put(d, k, v):
d[k] = v
Я хотел бы иметь возможность комментировать функцию put
как имеющую тип put<K,V>(dict<K,V>, K, V) -> None
.
UPDATE. Новый PEP 484 (сентябрь 2014) определяет стандарт для статической типизации и аннотации типов в Python 3.5+. Там есть инструмент проверки типов mypy, который совместим с PEP 484.