Skip to content

Commit 1527e4f

Browse files
build: make python generation from protobuf automatic through tox
1 parent 7d460d1 commit 1527e4f

2 files changed

Lines changed: 27 additions & 13 deletions

File tree

genproto.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
sed -i -e '/gogoproto/d' src/etcd3/proto/rpc.proto
6+
sed -i -e 's/etcd\/mvcc\/mvccpb\/kv.proto/kv.proto/g' src/etcd3/proto/rpc.proto
7+
sed -i -e 's/etcd\/auth\/authpb\/auth.proto/auth.proto/g' src/etcd3/proto/rpc.proto
8+
sed -i -e '/google\/api\/annotations.proto/d' src/etcd3/proto/rpc.proto
9+
sed -i -e '/option (google.api.http)/,+3d' src/etcd3/proto/rpc.proto
10+
python -m grpc.tools.protoc -Isrc/etcd3/proto \
11+
--python_out=src/etcd3/etcdrpc/ \
12+
--grpc_python_out=src/etcd3/etcdrpc/ \
13+
src/etcd3/proto/rpc.proto src/etcd3/proto/auth.proto src/etcd3/proto/kv.proto
14+
sed -i -e 's/import auth_pb2/from etcd3.etcdrpc import auth_pb2/g' src/etcd3/etcdrpc/rpc_pb2.py
15+
sed -i -e 's/import kv_pb2/from etcd3.etcdrpc import kv_pb2/g' src/etcd3/etcdrpc/rpc_pb2.py
16+
sed -i -e 's/import rpc_pb2/from etcd3.etcdrpc import rpc_pb2/g' src/etcd3/etcdrpc/rpc_pb2_grpc.py

tox.ini

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,30 @@ isolated_build = true
1010
basepython = python3
1111

1212
[testenv:build]
13+
description = generate proto and build pacakge
1314
deps =
1415
build
1516
twine
17+
extras = protoc
18+
allowlist_externals =
19+
{toxinidir}/genproto.sh
1620
commands =
21+
{toxinidir}/genproto.sh
1722
python -m build
1823
twine check dist/*
1924

2025
[testenv:unittests]
26+
description = generate proto and run package unit tests
2127
extras = tests
2228
#passenv = ETCD_ENDPOINT,TEST_ETCD_VERSION
2329
allowlist_externals =
2430
wget
2531
tar
2632
gzip
2733
cp
34+
{toxinidir}/genproto.sh
2835
commands_pre =
36+
{toxinidir}/genproto.sh
2937
wget https://github.com/etcd-io/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz -O {env_tmp_dir}/etcd.tar.gz
3038
tar xzvf {env_tmp_dir}/etcd.tar.gz -C {env_tmp_dir}
3139
cp {env_tmp_dir}/etcd-v3.3.10-linux-amd64/etcd {envdir}/bin
@@ -39,23 +47,13 @@ commands =
3947
commands=flake8 {posargs}
4048

4149
[testenv:genproto]
50+
description = generate proto only
4251
whitelist_externals = sed
4352
extras = protoc
4453
allowlist_externals =
45-
sed
54+
{toxinidir}/genproto.sh
4655
commands =
47-
sed -i -e '/gogoproto/d' etcd3/proto/rpc.proto
48-
sed -i -e 's/etcd\/mvcc\/mvccpb\/kv.proto/kv.proto/g' etcd3/proto/rpc.proto
49-
sed -i -e 's/etcd\/auth\/authpb\/auth.proto/auth.proto/g' etcd3/proto/rpc.proto
50-
sed -i -e '/google\/api\/annotations.proto/d' etcd3/proto/rpc.proto
51-
sed -i -e '/option (google.api.http)/,+3d' etcd3/proto/rpc.proto
52-
python -m grpc.tools.protoc -Ietcd3/proto \
53-
--python_out=etcd3/etcdrpc/ \
54-
--grpc_python_out=etcd3/etcdrpc/ \
55-
etcd3/proto/rpc.proto etcd3/proto/auth.proto etcd3/proto/kv.proto
56-
sed -i -e 's/import auth_pb2/from etcd3.etcdrpc import auth_pb2/g' etcd3/etcdrpc/rpc_pb2.py
57-
sed -i -e 's/import kv_pb2/from etcd3.etcdrpc import kv_pb2/g' etcd3/etcdrpc/rpc_pb2.py
58-
sed -i -e 's/import rpc_pb2/from etcd3.etcdrpc import rpc_pb2/g' etcd3/etcdrpc/rpc_pb2_grpc.py
56+
{toxinidir}/genproto.sh
5957

6058
[flake8]
6159
exclude = .venv,.git,.tox,dist,docs,*lib/python*,*egg,build,etcd3/etcdrpc/

0 commit comments

Comments
 (0)