Вопрос проверяет знание инфраструктуры типизации и понимание, как Python работает с внешними и динамическими библиотеками.
Stub-файлы — это файлы с аннотациями типов без реализации кода. Они используются для статического анализа и автодополнения. Обычно применяются, когда исходный код не содержит типов или написан на другом языке. Stub-файлы имеют расширение .pyi. Они помогают улучшить качество типизации без изменения рабочего кода.
Stub-файлы — важная часть экосистемы статической типизации Python.
Stub-файл (.pyi) — это файл, содержащий только сигнатуры функций, методов и классов без реализации.
Они применяются, когда:
библиотека не имеет аннотаций типов
код сгенерирован или написан на C
типизация не может быть добавлена напрямую
# math_utils.pyi
def add(a: int, b: int) -> int: ...Файл:
описывает интерфейс
не содержит логики
используется анализаторами (mypy, pyright)
Внешние библиотеки
стандартная библиотека
C-расширения
Большие legacy-проекты
постепенное внедрение типизации
Инструменты разработки
автодополнение
проверка типов
навигация по коду
Stub-файлы могут находиться:
рядом с .py файлами
в typeshed
в отдельных пакетах types-*
Stub-файлы позволяют добавить строгую типизацию без изменения исполняемого кода, что делает их незаменимыми для библиотек и legacy-систем.