Repolode
nipunn1313

nipunn1313/mypy-protobuf

Protocol Buffer定義から、型付きHasField、ClearField、gRPCスタブを含むPythonの.pyi型スタブを生成するprotocプラグイン。

スター
711
フォーク
81
未解決の Issue
31
最終コミット
5 日前

これは何?

mypy-protobufは、.proto定義からmypy互換の.pyiスタブを生成するprotocプラグインです。Pythonのprotobufコードに静的な型情報を付与し、mypyやpyrightなどの型チェッカーが実行時ではなく型チェック時にエラーを検出できるようにします。

protoc標準の--pyi_outが生成するスタブと比べて、生成ファイルにはフィールドの存在を考慮したコンストラクターの型、型付きのHasField、WhichOneof、ClearFieldメソッド、および各メソッドの引数の型エイリアスが追加されます。.protoファイル内のコメントはdocstringとしてスタブに引き継がれ、列挙値はNewTypeでラップされるため、列挙値の型の不一致を検出できます。非推奨の要素には@warnings.deprecatedを付けられます。

このプラグインは、同期・非同期の両方について、gRPCサービスとクライアントのスタブも生成します。また、スカラー型やmapフィールドの型をラップするためのcasttypeおよびkeytype/valuetypeオプションに対応しています。protoc 32以降とpython-protobuf 6.32以降が必要で、バージョン2.10以降はPython 2を対象としていません。

主な機能

  • 01フィールドの存在を考慮したコンストラクターの型を含む.pyiスタブを生成します。
  • 02型付きのHasField、WhichOneof、ClearFieldメソッドを提供します。
  • 03.protoのコメントをdocstringとしてスタブに引き継ぎます。
  • 04列挙値をNewTypeでラップし、型チェッカーが値の不一致を検出できるようにします。
  • 05同期・非同期のgRPCサービスとクライアントのスタブを生成します。
  • 06スカラー型やmapフィールドにカスタム型ラッパーを指定できます。

ユースケース

  • protobufメッセージを使うPythonプロジェクトに、mypyやpyrightによる静的型チェックを導入する。
  • Pythonサービス向けに、型付きのgRPCクライアントおよびサーバー実装用スタブを生成する。
  • 生成されたprotobufクラスのIDE補完とdocstringを充実させる。

クイックスタート

  1. 1

    protobuf のリリースページから protoc(バージョン 32.0 以降)をインストールします

  2. 2

    pip でプラグインをインストールします

    pip3 install mypy-protobuf
  3. 3

    protoc を使って、Python コードと一緒に mypy スタブを生成します

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

使う前に知っておきたいこと

  • protoc 32.0 以降と python-protobuf 6.32 以降が必要です。それ以前のバージョンはテストされていません。

収録されている特集

トピック

よくある質問

mypy-protobuf とは?
Protocol Buffer定義から、型付きHasField、ClearField、gRPCスタブを含むPythonの.pyi型スタブを生成するprotocプラグイン。 mypy-protobufは、.proto定義からmypy互換の.pyiスタブを生成するprotocプラグインです。Pythonのprotobufコードに静的な型情報を付与し、mypyやpyrightなどの型チェッカーが実行時ではなく型チェック時にエラーを検出できるようにします。
mypy-protobuf は無料で使えますか?ライセンスは?
mypy-protobuf は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
mypy-protobuf は今もメンテナンスされていますか?
活発にメンテナンス中。mypy-protobuf の最終コミットは 2026年11月2日 です。
mypy-protobuf は何に使えますか?
protobufメッセージを使うPythonプロジェクトに、mypyやpyrightによる静的型チェックを導入する。 Pythonサービス向けに、型付きのgRPCクライアントおよびサーバー実装用スタブを生成する。 生成されたprotobufクラスのIDE補完とdocstringを充実させる。
mypy-protobuf のインストール方法は?
protobuf のリリースページから protoc(バージョン 32.0 以降)をインストールします pip でプラグインをインストールします: pip3 install mypy-protobuf protoc を使って、Python コードと一緒に mypy スタブを生成します: protoc --python_out=output/location --mypy_out=output/location
mypy-protobuf はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/nipunn1313/mypy-protobuf

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト