Repolode
nipunn1313

nipunn1313/mypy-protobuf

Плагин для protoc, генерирующий Python-файлы .pyi с типами по определениям Protocol Buffer, включая типизированные HasField, ClearField и gRPC-заглушки.

Звёзды
711
Форки
81
Открытые issues
31
Последний коммит
5 дней назад

Что это?

mypy-protobuf — плагин для protoc, который генерирует совместимые с mypy файлы .pyi по определениям .proto. Он добавляет статическую типизацию в Python-код для protobuf, чтобы средства проверки типов, например mypy и pyright, могли находить ошибки во время проверки типов, а не при выполнении программы.

В отличие от заглушек, которые создаёт встроенный в protoc параметр --pyi_out, сгенерированные файлы учитывают наличие полей в типах конструктора, добавляют типизированные методы HasField, WhichOneof и ClearField, а также псевдонимы типов для их аргументов. Комментарии из файлов .proto попадают в заглушки в виде docstring, а значения enum оборачиваются в NewType, чтобы средства проверки типов обнаруживали несовпадения. Устаревшие элементы можно помечать с помощью @warnings.deprecated.

Плагин также генерирует заглушки для gRPC-сервисов и клиентов — для синхронного и асинхронного вариантов — и поддерживает параметры casttype и keytype/valuetype для обёртывания скалярных типов и типов полей map. Для его работы требуются protoc версии 32 или новее и python-protobuf версии 6.32 или новее; начиная с версии 2.10 поддержка Python 2 удалена.

Ключевые возможности

  • 01Генерирует заглушки .pyi с типами конструктора, учитывающими наличие полей.
  • 02Добавляет типизированные методы HasField, WhichOneof и ClearField.
  • 03Переносит комментарии из .proto в заглушки в виде docstring.
  • 04Оборачивает значения enum в NewType, чтобы средства проверки типов обнаруживали несовпадения.
  • 05Генерирует синхронные и асинхронные заглушки для gRPC-сервисов и клиентов.
  • 06Поддерживает пользовательские обёртки типов для скалярных полей и полей map.

Сценарии использования

  • Добавление статической проверки типов с помощью mypy или pyright в Python-проект, использующий protobuf-сообщения.
  • Генерация типизированных заглушек gRPC-клиентов и обработчиков сервисов для Python.
  • Улучшение автодополнения в IDE и отображения docstring у сгенерированных классов protobuf.

Быстрый старт

  1. 1

    Установите protoc (версии 32.0 или новее) со страницы релизов protobuf

  2. 2

    Установите плагин с помощью pip

    pip3 install mypy-protobuf
  3. 3

    С помощью protoc сгенерируйте mypy-стабы вместе с кодом на Python

    protoc --python_out=output/location --mypy_out=output/location

Что важно знать

  • Требуются актуальные версии: protoc 32.0 или новее и python-protobuf 6.32 или новее. Более ранние версии не тестировались.

В подборках

Темы

Частые вопросы

Что такое mypy-protobuf?
Плагин для protoc, генерирующий Python-файлы .pyi с типами по определениям Protocol Buffer, включая типизированные HasField, ClearField и gRPC-заглушки. mypy-protobuf — плагин для protoc, который генерирует совместимые с mypy файлы .pyi по определениям .proto. Он добавляет статическую типизацию в Python-код для protobuf, чтобы средства проверки типов, например mypy и pyright, могли находить ошибки во время проверки типов, а не при выполнении программы.
mypy-protobuf можно использовать бесплатно? Какая у него лицензия?
mypy-protobuf распространяется с открытым исходным кодом под лицензией Apache-2.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
mypy-protobuf всё ещё поддерживается?
Активно поддерживается. Последний коммит в mypy-protobuf — 2 нояб. 2026 г..
Для чего можно использовать mypy-protobuf?
Добавление статической проверки типов с помощью mypy или pyright в Python-проект, использующий protobuf-сообщения. Генерация типизированных заглушек gRPC-клиентов и обработчиков сервисов для Python. Улучшение автодополнения в IDE и отображения docstring у сгенерированных классов protobuf.
Как установить mypy-protobuf?
Установите protoc (версии 32.0 или новее) со страницы релизов protobuf Установите плагин с помощью pip: pip3 install mypy-protobuf С помощью protoc сгенерируйте mypy-стабы вместе с кодом на Python: protoc --python_out=output/location --mypy_out=output/location
Где скачать mypy-protobuf?
Исходный код и инструкции по установке — на GitHub: https://github.com/nipunn1313/mypy-protobuf

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Независимый от языка и платформы формат и набор инструментов Google для сериализации структурированных данных: компилятор protoc и среды выполнения для множества языков.

72,2 тыс.+15 за неделю16,4 тыс.C++OtherОбновлён 7 часов назад