mirror of
https://github.com/php-win-ext/grpc.git
synced 2026-04-28 19:43:17 +02:00
7b2c8c27b0
By popular demand, we'll now be offering separate py_grpc_library and py_proto_library targets sharing the same interface as within google3. This change necessitated some modifications to how we pull in our own Python-level dependencies and how we make those available to those pulling in our project via Bazel. There is now a grpc_python_deps() Bazel workspace rule that pulls in the appropriate dependencies, which should be called from the client project's WORKSPACE file. A test has been added to the bazel/test/ directory to verify that this behavior works as intended. It's worth noting that the protobuf repository's usage of Starlark bind() caused a great deal of trouble in ensuring that we could also pull in six. This change also required a change in the way generated proto code is imported in the channelz and health-check modules, as well as in their associated tests. We were importing them two different ways, each relative. This resulted in two different module objects being imported into the process, which were incompatible. I am not sure exactly what caused this behavior to begin, as this should have been possible before this PR. As a workaround, I am simply trying two different absolute imports and using the one that works. This should function both inside and outside of Bazel environments.
71 lines
1.7 KiB
Python
71 lines
1.7 KiB
Python
# gRPC Bazel BUILD file.
|
|
#
|
|
# Copyright 2019 The gRPC authors.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
load("//bazel:python_rules.bzl", "py_proto_library", "py_grpc_library")
|
|
|
|
proto_library(
|
|
name = "prime_proto",
|
|
srcs = ["prime.proto"]
|
|
)
|
|
|
|
py_proto_library(
|
|
name = "prime_proto_pb2",
|
|
srcs = [":prime_proto"],
|
|
)
|
|
|
|
py_grpc_library(
|
|
name = "prime_proto_pb2_grpc",
|
|
srcs = [":prime_proto"],
|
|
deps = [":prime_proto_pb2"],
|
|
)
|
|
|
|
py_binary(
|
|
name = "client",
|
|
testonly = 1,
|
|
srcs = ["client.py"],
|
|
deps = [
|
|
"//src/python/grpcio/grpc:grpcio",
|
|
":prime_proto_pb2",
|
|
":prime_proto_pb2_grpc",
|
|
],
|
|
srcs_version = "PY3",
|
|
)
|
|
|
|
py_binary(
|
|
name = "server",
|
|
testonly = 1,
|
|
srcs = ["server.py"],
|
|
deps = [
|
|
"//src/python/grpcio/grpc:grpcio",
|
|
":prime_proto_pb2",
|
|
":prime_proto_pb2_grpc",
|
|
] + select({
|
|
"//conditions:default": ["@futures//:futures"],
|
|
"//:python3": [],
|
|
}),
|
|
srcs_version = "PY3",
|
|
)
|
|
|
|
py_test(
|
|
name = "test/_multiprocessing_example_test",
|
|
srcs = ["test/_multiprocessing_example_test.py"],
|
|
data = [
|
|
":client",
|
|
":server"
|
|
],
|
|
size = "small",
|
|
)
|