Чисто Python-средство проверки типов во время выполнения, которое с минимальными накладными расходами проверяет соответствие аннотациям типов PEP для функций, классов и переменных.
agronholm/typeguard
Проверка типов Python во время выполнения: проверяет аннотации PEP 484 у функций, произвольных объектов и локальных переменных.
- Звёзды
- 1,793
- Форки
- 154
- Открытые issues
- 59
- Последний коммит
- 10 дней назад
Что это?
Typeguard проверяет аннотации типов Python во время выполнения программы и выявляет нарушения, которые не замечают статические анализаторы вроде mypy. Его можно использовать как более строгую альтернативу isinstance(), понимающую произвольные подсказки типов, или вместо cast(), чтобы действительно проверять значение.
Для автоматической проверки Typeguard предлагает два способа инструментирования. Декоратор @typechecked повторно компилирует отдельные функции, добавляя проверки аргументов, возвращаемых значений, присваиваний аннотированным локальным переменным, а также значений, передаваемых через yield и send в генераторах. Import hook, устанавливаемый с помощью install_import_hook(), инструментирует целевые модули при импорте, не меняя их исходный код, однако его нужно установить до загрузки этих модулей.
Библиотека также предоставляет check_argument_types() и check_return_type() — более простой и удобный для отладки способ проверки. Однако он менее надёжен при использовании динамически определяемых подсказок типов, например во вложенных функциях. Для инструментирования исходный код модулей должен быть доступен.
Ключевые возможности
- 01Проверяет аргументы и возвращаемые значения функций во время выполнения согласно аннотациям PEP 484.
- 02Работает с произвольными аннотациями типов и служит более функциональной заменой isinstance() или cast().
- 03Инструментирует отдельные функции с помощью декоратора @typechecked.
- 04Предоставляет import hook для проверки целевых модулей без изменения исходного кода.
- 05Проверяет значения, передаваемые через yield и send в обычных и асинхронных генераторах.
Сценарии использования
- Дополнительная защита типов в коде Python наряду со статической проверкой типов.
- Проверка данных на границах системы, где одних аннотаций недостаточно, чтобы гарантировать корректные типы.
- Отладка несоответствий типов, которые проявляются только во время выполнения.
- Контроль соблюдения подсказок типов в тестовых наборах или в staging-среде.
Быстрый старт
- 1
Установите пакет из PyPI
pip install typeguard - 2
Используйте check_type для проверки значения во время выполнения
Что важно знать
- В README лицензия не указана; в метаданных указано NOASSERTION, поэтому перед использованием проверьте файл лицензии.
- Для инструментирования кода исходный код инструментируемых модулей должен быть доступен.
- Хук импорта может конфликтовать с другими хуками импорта.
В подборках
Темы
Частые вопросы
- Что такое typeguard?
- Проверка типов Python во время выполнения: проверяет аннотации PEP 484 у функций, произвольных объектов и локальных переменных. Typeguard проверяет аннотации типов Python во время выполнения программы и выявляет нарушения, которые не замечают статические анализаторы вроде mypy. Его можно использовать как более строгую альтернативу isinstance(), понимающую произвольные подсказки типов, или вместо cast(), чтобы действительно проверять значение.
- typeguard можно использовать бесплатно? Какая у него лицензия?
- typeguard распространяется с открытым исходным кодом под лицензией Other. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- typeguard всё ещё поддерживается?
- Активно поддерживается. Последний коммит в typeguard — 29 окт. 2026 г..
- Для чего можно использовать typeguard?
- Дополнительная защита типов в коде Python наряду со статической проверкой типов. Проверка данных на границах системы, где одних аннотаций недостаточно, чтобы гарантировать корректные типы. Отладка несоответствий типов, которые проявляются только во время выполнения. Контроль соблюдения подсказок типов в тестовых наборах или в staging-среде.
- Как установить typeguard?
- Установите пакет из PyPI: pip install typeguard Используйте check_type для проверки значения во время выполнения
- Где скачать typeguard?
- Исходный код и инструкции по установке — на GitHub: https://github.com/agronholm/typeguard
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Статический анализатор типов для Python: находит ошибки типов по аннотациям PEP 484, не запуская код.
Статический анализатор типов Python по стандартам языка, доступный как CLI-инструмент и расширение для Visual Studio Code; подходит для крупных кодовых баз.
Плагин для pytest, который запускает статический анализатор типов mypy для исходных файлов во время тестов.
Инструмент статического анализа PHP, который находит ошибки в коде, не запуская его.
TypeScript-трансформер, который на этапе сборки превращает обычные типы TypeScript в runtime-валидаторы, JSON-сериализаторы, кодеки protobuf и генераторы случайных данных.