diff options
author | kpayson64 <kpayson@google.com> | 2016-07-19 15:45:10 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-19 15:45:10 -0700 |
commit | e2195c06446c21a907a450149acec1e5cc2cb3d3 (patch) | |
tree | aeb8e8597bbf220680202ac0d5d6fd0146c3fd8a /tools/distrib | |
parent | 4fa58f082b03450f0b70980d64948d90b2752c8d (diff) | |
parent | 34c9a73ab907dd3e7dadaa82af465399290eebfc (diff) |
Merge pull request #7397 from soltanmm/hua-tulyada-hua-wa-hua-HEY-Hey-hey-hey
Document the custom grpcio-tools command class
Diffstat (limited to 'tools/distrib')
-rw-r--r-- | tools/distrib/python/grpcio_tools/README.rst | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tools/distrib/python/grpcio_tools/README.rst b/tools/distrib/python/grpcio_tools/README.rst index 4e5263ded5..55521d17bb 100644 --- a/tools/distrib/python/grpcio_tools/README.rst +++ b/tools/distrib/python/grpcio_tools/README.rst @@ -137,3 +137,42 @@ Given protobuf include directories :code:`$INCLUDE`, an output directory :: $ python -m grpc.tools.protoc -I$INCLUDE --python_out=$OUTPUT --grpc_python_out=$OUTPUT $PROTO_FILES + +To use as a build step in distutils-based projects, you may use the provided +command class in your :code:`setup.py`: + +:: + + setuptools.setup( + # ... + cmdclass={ + 'build_proto_modules': grpc.tools.command.BuildPackageProtos, + } + # ... + ) + +Invocation of the command will walk the project tree and transpile every +:code:`.proto` file into a :code:`_pb2.py` file in the same directory. + +Note that this particular approach requires :code:`grpcio-tools` to be +installed on the machine before the setup script is invoked (i.e. no +combination of :code:`setup_requires` or :code:`install_requires` will provide +access to :code:`grpc.tools.command.BuildPackageProtos` if it isn't already +installed). One way to work around this can be found in our +:code:`grpcio-health-checking` +`package <https://pypi.python.org/pypi/grpcio-health-checking>`_: + +:: + + class BuildPackageProtos(setuptools.Command): + """Command to generate project *_pb2.py modules from proto files.""" + # ... + def run(self): + from grpc.tools import command + command.build_package_protos(self.distribution.package_dir['']) + +Now including :code:`grpcio-tools` in :code:`setup_requires` will provide the +command on-setup as desired. + +For more information on command classes, consult :code:`distutils` and +:code:`setuptools` documentation. |