mirror of
https://github.com/php-win-ext/grpc.git
synced 2026-04-24 17:28:13 +02:00
6c7e2a94f9
Fix python import paths in bazel tests:
- `//tools/distrib/python/grpcio_tools/grpc_tools/test:protoc_test`
- `//examples/python/cancellation:test/_cancellation_example_test`
- `//examples/python/compression:test/compression_example_test`
Previously paths were set incorrectly. With bazel + python 3.11, this resulted in the following errors:
<details>
<summary>error examples for posterity</summary>
#### `//tools/distrib/python/grpcio_tools/grpc_tools/test:protoc_test`
```
Traceback (most recent call last):
File "/root/.cache/bazel/_bazel_root/954bb7512d44d20015390af6e76121c6/sandbox/processwrapper-sandbox/3073/execroot/com_github_grpc_grpc/bazel-out/k8-fastbuild/bin/tools/distrib/python/grpcio_tools/grpc_tools/test/protoc_test.runfiles/com_github_grpc_grpc/tools/distrib/python/grpcio_tools/grpc_tools/test/protoc_test.py", line 141, in _test_syntax_errors
protos = protoc._protos("flawed.proto")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/.cache/bazel/_bazel_root/954bb7512d44d20015390af6e76121c6/sandbox/processwrapper-sandbox/3073/execroot/com_github_grpc_grpc/bazel-out/k8-fastbuild/bin/tools/distrib/python/grpcio_tools/grpc_tools/test/protoc_test.runfiles/com_github_grpc_grpc/tools/distrib/python/grpcio_tools/grpc_tools/protoc.py", line 110, in _protos
module = importlib.import_module(module_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "", line 1204, in _gcd_import
File "", line 1176, in _find_and_load
File "", line 1140, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'flawed_pb2'
Traceback (most recent call last):
File "/root/.cache/bazel/_bazel_root/954bb7512d44d20015390af6e76121c6/sandbox/processwrapper-sandbox/3073/execroot/com_github_grpc_grpc/bazel-out/k8-fastbuild/bin/tools/distrib/python/grpcio_tools/grpc_tools/test/protoc_test.runfiles/com_github_grpc_grpc/tools/distrib/python/grpcio_tools/grpc_tools/test/protoc_test.py", line 168, in test_combined_import
_run_in_subprocess(_test_combined_import)
File "/root/.cache/bazel/_bazel_root/954bb7512d44d20015390af6e76121c6/sandbox/processwrapper-sandbox/3073/execroot/com_github_grpc_grpc/bazel-out/k8-fastbuild/bin/tools/distrib/python/grpcio_tools/grpc_tools/test/protoc_test.runfiles/com_github_grpc_grpc/tools/distrib/python/grpcio_tools/grpc_tools/test/protoc_test.py", line 48, in _run_in_subprocess
raise error_queue.get()
ModuleNotFoundError: No module named 'simple_pb2'
```
#### `//examples/python/cancellation:test/_cancellation_example_test`
```
test_graceful_sigint (__main__.CancellationExampleTest.test_graceful_sigint) ... Traceback (most recent call last):
File "/root/.cache/bazel/_bazel_root/954bb7512d44d20015390af6e76121c6/sandbox/processwrapper-sandbox/3027/execroot/com_github_grpc_grpc/bazel-out/k8-fastbuild/bin/examples/python/cancellation/test/_cancellation_example_test.runfiles/com_github_grpc_grpc/examples/python/cancellation/server.py", line 26, in
import search
ModuleNotFoundError: No module named 'search'
```
#### `//examples/python/compression:test/compression_example_test`
```
test_compression_example (__main__.CompressionExampleTest.test_compression_example) ... Traceback (most recent call last):
File "/root/.cache/bazel/_bazel_root/954bb7512d44d20015390af6e76121c6/sandbox/processwrapper-sandbox/2906/execroot/com_github_grpc_grpc/bazel-out/k8-fastbuild/bin/examples/python/compression/test/compression_example_test.runfiles/com_github_grpc_grpc/examples/python/compression/client.py", line 24, in
import helloworld_pb2
ModuleNotFoundError: No module named 'helloworld_pb2'
Traceback (most recent call last):
File "/root/.cache/bazel/_bazel_root/954bb7512d44d20015390af6e76121c6/sandbox/processwrapper-sandbox/2906/execroot/com_github_grpc_grpc/bazel-out/k8-fastbuild/bin/examples/python/compression/test/compression_example_test.runfiles/com_github_grpc_grpc/examples/python/compression/server.py", line 26, in
import helloworld_pb2
ModuleNotFoundError: No module named 'helloworld_pb2'
FAIL
======================================================================
FAIL: test_compression_example (__main__.CompressionExampleTest.test_compression_example)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/root/.cache/bazel/_bazel_root/954bb7512d44d20015390af6e76121c6/sandbox/processwrapper-sandbox/2906/execroot/com_github_grpc_grpc/bazel-out/k8-fastbuild/bin/examples/python/compression/test/compression_example_test.runfiles/com_github_grpc_grpc/examples/python/compression/test/compression_example_test.py", line 68, in test_compression_example
self.assertEqual(0, client_return_code)
AssertionError: 0 != 1
```
</details>
The main difference is as of Python 3.11 bazel no longer appends the directory of the file to the sys.path. For example, compression test sys.path:
1. Contains `examples/python/compression/test` in 3.10
2. Doesn't contain `examples/python/compression/test` in 3.11
Closes #40273
PiperOrigin-RevId: 786308459
84 lines
2.0 KiB
Python
84 lines
2.0 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("@rules_proto//proto:defs.bzl", "proto_library")
|
|
load("@rules_python//python:defs.bzl", "py_binary", "py_library", "py_test")
|
|
load("//bazel:python_rules.bzl", "py_grpc_library", "py_proto_library")
|
|
|
|
package(default_testonly = 1)
|
|
|
|
proto_library(
|
|
name = "hash_name_proto",
|
|
srcs = ["hash_name.proto"],
|
|
)
|
|
|
|
py_proto_library(
|
|
name = "hash_name_py_pb2",
|
|
deps = [":hash_name_proto"],
|
|
)
|
|
|
|
py_grpc_library(
|
|
name = "hash_name_py_pb2_grpc",
|
|
srcs = [":hash_name_proto"],
|
|
deps = [":hash_name_py_pb2"],
|
|
)
|
|
|
|
py_binary(
|
|
name = "client",
|
|
srcs = ["client.py"],
|
|
imports = ["."],
|
|
python_version = "PY3",
|
|
srcs_version = "PY2AND3",
|
|
deps = [
|
|
":hash_name_py_pb2",
|
|
":hash_name_py_pb2_grpc",
|
|
"//src/python/grpcio/grpc:grpcio",
|
|
],
|
|
)
|
|
|
|
py_library(
|
|
name = "search",
|
|
srcs = ["search.py"],
|
|
srcs_version = "PY2AND3",
|
|
deps = [
|
|
":hash_name_py_pb2",
|
|
],
|
|
)
|
|
|
|
py_binary(
|
|
name = "server",
|
|
srcs = ["server.py"],
|
|
imports = ["."],
|
|
python_version = "PY3",
|
|
srcs_version = "PY2AND3",
|
|
deps = [
|
|
":hash_name_py_pb2",
|
|
":search",
|
|
"//src/python/grpcio/grpc:grpcio",
|
|
],
|
|
)
|
|
|
|
py_test(
|
|
name = "test/_cancellation_example_test",
|
|
size = "small",
|
|
srcs = ["test/_cancellation_example_test.py"],
|
|
data = [
|
|
":client",
|
|
":server",
|
|
],
|
|
python_version = "PY3",
|
|
)
|