Python#
Rules for generating Python protobuf and gRPC .py
files and libraries using standard Protocol Buffers and gRPC or grpclib. Libraries are created with py_library
from rules_python
. To use the fast C++ Protobuf implementation, you can add --define=use_fast_cpp_protos=true
to your build, but this requires you setup the path to your Python headers.
Note
If you have proto libraries that produce overlapping import paths, be sure to set legacy_create_init=False
on the top level py_binary
or py_test
to ensure all paths are importable.
Rule |
Description |
---|---|
Generates Python protobuf |
|
Generates Python protobuf and gRPC |
|
Generates Python protobuf and grpclib |
|
Generates a Python protobuf library using |
|
Generates a Python protobuf and gRPC library using |
|
Generates a Python protobuf and grpclib library using |
python_proto_compile#
Generates Python protobuf .py
files
Example#
Full example project can be found here
BUILD.bazel
#
load("@rules_proto_grpc_python//:defs.bzl", "python_proto_compile")
python_proto_compile(
name = "person_python_proto",
protos = ["@rules_proto_grpc_example_protos//:person_proto"],
)
python_proto_compile(
name = "place_python_proto",
protos = ["@rules_proto_grpc_example_protos//:place_proto"],
)
python_proto_compile(
name = "thing_python_proto",
protos = ["@rules_proto_grpc_example_protos//:thing_proto"],
)
Attributes#
Name |
Type |
Mandatory |
Default |
Description |
---|---|---|---|---|
|
|
true |
List of labels that provide the |
|
|
|
false |
|
Extra options to pass to plugins, as a dict of plugin label -> list of strings. The key * can be used exclusively to apply to all plugins |
|
|
false |
|
The verbosity level. Supported values and results are 0: Show nothing, 1: Show command, 2: Show command and sandbox after running protoc, 3: Show command and sandbox before and after running protoc, 4. Show env, command, expected outputs and sandbox before and after running protoc |
|
|
false |
|
Path to prefix to the generated files in the output directory |
|
|
false |
|
A list of extra command line arguments to pass directly to protoc, not as plugin options |
|
|
false |
|
List of labels that provide extra files to be available during protoc execution |
|
|
false |
|
The output mode for the target. PREFIXED (the default) will output to a directory named by the target within the current package root, NO_PREFIX will output directly to the current package. Using NO_PREFIX may lead to conflicting writes |
Plugins#
python_grpc_compile#
Generates Python protobuf and gRPC .py
files
Example#
Full example project can be found here
BUILD.bazel
#
load("@rules_proto_grpc_python//:defs.bzl", "python_grpc_compile")
python_grpc_compile(
name = "thing_python_grpc",
protos = ["@rules_proto_grpc_example_protos//:thing_proto"],
)
python_grpc_compile(
name = "greeter_python_grpc",
protos = ["@rules_proto_grpc_example_protos//:greeter_grpc"],
)
Attributes#
Name |
Type |
Mandatory |
Default |
Description |
---|---|---|---|---|
|
|
true |
List of labels that provide the |
|
|
|
false |
|
Extra options to pass to plugins, as a dict of plugin label -> list of strings. The key * can be used exclusively to apply to all plugins |
|
|
false |
|
The verbosity level. Supported values and results are 0: Show nothing, 1: Show command, 2: Show command and sandbox after running protoc, 3: Show command and sandbox before and after running protoc, 4. Show env, command, expected outputs and sandbox before and after running protoc |
|
|
false |
|
Path to prefix to the generated files in the output directory |
|
|
false |
|
A list of extra command line arguments to pass directly to protoc, not as plugin options |
|
|
false |
|
List of labels that provide extra files to be available during protoc execution |
|
|
false |
|
The output mode for the target. PREFIXED (the default) will output to a directory named by the target within the current package root, NO_PREFIX will output directly to the current package. Using NO_PREFIX may lead to conflicting writes |
Plugins#
python_grpclib_compile#
Generates Python protobuf and grpclib .py
files (supports Python 3 only)
Example#
Full example project can be found here
BUILD.bazel
#
load("@rules_proto_grpc_python//:defs.bzl", "python_grpclib_compile")
python_grpclib_compile(
name = "thing_python_grpc",
protos = ["@rules_proto_grpc_example_protos//:thing_proto"],
)
python_grpclib_compile(
name = "greeter_python_grpc",
protos = ["@rules_proto_grpc_example_protos//:greeter_grpc"],
)
Attributes#
Name |
Type |
Mandatory |
Default |
Description |
---|---|---|---|---|
|
|
true |
List of labels that provide the |
|
|
|
false |
|
Extra options to pass to plugins, as a dict of plugin label -> list of strings. The key * can be used exclusively to apply to all plugins |
|
|
false |
|
The verbosity level. Supported values and results are 0: Show nothing, 1: Show command, 2: Show command and sandbox after running protoc, 3: Show command and sandbox before and after running protoc, 4. Show env, command, expected outputs and sandbox before and after running protoc |
|
|
false |
|
Path to prefix to the generated files in the output directory |
|
|
false |
|
A list of extra command line arguments to pass directly to protoc, not as plugin options |
|
|
false |
|
List of labels that provide extra files to be available during protoc execution |
|
|
false |
|
The output mode for the target. PREFIXED (the default) will output to a directory named by the target within the current package root, NO_PREFIX will output directly to the current package. Using NO_PREFIX may lead to conflicting writes |
Plugins#
python_proto_library#
Generates a Python protobuf library using py_library
from rules_python
Example#
Full example project can be found here
BUILD.bazel
#
load("@rules_proto_grpc_python//:defs.bzl", "python_proto_library")
python_proto_library(
name = "person_python_proto",
protos = ["@rules_proto_grpc_example_protos//:person_proto"],
deps = ["place_python_proto"],
)
python_proto_library(
name = "place_python_proto",
protos = ["@rules_proto_grpc_example_protos//:place_proto"],
deps = ["thing_python_proto"],
)
python_proto_library(
name = "thing_python_proto",
protos = ["@rules_proto_grpc_example_protos//:thing_proto"],
)
Attributes#
Name |
Type |
Mandatory |
Default |
Description |
---|---|---|---|---|
|
|
true |
List of labels that provide the |
|
|
|
false |
|
Extra options to pass to plugins, as a dict of plugin label -> list of strings. The key * can be used exclusively to apply to all plugins |
|
|
false |
|
The verbosity level. Supported values and results are 0: Show nothing, 1: Show command, 2: Show command and sandbox after running protoc, 3: Show command and sandbox before and after running protoc, 4. Show env, command, expected outputs and sandbox before and after running protoc |
|
|
false |
|
Path to prefix to the generated files in the output directory |
|
|
false |
|
A list of extra command line arguments to pass directly to protoc, not as plugin options |
|
|
false |
|
List of labels that provide extra files to be available during protoc execution |
|
|
false |
|
The output mode for the target. PREFIXED (the default) will output to a directory named by the target within the current package root, NO_PREFIX will output directly to the current package. Using NO_PREFIX may lead to conflicting writes |
|
|
false |
|
List of labels to pass as deps attr to underlying lang_library rule |
python_grpc_library#
Generates a Python protobuf and gRPC library using py_library
from rules_python
Example#
Full example project can be found here
BUILD.bazel
#
load("@rules_proto_grpc_python//:defs.bzl", "python_grpc_library")
python_grpc_library(
name = "thing_python_grpc",
protos = ["@rules_proto_grpc_example_protos//:thing_proto"],
)
python_grpc_library(
name = "greeter_python_grpc",
protos = ["@rules_proto_grpc_example_protos//:greeter_grpc"],
deps = ["thing_python_grpc"],
)
Attributes#
Name |
Type |
Mandatory |
Default |
Description |
---|---|---|---|---|
|
|
true |
List of labels that provide the |
|
|
|
false |
|
Extra options to pass to plugins, as a dict of plugin label -> list of strings. The key * can be used exclusively to apply to all plugins |
|
|
false |
|
The verbosity level. Supported values and results are 0: Show nothing, 1: Show command, 2: Show command and sandbox after running protoc, 3: Show command and sandbox before and after running protoc, 4. Show env, command, expected outputs and sandbox before and after running protoc |
|
|
false |
|
Path to prefix to the generated files in the output directory |
|
|
false |
|
A list of extra command line arguments to pass directly to protoc, not as plugin options |
|
|
false |
|
List of labels that provide extra files to be available during protoc execution |
|
|
false |
|
The output mode for the target. PREFIXED (the default) will output to a directory named by the target within the current package root, NO_PREFIX will output directly to the current package. Using NO_PREFIX may lead to conflicting writes |
|
|
false |
|
List of labels to pass as deps attr to underlying lang_library rule |
python_grpclib_library#
Generates a Python protobuf and grpclib library using py_library
from rules_python
(supports Python 3 only)
Example#
Full example project can be found here
BUILD.bazel
#
load("@rules_proto_grpc_python//:defs.bzl", "python_grpclib_library")
python_grpclib_library(
name = "thing_python_grpc",
protos = ["@rules_proto_grpc_example_protos//:thing_proto"],
)
python_grpclib_library(
name = "greeter_python_grpc",
protos = ["@rules_proto_grpc_example_protos//:greeter_grpc"],
deps = ["thing_python_grpc"],
)
Attributes#
Name |
Type |
Mandatory |
Default |
Description |
---|---|---|---|---|
|
|
true |
List of labels that provide the |
|
|
|
false |
|
Extra options to pass to plugins, as a dict of plugin label -> list of strings. The key * can be used exclusively to apply to all plugins |
|
|
false |
|
The verbosity level. Supported values and results are 0: Show nothing, 1: Show command, 2: Show command and sandbox after running protoc, 3: Show command and sandbox before and after running protoc, 4. Show env, command, expected outputs and sandbox before and after running protoc |
|
|
false |
|
Path to prefix to the generated files in the output directory |
|
|
false |
|
A list of extra command line arguments to pass directly to protoc, not as plugin options |
|
|
false |
|
List of labels that provide extra files to be available during protoc execution |
|
|
false |
|
The output mode for the target. PREFIXED (the default) will output to a directory named by the target within the current package root, NO_PREFIX will output directly to the current package. Using NO_PREFIX may lead to conflicting writes |
|
|
false |
|
List of labels to pass as deps attr to underlying lang_library rule |