Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nanopb/nanopb.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/extra
diff options
context:
space:
mode:
authorNathaniel Brough <nathaniel.brough@gmail.com>2022-01-05 11:02:40 +0300
committerGitHub <noreply@github.com>2022-06-26 21:58:53 +0300
commit6ec6538e3a98cd7b4dcd6a08c6d94b1c8a5b2d52 (patch)
treeb0256b660916a1244d9403d68bbd04f7a3e551d8 /extra
parent8add19ed70d9e124c85adbe211897fbce04a725e (diff)
Adds Bazel build support
Diffstat (limited to 'extra')
-rw-r--r--extra/bazel/BUILD.bazel0
-rw-r--r--extra/bazel/nanopb_cc_proto_library.bzl76
-rw-r--r--extra/bazel/nanopb_deps.bzl38
-rw-r--r--extra/bazel/nanopb_workspace.bzl10
-rw-r--r--extra/bazel/python_deps.bzl12
-rw-r--r--extra/requirements.txt1
-rw-r--r--extra/requirements_lock.txt138
7 files changed, 275 insertions, 0 deletions
diff --git a/extra/bazel/BUILD.bazel b/extra/bazel/BUILD.bazel
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/extra/bazel/BUILD.bazel
diff --git a/extra/bazel/nanopb_cc_proto_library.bzl b/extra/bazel/nanopb_cc_proto_library.bzl
new file mode 100644
index 0000000..478ab58
--- /dev/null
+++ b/extra/bazel/nanopb_cc_proto_library.bzl
@@ -0,0 +1,76 @@
+# Apache License, Version 2.0, January 2004, http://www.apache.org/licenses/
+# Adapted from: https://github.com/rules-proto-grpc/rules_proto_grpc/
+
+load("@rules_proto_grpc//internal:filter_files.bzl", "filter_files")
+load("@rules_cc//cc:defs.bzl", "cc_library")
+load(
+ "@rules_proto_grpc//:defs.bzl",
+ "ProtoPluginInfo",
+ "proto_compile_attrs",
+ "proto_compile_impl",
+)
+
+# Create compile rule
+cc_nanopb_proto_compile = rule(
+ implementation = proto_compile_impl,
+ attrs = dict(
+ proto_compile_attrs,
+ _plugins = attr.label_list(
+ providers = [ProtoPluginInfo],
+ default = [
+ Label("@com_github_nanopb_nanopb//:nanopb_plugin"),
+ ],
+ doc = "List of protoc plugins to apply",
+ ),
+ ),
+ toolchains = [str(Label("@rules_proto_grpc//protobuf:toolchain_type"))],
+)
+
+def cc_nanopb_proto_library(name, **kwargs): # buildifier: disable=function-docstring
+ # Compile protos
+ name_pb = name + "_pb"
+ cc_nanopb_proto_compile(
+ name = name_pb,
+ **{
+ k: v
+ for (k, v) in kwargs.items()
+ if k in proto_compile_attrs.keys()
+ } # Forward args
+ )
+
+ # Filter files to sources and headers
+ filter_files(
+ name = name_pb + "_srcs",
+ target = name_pb,
+ extensions = ["c"],
+ )
+
+ filter_files(
+ name = name_pb + "_hdrs",
+ target = name_pb,
+ extensions = ["h"],
+ )
+
+ # Create c library
+ cc_library(
+ name = name,
+ srcs = [name_pb + "_srcs"],
+ deps = PROTO_DEPS + kwargs.get("deps", []),
+ hdrs = [name_pb + "_hdrs"],
+ includes = [name_pb],
+ alwayslink = kwargs.get("alwayslink"),
+ copts = kwargs.get("copts"),
+ defines = kwargs.get("defines"),
+ include_prefix = kwargs.get("include_prefix"),
+ linkopts = kwargs.get("linkopts"),
+ linkstatic = kwargs.get("linkstatic"),
+ local_defines = kwargs.get("local_defines"),
+ nocopts = kwargs.get("nocopts"),
+ strip_include_prefix = kwargs.get("strip_include_prefix"),
+ visibility = kwargs.get("visibility"),
+ tags = kwargs.get("tags"),
+ )
+
+PROTO_DEPS = [
+ "@com_github_nanopb_nanopb//:nanopb",
+]
diff --git a/extra/bazel/nanopb_deps.bzl b/extra/bazel/nanopb_deps.bzl
new file mode 100644
index 0000000..aaed90c
--- /dev/null
+++ b/extra/bazel/nanopb_deps.bzl
@@ -0,0 +1,38 @@
+load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
+
+def nanopb_deps():
+ # Setup proto rules.
+ # Used by: com_github_nanopb_nanopb, rules_proto_grpc.
+ # Used in modules: root.
+ if "rules_proto" not in native.existing_rules():
+ http_archive(
+ name = "rules_proto",
+ sha256 = "66bfdf8782796239d3875d37e7de19b1d94301e8972b3cbd2446b332429b4df1",
+ strip_prefix = "rules_proto-4.0.0",
+ urls = [
+ "https://mirror.bazel.build/github.com/bazelbuild/rules_proto/archive/refs/tags/4.0.0.tar.gz",
+ "https://github.com/bazelbuild/rules_proto/archive/refs/tags/4.0.0.tar.gz",
+ ],
+ )
+
+ # Required for plugin rules.
+ # Used by: com_github_nanopb_nanopb.
+ # Used in modules: generator.
+ if "rules_python" not in native.existing_rules():
+ http_archive(
+ name = "rules_python",
+ sha256 = "5fa3c738d33acca3b97622a13a741129f67ef43f5fdfcec63b29374cc0574c29",
+ strip_prefix = "rules_python-0.9.0",
+ url = "https://github.com/bazelbuild/rules_python/archive/refs/tags/0.9.0.tar.gz",
+ )
+
+ # Setup grpc tools.
+ # Used by: com_github_nanopb_nanopb.
+ # Used in modules: generator/proto.
+ if "rules_proto_grpc" not in native.existing_rules():
+ http_archive(
+ name = "rules_proto_grpc",
+ sha256 = "507e38c8d95c7efa4f3b1c0595a8e8f139c885cb41a76cab7e20e4e67ae87731",
+ strip_prefix = "rules_proto_grpc-4.1.1",
+ urls = ["https://github.com/rules-proto-grpc/rules_proto_grpc/archive/4.1.1.tar.gz"],
+ )
diff --git a/extra/bazel/nanopb_workspace.bzl b/extra/bazel/nanopb_workspace.bzl
new file mode 100644
index 0000000..1955607
--- /dev/null
+++ b/extra/bazel/nanopb_workspace.bzl
@@ -0,0 +1,10 @@
+load("@nanopb_pypi//:requirements.bzl", "install_deps")
+load("@rules_proto_grpc//:repositories.bzl", "rules_proto_grpc_repos", "rules_proto_grpc_toolchains")
+load("@rules_proto//proto:repositories.bzl", "rules_proto_dependencies", "rules_proto_toolchains")
+
+def nanopb_workspace():
+ install_deps()
+ rules_proto_grpc_toolchains()
+ rules_proto_grpc_repos()
+ rules_proto_dependencies()
+ rules_proto_toolchains()
diff --git a/extra/bazel/python_deps.bzl b/extra/bazel/python_deps.bzl
new file mode 100644
index 0000000..2327e26
--- /dev/null
+++ b/extra/bazel/python_deps.bzl
@@ -0,0 +1,12 @@
+load("@rules_python//python:pip.bzl", "pip_parse")
+
+def nanopb_python_deps(interpreter=None):
+ # Required for python deps for generator plugin.
+ # Used by: com_github_nanopb_nanopb.
+ # Used in modules: generator.
+ if "nanopb_pypi" not in native.existing_rules():
+ pip_parse(
+ name = "nanopb_pypi",
+ requirements_lock = "@com_github_nanopb_nanopb//:extra/requirements_lock.txt",
+ python_interpreter_target = interpreter,
+ )
diff --git a/extra/requirements.txt b/extra/requirements.txt
new file mode 100644
index 0000000..e3266f9
--- /dev/null
+++ b/extra/requirements.txt
@@ -0,0 +1 @@
+grpcio-tools==1.47.0 \ No newline at end of file
diff --git a/extra/requirements_lock.txt b/extra/requirements_lock.txt
new file mode 100644
index 0000000..acecdc4
--- /dev/null
+++ b/extra/requirements_lock.txt
@@ -0,0 +1,138 @@
+#
+# This file is autogenerated by pip-compile with python 3.9
+# To update, run:
+#
+# bazel run //:requirements.update
+#
+grpcio==1.47.0 \
+ --hash=sha256:0425b5577be202d0a4024536bbccb1b052c47e0766096e6c3a5789ddfd5f400d \
+ --hash=sha256:06c0739dff9e723bca28ec22301f3711d85c2e652d1c8ae938aa0f7ad632ef9a \
+ --hash=sha256:08307dc5a6ac4da03146d6c00f62319e0665b01c6ffe805cfcaa955c17253f9c \
+ --hash=sha256:090dfa19f41efcbe760ae59b34da4304d4be9a59960c9682b7eab7e0b6748a79 \
+ --hash=sha256:0a24b50810aae90c74bbd901c3f175b9645802d2fbf03eadaf418ddee4c26668 \
+ --hash=sha256:0cd44d78f302ff67f11a8c49b786c7ccbed2cfef6f4fd7bb0c3dc9255415f8f7 \
+ --hash=sha256:0d8a7f3eb6f290189f48223a5f4464c99619a9de34200ce80d5092fb268323d2 \
+ --hash=sha256:14d2bc74218986e5edf5527e870b0969d63601911994ebf0dce96288548cf0ef \
+ --hash=sha256:1bb9afa85e797a646bfcd785309e869e80a375c959b11a17c9680abebacc0cb0 \
+ --hash=sha256:1ec63bbd09586e5cda1bdc832ae6975d2526d04433a764a1cc866caa399e50d4 \
+ --hash=sha256:2061dbe41e43b0a5e1fd423e8a7fb3a0cf11d69ce22d0fac21f1a8c704640b12 \
+ --hash=sha256:324e363bad4d89a8ec7124013371f268d43afd0ac0fdeec1b21c1a101eb7dafb \
+ --hash=sha256:35dfd981b03a3ec842671d1694fe437ee9f7b9e6a02792157a2793b0eba4f478 \
+ --hash=sha256:43857d06b2473b640467467f8f553319b5e819e54be14c86324dad83a0547818 \
+ --hash=sha256:4706c78b0c183dca815bbb4ef3e8dd2136ccc8d1699f62c585e75e211ad388f6 \
+ --hash=sha256:4d9ad7122f60157454f74a850d1337ba135146cef6fb7956d78c7194d52db0fe \
+ --hash=sha256:544da3458d1d249bb8aed5504adf3e194a931e212017934bf7bfa774dad37fb3 \
+ --hash=sha256:55782a31ec539f15b34ee56f19131fe1430f38a4be022eb30c85e0b0dcf57f11 \
+ --hash=sha256:55cd8b13c5ef22003889f599b8f2930836c6f71cd7cf3fc0196633813dc4f928 \
+ --hash=sha256:5dbba95fab9b35957b4977b8904fc1fa56b302f9051eff4d7716ebb0c087f801 \
+ --hash=sha256:5f57b9b61c22537623a5577bf5f2f970dc4e50fac5391090114c6eb3ab5a129f \
+ --hash=sha256:64e097dd08bb408afeeaee9a56f75311c9ca5b27b8b0278279dc8eef85fa1051 \
+ --hash=sha256:664a270d3eac68183ad049665b0f4d0262ec387d5c08c0108dbcfe5b351a8b4d \
+ --hash=sha256:668350ea02af018ca945bd629754d47126b366d981ab88e0369b53bc781ffb14 \
+ --hash=sha256:67cd275a651532d28620eef677b97164a5438c5afcfd44b15e8992afa9eb598c \
+ --hash=sha256:68b5e47fcca8481f36ef444842801928e60e30a5b3852c9f4a95f2582d10dcb2 \
+ --hash=sha256:7191ffc8bcf8a630c547287ab103e1fdf72b2e0c119e634d8a36055c1d988ad0 \
+ --hash=sha256:815089435d0f113719eabf105832e4c4fa1726b39ae3fb2ca7861752b0f70570 \
+ --hash=sha256:8dbef03853a0dbe457417c5469cb0f9d5bf47401b49d50c7dad3c495663b699b \
+ --hash=sha256:91cd292373e85a52c897fa5b4768c895e20a7dc3423449c64f0f96388dd1812e \
+ --hash=sha256:9298d6f2a81f132f72a7e79cbc90a511fffacc75045c2b10050bb87b86c8353d \
+ --hash=sha256:96cff5a2081db82fb710db6a19dd8f904bdebb927727aaf4d9c427984b79a4c1 \
+ --hash=sha256:9e63e0619a5627edb7a5eb3e9568b9f97e604856ba228cc1d8a9f83ce3d0466e \
+ --hash=sha256:a278d02272214ec33f046864a24b5f5aab7f60f855de38c525e5b4ef61ec5b48 \
+ --hash=sha256:a6b2432ac2353c80a56d9015dfc5c4af60245c719628d4193ecd75ddf9cd248c \
+ --hash=sha256:b821403907e865e8377af3eee62f0cb233ea2369ba0fcdce9505ca5bfaf4eeb3 \
+ --hash=sha256:b88bec3f94a16411a1e0336eb69f335f58229e45d4082b12d8e554cedea97586 \
+ --hash=sha256:bfdb8af4801d1c31a18d54b37f4e49bb268d1f485ecf47f70e78d56e04ff37a7 \
+ --hash=sha256:c79996ae64dc4d8730782dff0d1daacc8ce7d4c2ba9cef83b6f469f73c0655ce \
+ --hash=sha256:cc34d182c4fd64b6ff8304a606b95e814e4f8ed4b245b6d6cc9607690e3ef201 \
+ --hash=sha256:d0d481ff55ea6cc49dab2c8276597bd4f1a84a8745fedb4bc23e12e9fb9d0e45 \
+ --hash=sha256:e9723784cf264697024778dcf4b7542c851fe14b14681d6268fb984a53f76df1 \
+ --hash=sha256:f4508e8abd67ebcccd0fbde6e2b1917ba5d153f3f20c1de385abd8722545e05f \
+ --hash=sha256:f515782b168a4ec6ea241add845ccfebe187fc7b09adf892b3ad9e2592c60af1 \
+ --hash=sha256:f89de64d9eb3478b188859214752db50c91a749479011abd99e248550371375f \
+ --hash=sha256:fcd5d932842df503eb0bf60f9cc35e6fe732b51f499e78b45234e0be41b0018d
+ # via grpcio-tools
+grpcio-tools==1.47.0 \
+ --hash=sha256:058060fbc5a60a1c6cc2cbb3d99f730825ba249917978d48b7d0fd8f2caf01da \
+ --hash=sha256:05b495ed997a9afc9016c696ed7fcd35678a7276fe0bd8b95743a382363ad2b4 \
+ --hash=sha256:0b32002ff4ae860c85feb2aca1b752eb4518e7781c5770b869e7b2dfa9d92cbe \
+ --hash=sha256:0eced69e159b3fdd7597d85950f56990e0aa81c11a20a7785fb66f0e47c46b57 \
+ --hash=sha256:156b5f6654fea51983fd9257d47f1ad7bfb2a1d09ed471e610a7b34b97d40802 \
+ --hash=sha256:18548f35b0657422d5d40e6fa89994469f4bb77df09f8133ecdccec0e31fc72c \
+ --hash=sha256:1a0a91941f6f2a4d97e843a5d9ad7ccccf702af2d9455932f18cf922e65af95e \
+ --hash=sha256:2364ac3bd7266752c9971dbef3f79d21cd958777823512faa93473cbd973b8f1 \
+ --hash=sha256:2a6a6e5e08866d643b84c89140bbe504f864f11b87bfff7a5f2af94c5a2be18d \
+ --hash=sha256:2c5c50886e6e79af5387c6514eb19f1f6b1a0b4eb787f1b7a8f21a74e2444102 \
+ --hash=sha256:3edb04d102e0d6f0149d93fe8cf69a38c20a2259a913701a4c35c119049c8404 \
+ --hash=sha256:3fccc282ee97211a33652419dcdfd24a9a60bbd2d56f5c5dd50c7186a0f4d978 \
+ --hash=sha256:441a0a378117447c089b944f325f11039329d8aa961ecdb8226c5dd84af6f003 \
+ --hash=sha256:45ceb73a97e2d7ff719fc12c02f1ef13014c47bad60a864313da88ccd90cdf36 \
+ --hash=sha256:498c0bae4975683a5a33b72cf1bd64703b34c826871fd3ee8d295407cd5211ec \
+ --hash=sha256:4eced9e0674bfb5c528a3bf2ea2b8596da133148b3e0718915792074204ea226 \
+ --hash=sha256:51352070f13ea3346b5f5ca825f2203528b8218fffc6ac6d951216f812272d8b \
+ --hash=sha256:53c47b08ee2f59a89e8df5f3c09850d7fac264754cbaeabae65f6fbf78d80536 \
+ --hash=sha256:5c8ab9b541a869d3b4ef34c291fbfb6ec78ad728e04737fddd91eac3c2193459 \
+ --hash=sha256:6804cbd92b9069ae9189d65300e456bcc3945f6ae196d2af254e9635b9c3ef0d \
+ --hash=sha256:6c66094fd79ee98bcb504e9f1a3fa6e7ebfd246b4e3d8132227e5020b5633988 \
+ --hash=sha256:6d41ec06f2ccc8adcd400a63508ea8e008fb03f270e0031ff2de047def2ada9d \
+ --hash=sha256:74f607b9084b5325a997d9ae57c0814955e19311111568d029b2a6a66f4869ec \
+ --hash=sha256:7589d6f56e633378047274223f0a75534b2cd7c598f9f2894cb4854378b8b00b \
+ --hash=sha256:759064fc8439bbfe5402b2fd3b0685f4ffe07d7cc6a64908c2f88a7c80449ce4 \
+ --hash=sha256:7be45d69f0eed912df2e92d94958d1a3e72617469ec58ffcac3e2eb153a7057e \
+ --hash=sha256:7fd10683f4f03400536e7a026de9929430ee198c2cbdf2c584edfa909ccc8993 \
+ --hash=sha256:818fca1c7dd4ad1c9c01f91ba37006964f4c57c93856fa4ebd7d5589132844d6 \
+ --hash=sha256:84e38f46af513a6f62a3d482160fcb94063dbc9fdd1452d09f8010422f144de1 \
+ --hash=sha256:93d08c02bd82e423353399582f22493a191db459c3f34031b583f13bcf42b95e \
+ --hash=sha256:94114e01c4508d904825bd984e3d2752c0b0e6eb714ac08b99f73421691cf931 \
+ --hash=sha256:9ab78cd16b4ac7c6b79c8be194c67e03238f6378694133ce3ce9b123caf24ed5 \
+ --hash=sha256:9dd6e26e3e0555deadcb52b087c6064e4fd02c09180b42e96c66260137d26b50 \
+ --hash=sha256:a93263955da8d6e449d7ceb84af4e84b82fa760fd661b4ef4549929d9670ab8e \
+ --hash=sha256:ac5c6aef72618ebc5ee9ad725dd53e1c145ef420b79d21a7c43ca80658d3d8d4 \
+ --hash=sha256:ae53ae35a9761ceea50a502addb7186c5188969d63ad21cf12e00d939db5b967 \
+ --hash=sha256:b2fa3c545c8aa1e8c33ca04b1424be3ff77da631faf37db3350d7459c3bdedde \
+ --hash=sha256:c2c280197d68d5a28f5b90adf755bd9e28c99f3e47ad4edcfe20497cf3456e1d \
+ --hash=sha256:ca548afcfa0ffc47c3cf9eeede81adde15c321bfe897085e90ce8913615584ae \
+ --hash=sha256:ccc8ce33bd31bf12649541b5857fabfee7dd84b04138336a27bf46a28d150c11 \
+ --hash=sha256:dc6567d652c6b70d8c03f4e450a694e62b4d69a400752f8b9c3c8b659dd6b06a \
+ --hash=sha256:dd5d330230038374e64fc652fc4c1b25d457a8b67b9069bfce83a17ab675650b \
+ --hash=sha256:e1de1f139f05ab6bbdabc58b06f6ebb5940a92214bbc7246270299387d0af2ae \
+ --hash=sha256:f19191460435f8bc72450cf26ac0559726f98c49ad9b0969db3db8ba51be98c8 \
+ --hash=sha256:f64b5378484be1d6ce59311f86174be29c8ff98d8d90f589e1c56d5acae67d3c \
+ --hash=sha256:fb44ae747fd299b6513420cb6ead50491dc3691d17da48f28fcc5ebf07f47741
+ # via -r extra/requirements.txt
+protobuf==3.19.1 \
+ --hash=sha256:038daf4fa38a7e818dd61f51f22588d61755160a98db087a046f80d66b855942 \
+ --hash=sha256:28ccea56d4dc38d35cd70c43c2da2f40ac0be0a355ef882242e8586c6d66666f \
+ --hash=sha256:36d90676d6f426718463fe382ec6274909337ca6319d375eebd2044e6c6ac560 \
+ --hash=sha256:3cd0458870ea7d1c58e948ac8078f6ba8a7ecc44a57e03032ed066c5bb318089 \
+ --hash=sha256:5935c8ce02e3d89c7900140a8a42b35bc037ec07a6aeb61cc108be8d3c9438a6 \
+ --hash=sha256:615b426a177780ce381ecd212edc1e0f70db8557ed72560b82096bd36b01bc04 \
+ --hash=sha256:62a8e4baa9cb9e064eb62d1002eca820857ab2138440cb4b3ea4243830f94ca7 \
+ --hash=sha256:655264ed0d0efe47a523e2255fc1106a22f6faab7cc46cfe99b5bae085c2a13e \
+ --hash=sha256:6e8ea9173403219239cdfd8d946ed101f2ab6ecc025b0fda0c6c713c35c9981d \
+ --hash=sha256:71b0250b0cfb738442d60cab68abc166de43411f2a4f791d31378590bfb71bd7 \
+ --hash=sha256:74f33edeb4f3b7ed13d567881da8e5a92a72b36495d57d696c2ea1ae0cfee80c \
+ --hash=sha256:77d2fadcf369b3f22859ab25bd12bb8e98fb11e05d9ff9b7cd45b711c719c002 \
+ --hash=sha256:8b30a7de128c46b5ecb343917d9fa737612a6e8280f440874e5cc2ba0d79b8f6 \
+ --hash=sha256:8e51561d72efd5bd5c91490af1f13e32bcba8dab4643761eb7de3ce18e64a853 \
+ --hash=sha256:a529e7df52204565bcd33738a7a5f288f3d2d37d86caa5d78c458fa5fabbd54d \
+ --hash=sha256:b691d996c6d0984947c4cf8b7ae2fe372d99b32821d0584f0b90277aa36982d3 \
+ --hash=sha256:d80f80eb175bf5f1169139c2e0c5ada98b1c098e2b3c3736667f28cbbea39fc8 \
+ --hash=sha256:d83e1ef8cb74009bebee3e61cc84b1c9cd04935b72bca0cbc83217d140424995 \
+ --hash=sha256:d8919368410110633717c406ab5c97e8df5ce93020cfcf3012834f28b1fab1ea \
+ --hash=sha256:db3532d9f7a6ebbe2392041350437953b6d7a792de10e629c1e4f5a6b1fe1ac6 \
+ --hash=sha256:e7b24c11df36ee8e0c085e5b0dc560289e4b58804746fb487287dda51410f1e2 \
+ --hash=sha256:e7e8d2c20921f8da0dea277dfefc6abac05903ceac8e72839b2da519db69206b \
+ --hash=sha256:e813b1c9006b6399308e917ac5d298f345d95bb31f46f02b60cd92970a9afa17 \
+ --hash=sha256:fd390367fc211cc0ffcf3a9e149dfeca78fecc62adb911371db0cec5c8b7472d
+ # via grpcio-tools
+six==1.16.0 \
+ --hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \
+ --hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254
+ # via grpcio
+
+# The following packages are considered to be unsafe in a requirements file:
+setuptools==60.2.0 \
+ --hash=sha256:5c89b1a14a67ac5f0956f1cb0aeb7d1d3f4c8ba4e4e1ab7bf1af4933f9a2f0fe \
+ --hash=sha256:675fcebecb43c32eb930481abf907619137547f4336206e4d673180242e1a278
+ # via grpcio-tools