crflynn / protobuf-init

python protoc plugin for generating __init__.py (init) files

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

protobuf-init

To install:

pip install protobuf-init

This package will create __init__.py files when compiling *.proto files. Optionally, it will create relative imports from generated *_pb.py, *_pb_grpc.py, and *_grpc.py files from protobuf, grpcio, and grpclib packages, respectively.

Using the protos folder of this project as an example, the following command will generate the contents of the example package, also in this project (assuming grpcio-tools is installed):

export PROTO_PATH=./protos
export GEN_PATH=.
python -m grpc_tools.protoc \
    --python_out=$GEN_PATH \
    --mypy_out=$GEN_PATH \
    --init_python_out=$GEN_PATH \
    --init_python_opt=imports=protobuf+grpcio+grpclib \
    --grpc_python_out=$GEN_PATH \
    --grpclib_python_out=$GEN_PATH \
    --proto_path=$PROTO_PATH 
    $(find $PROTO_PATH -name '*.proto')

The --init_python_out=$GEN_PATH flag indicates to call the plugin to create the init files.

The --init_python_opt=imports=protobuf+grpcio+grpclib indicates which relative imports to include in the init files. Allowed options are protobuf, grpcio, grpclib, separated by +. (Note that both grpcio and grpclib generate <ServiceName>Stub objects which would collide in the init file.)

About

python protoc plugin for generating __init__.py (init) files

License:MIT License


Languages

Language:Python 95.6%Language:Makefile 4.4%