Skip to content

Commit beb12fe

Browse files
authored
Merge pull request #565 from ydb-platform/update_proto_compatibility
protobuf 5 compatibility
2 parents ce321ae + bb79667 commit beb12fe

File tree

156 files changed

+16410
-20
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

156 files changed

+16410
-20
lines changed

.github/workflows/tests.yaml

+12-4
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,22 @@ jobs:
1717
strategy:
1818
fail-fast: false
1919
matrix:
20-
python-version: [3.8]
21-
environment: [py, py-tls, py-proto3, py-tls-proto3]
22-
folder: [ydb, tests]
20+
python-version: [3.8, 3.9]
21+
environment: [py-proto5, py-tls-proto5, py-proto4, py-tls-proto4, py-proto3, py-tls-proto3]
22+
folder: [ydb, tests --ignore=tests/topics, tests/topics]
2323
exclude:
24-
- environment: py-tls
24+
- environment: py-tls-proto5
25+
folder: ydb
26+
- environment: py-tls-proto4
2527
folder: ydb
2628
- environment: py-tls-proto3
2729
folder: ydb
30+
- environment: py-tls-proto5
31+
folder: tests/topics
32+
- environment: py-tls-proto4
33+
folder: tests/topics
34+
- environment: py-tls-proto3
35+
folder: tests/topics
2836

2937
steps:
3038
- uses: actions/checkout@v1

Makefile

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
protobuf: protobuf-3 protobuf-4
1+
protobuf: protobuf-3 protobuf-4 protobuf-5
22

33
protobuf-3:
44
docker build -f generate-protobuf.Dockerfile . -t ydb-python-sdk-proto-generator-env-3 --build-arg GRPCIO_VER=1.39.0 --build-arg PY_PROTOBUF_VER=3.20.3
55
docker run --rm -it -v $${PWD}:$${PWD} -w $${PWD} ydb-python-sdk-proto-generator-env-3 python generate_protoc.py --target-version=v3
66

77
protobuf-4:
88
docker build -f generate-protobuf.Dockerfile . -t ydb-python-sdk-proto-generator-env-4
9-
docker run --rm -it -v $${PWD}:$${PWD} -w $${PWD} ydb-python-sdk-proto-generator-env-4 python generate_protoc.py
9+
docker run --rm -it -v $${PWD}:$${PWD} -w $${PWD} ydb-python-sdk-proto-generator-env-4 python generate_protoc.py --target-version=v4
10+
11+
protobuf-5:
12+
docker build -f generate-protobuf.Dockerfile . -t ydb-python-sdk-proto-generator-env-5 --build-arg PY_PROTOBUF_VER=5.26.1 --build-arg PROTOC_VER=26.1
13+
docker run --rm -it -v $${PWD}:$${PWD} -w $${PWD} ydb-python-sdk-proto-generator-env-5 python generate_protoc.py --target-version=v5

generate-protobuf.Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ RUN \
99
python -m pip install grpcio-tools==${GRPCIO_VER} && \
1010
python -m pip install protobuf==${PY_PROTOBUF_VER}
1111

12-
ENV PROTOC_VER=21.8
12+
ARG PROTOC_VER=21.8
1313
RUN wget https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VER}/protoc-${PROTOC_VER}-linux-x86_64.zip && \
1414
unzip protoc-*.zip && \
1515
rm -f protoc-*.zip && \

requirements.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
grpcio>=1.42.0
22
packaging
3-
protobuf>=3.13.0,<5.0.0
3+
protobuf>=3.13.0,<6.0.0
44
aiohttp<4

test-requirements.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ docker==5.0.0
1111
docker-compose==1.29.2
1212
dockerpty==0.4.1
1313
docopt==0.6.2
14-
grpcio==1.42.0
14+
grpcio>=1.42.0
1515
idna==3.2
1616
importlib-metadata==4.6.1
1717
iniconfig==1.1.1
1818
jsonschema==3.2.0
1919
packaging==21.0
2020
paramiko==2.10.1
2121
pluggy==0.13.1
22-
protobuf>=3.13.0,<5.0.0
22+
protobuf>=3.13.0,<6.0.0
2323
py==1.10.0
2424
pycparser==2.20
2525
PyNaCl==1.4.0

tox.ini

+41-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[tox]
2-
envlist = py,py-proto3,py-tls,py-tls-proto3,style,pylint,black,protoc,py-cov
2+
envlist = py-proto5,py-proto4,py-proto3,py-tls-proto5,py-tls-proto4,py-tls-proto3,style,pylint,black,protoc,py-cov-proto4
33
minversion = 4.2.6
44
skipsdist = True
55
ignore_basepython_conflict = true
@@ -12,35 +12,67 @@ setenv =
1212
deps =
1313
-r{toxinidir}/test-requirements.txt
1414

15-
[testenv:dev]
15+
[testenv:dev-proto5]
1616
commands =
17+
deps =
18+
-r{toxinidir}/test-requirements.txt
19+
protobuf<6.0.0
20+
21+
[testenv:dev-proto4]
22+
commands =
23+
deps =
24+
-r{toxinidir}/test-requirements.txt
25+
protobuf<5.0.0
1726

1827
[testenv:dev-proto3]
1928
commands =
2029
deps =
2130
-r{toxinidir}/test-requirements.txt
2231
protobuf<4.0.0
2332

24-
[testenv:py]
33+
[testenv:py-proto5]
2534
commands =
26-
pytest -v -m "not tls" --docker-compose-remove-volumes --docker-compose=docker-compose.yml {posargs}
35+
pytest -v -m "not tls" --docker-compose-remove-volumes --docker-compose=docker-compose.yml {posargs} --ignore=tests/topics
36+
deps =
37+
-r{toxinidir}/test-requirements.txt
38+
protobuf<6.0.0
2739

28-
[testenv:py-cov]
40+
[testenv:py-proto4]
41+
commands =
42+
pytest -v -m "not tls" --docker-compose-remove-volumes --docker-compose=docker-compose.yml {posargs} --ignore=tests/topics
43+
deps =
44+
-r{toxinidir}/test-requirements.txt
45+
protobuf<5.0.0
46+
47+
[testenv:py-cov-proto4]
2948
commands =
3049
pytest -v -m "not tls" \
3150
--cov-report html:cov_html --cov=ydb \
3251
--docker-compose-remove-volumes --docker-compose=docker-compose.yml {posargs}
52+
deps =
53+
-r{toxinidir}/test-requirements.txt
54+
protobuf<5.0.0
3355

3456
[testenv:py-proto3]
3557
commands =
36-
pytest -v -m "not tls" --docker-compose-remove-volumes --docker-compose=docker-compose.yml {posargs}
58+
pytest -v -m "not tls" --docker-compose-remove-volumes --docker-compose=docker-compose.yml {posargs} --ignore=tests/topics
3759
deps =
3860
-r{toxinidir}/test-requirements.txt
3961
protobuf<4.0.0
4062

41-
[testenv:py-tls]
63+
[testenv:py-tls-proto5]
64+
commands =
65+
pytest -v -m tls --docker-compose-remove-volumes --docker-compose=docker-compose-tls.yml {posargs}
66+
deps =
67+
-r{toxinidir}/test-requirements.txt
68+
protobuf<6.0.0
69+
70+
[testenv:py-tls-proto4]
4271
commands =
4372
pytest -v -m tls --docker-compose-remove-volumes --docker-compose=docker-compose-tls.yml {posargs}
73+
deps =
74+
-r{toxinidir}/test-requirements.txt
75+
protobuf<5.0.0
4476

4577
[testenv:py-tls-proto3]
4678
commands =
@@ -52,12 +84,12 @@ deps =
5284
[testenv:black-format]
5385
skip_install = true
5486
commands =
55-
black ydb examples tests --extend-exclude "ydb/_grpc/v3|ydb/_grpc/v4"
87+
black ydb examples tests --extend-exclude "ydb/_grpc/v3|ydb/_grpc/v4|ydb/_grpc/v5"
5688

5789
[testenv:black]
5890
skip_install = true
5991
commands =
60-
black --diff --check ydb examples tests --extend-exclude "ydb/_grpc/v3|ydb/_grpc/v4"
92+
black --diff --check ydb examples tests --extend-exclude "ydb/_grpc/v3|ydb/_grpc/v4|ydb/_grpc/v5"
6193

6294
[testenv:pylint]
6395
deps = pylint

ydb/_grpc/common/__init__.py

+10-1
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,20 @@
3636
from ydb._grpc.v3 import protos # noqa
3737

3838
sys.modules["ydb._grpc.common.protos"] = sys.modules["ydb._grpc.v3.protos"]
39-
else:
39+
elif protobuf_version < Version("5.0"):
4040
from ydb._grpc.v4 import * # noqa
4141

4242
sys.modules["ydb._grpc.common"] = sys.modules["ydb._grpc.v4"]
4343

4444
from ydb._grpc.v4 import protos # noqa
4545

4646
sys.modules["ydb._grpc.common.protos"] = sys.modules["ydb._grpc.v4.protos"]
47+
48+
else:
49+
from ydb._grpc.v5 import * # noqa
50+
51+
sys.modules["ydb._grpc.common"] = sys.modules["ydb._grpc.v5"]
52+
53+
from ydb._grpc.v5 import protos # noqa
54+
55+
sys.modules["ydb._grpc.common.protos"] = sys.modules["ydb._grpc.v5.protos"]

ydb/_grpc/v5/__init__.py

Whitespace-only changes.

ydb/_grpc/v5/draft/__init__.py

Whitespace-only changes.

ydb/_grpc/v5/draft/protos/__init__.py

Whitespace-only changes.

ydb/_grpc/v5/draft/protos/ydb_dynamic_config_pb2.py

+94
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)