aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/distrib/python/grpcio_tools/grpc
diff options
context:
space:
mode:
authorGravatar Masood Malekghassemi <atash@google.com>2016-04-29 16:54:17 -0700
committerGravatar Masood Malekghassemi <atash@google.com>2016-05-04 15:30:30 -0700
commit0e25c8d71a4ac49d284dcfa926bc04dcac577ba9 (patch)
tree91bcba2160f11d53a2f5a3b92d12cfc2dc47758c /tools/distrib/python/grpcio_tools/grpc
parentaf3158350ecaa86ff727af39d16a4a4599e9de3d (diff)
Tightly integrate the Python plugin with its protoc
This grossly simplifies the protoc invocation to: python -m grpc.protoc.compiler --python_out=... --grpc_python_out=... [...] --plugin=protoc-gen-python-grpc=grpc_python_protoc_plugin... [...]
Diffstat (limited to 'tools/distrib/python/grpcio_tools/grpc')
-rw-r--r--tools/distrib/python/grpcio_tools/grpc/protoc/compiler.py (renamed from tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_compiler.py)4
-rw-r--r--tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_plugin.py38
-rw-r--r--tools/distrib/python/grpcio_tools/grpc/protoc/main.cc25
-rw-r--r--tools/distrib/python/grpcio_tools/grpc/protoc/protoc_compiler.pyx (renamed from tools/distrib/python/grpcio_tools/grpc/protoc/protoc.pyx)0
-rw-r--r--tools/distrib/python/grpcio_tools/grpc/protoc/protoc_plugin.pyx39
5 files changed, 27 insertions, 79 deletions
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_compiler.py b/tools/distrib/python/grpcio_tools/grpc/protoc/compiler.py
index 5395f2ac10..caafc544b2 100644
--- a/tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_compiler.py
+++ b/tools/distrib/python/grpcio_tools/grpc/protoc/compiler.py
@@ -31,8 +31,8 @@
import sys
-from grpc.protoc import protoc
+from grpc.protoc import protoc_compiler
if __name__ == '__main__':
- protoc.run_main(sys.argv)
+ protoc_compiler.run_main(sys.argv)
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_plugin.py b/tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_plugin.py
deleted file mode 100644
index 3b279e2976..0000000000
--- a/tools/distrib/python/grpcio_tools/grpc/protoc/grpc_python_protoc_plugin.py
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright 2016, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-import sys
-
-from grpc.protoc import protoc_plugin
-
-
-if __name__ == '__main__':
- protoc_plugin.run_main(sys.argv)
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/main.cc b/tools/distrib/python/grpcio_tools/grpc/protoc/main.cc
new file mode 100644
index 0000000000..2a0bc6d2d1
--- /dev/null
+++ b/tools/distrib/python/grpcio_tools/grpc/protoc/main.cc
@@ -0,0 +1,25 @@
+#include <google/protobuf/compiler/command_line_interface.h>
+#include <google/protobuf/compiler/python/python_generator.h>
+
+#include "src/compiler/python_generator.h"
+
+#include "grpc/protoc/main.h"
+
+int main(int argc, char* argv[]) {
+ google::protobuf::compiler::CommandLineInterface cli;
+ cli.AllowPlugins("protoc-");
+
+ // Proto2 Python
+ google::protobuf::compiler::python::Generator py_generator;
+ cli.RegisterGenerator("--python_out", &py_generator,
+ "Generate Python source file.");
+
+ // gRPC Python
+ grpc_python_generator::GeneratorConfiguration grpc_py_config;
+ grpc_py_config.beta_package_root = "grpc.beta";
+ grpc_python_generator::PythonGrpcGenerator grpc_py_generator(grpc_py_config);
+ cli.RegisterGenerator("--grpc_python_out", &grpc_py_generator,
+ "Generate Python source file.");
+
+ return cli.Run(argc, argv);
+}
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/protoc.pyx b/tools/distrib/python/grpcio_tools/grpc/protoc/protoc_compiler.pyx
index d987ee1cea..d987ee1cea 100644
--- a/tools/distrib/python/grpcio_tools/grpc/protoc/protoc.pyx
+++ b/tools/distrib/python/grpcio_tools/grpc/protoc/protoc_compiler.pyx
diff --git a/tools/distrib/python/grpcio_tools/grpc/protoc/protoc_plugin.pyx b/tools/distrib/python/grpcio_tools/grpc/protoc/protoc_plugin.pyx
deleted file mode 100644
index d987ee1cea..0000000000
--- a/tools/distrib/python/grpcio_tools/grpc/protoc/protoc_plugin.pyx
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2016, Google Inc.
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-# * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-# * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-from libc cimport stdlib
-
-cdef extern from "grpc/protoc/main.h":
- int main(int argc, char *argv[])
-
-def run_main(list args not None):
- cdef char **argv = <char **>stdlib.malloc(len(args)*sizeof(char *))
- for i in range(len(args)):
- argv[i] = args[i]
- return main(len(args), argv)