Skip to content

Commit 6d230c1

Browse files
Loosen the lowest required Protobuf version to 4.25.0 (#10)
* Initial commit Signed-off-by: teodordelibasic-db <[email protected]> * Exclude generated gRPC service files from linter Signed-off-by: teodordelibasic-db <[email protected]> --------- Signed-off-by: teodordelibasic-db <[email protected]>
1 parent 6afbd65 commit 6d230c1

File tree

7 files changed

+103
-34
lines changed

7 files changed

+103
-34
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ fmt:
5757
$(VENV) -m isort zerobus examples tests
5858

5959
lint:
60-
$(VENV) -m pycodestyle zerobus
60+
$(VENV) -m pycodestyle --exclude='*_pb2*.py' zerobus
6161
$(VENV) -m autoflake --check-diff --quiet --recursive --exclude '*_pb2*.py' zerobus
6262

6363
test:

NEXT_CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
### New Features and Improvements
66

7+
- Loosened protobuf dependency constraint to support versions >= 4.25.0 and < 7.0
78
- Added `HeadersProvider` abstraction for flexible authentication strategies
89
- Implemented `OAuthHeadersProvider` for OAuth 2.0 Client Credentials flow (default authentication method used by `create_stream()`)
910

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ The Databricks Zerobus Ingest SDK for Python provides a high-performance client
4949

5050
### Dependencies
5151

52-
- `protobuf` >= 6.31.0, < 7.0
52+
- `protobuf` >= 4.25.0, < 7.0
5353
- `grpcio` >= 1.60.0, < 2.0
5454
- `requests` >= 2.28.1, < 3
5555

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ classifiers = [
2626
dependencies = [
2727
"requests>=2.28.1,<3",
2828
"grpcio>=1.60.0,<2.0",
29-
"protobuf>=6.31.0,<7.0",
29+
"protobuf>=4.25.0,<7.0",
3030
]
3131

3232
[project.optional-dependencies]

zerobus/sdk/shared/zerobus_service_pb2.py

Lines changed: 3 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
from typing import ClassVar as _ClassVar
2+
from typing import Mapping as _Mapping
3+
from typing import Optional as _Optional
4+
from typing import Union as _Union
5+
6+
from google.protobuf import descriptor as _descriptor
7+
from google.protobuf import duration_pb2 as _duration_pb2
8+
from google.protobuf import message as _message
9+
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
10+
11+
DESCRIPTOR: _descriptor.FileDescriptor
12+
13+
class RecordType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
14+
__slots__ = ()
15+
RECORD_TYPE_UNSPECIFIED: _ClassVar[RecordType]
16+
PROTO: _ClassVar[RecordType]
17+
JSON: _ClassVar[RecordType]
18+
19+
RECORD_TYPE_UNSPECIFIED: RecordType
20+
PROTO: RecordType
21+
JSON: RecordType
22+
23+
class CreateIngestStreamRequest(_message.Message):
24+
__slots__ = ("table_name", "descriptor_proto", "record_type")
25+
TABLE_NAME_FIELD_NUMBER: _ClassVar[int]
26+
DESCRIPTOR_PROTO_FIELD_NUMBER: _ClassVar[int]
27+
RECORD_TYPE_FIELD_NUMBER: _ClassVar[int]
28+
table_name: str
29+
descriptor_proto: bytes
30+
record_type: RecordType
31+
def __init__(
32+
self,
33+
table_name: _Optional[str] = ...,
34+
descriptor_proto: _Optional[bytes] = ...,
35+
record_type: _Optional[_Union[RecordType, str]] = ...,
36+
) -> None: ...
37+
38+
class CreateIngestStreamResponse(_message.Message):
39+
__slots__ = ("stream_id",)
40+
STREAM_ID_FIELD_NUMBER: _ClassVar[int]
41+
stream_id: str
42+
def __init__(self, stream_id: _Optional[str] = ...) -> None: ...
43+
44+
class IngestRecordRequest(_message.Message):
45+
__slots__ = ("offset_id", "proto_encoded_record", "json_record")
46+
OFFSET_ID_FIELD_NUMBER: _ClassVar[int]
47+
PROTO_ENCODED_RECORD_FIELD_NUMBER: _ClassVar[int]
48+
JSON_RECORD_FIELD_NUMBER: _ClassVar[int]
49+
offset_id: int
50+
proto_encoded_record: bytes
51+
json_record: str
52+
def __init__(
53+
self,
54+
offset_id: _Optional[int] = ...,
55+
proto_encoded_record: _Optional[bytes] = ...,
56+
json_record: _Optional[str] = ...,
57+
) -> None: ...
58+
59+
class EphemeralStreamRequest(_message.Message):
60+
__slots__ = ("create_stream", "ingest_record")
61+
CREATE_STREAM_FIELD_NUMBER: _ClassVar[int]
62+
INGEST_RECORD_FIELD_NUMBER: _ClassVar[int]
63+
create_stream: CreateIngestStreamRequest
64+
ingest_record: IngestRecordRequest
65+
def __init__(
66+
self,
67+
create_stream: _Optional[_Union[CreateIngestStreamRequest, _Mapping]] = ...,
68+
ingest_record: _Optional[_Union[IngestRecordRequest, _Mapping]] = ...,
69+
) -> None: ...
70+
71+
class IngestRecordResponse(_message.Message):
72+
__slots__ = ("durability_ack_up_to_offset",)
73+
DURABILITY_ACK_UP_TO_OFFSET_FIELD_NUMBER: _ClassVar[int]
74+
durability_ack_up_to_offset: int
75+
def __init__(self, durability_ack_up_to_offset: _Optional[int] = ...) -> None: ...
76+
77+
class CloseStreamSignal(_message.Message):
78+
__slots__ = ("duration",)
79+
DURATION_FIELD_NUMBER: _ClassVar[int]
80+
duration: _duration_pb2.Duration
81+
def __init__(self, duration: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ...) -> None: ...
82+
83+
class EphemeralStreamResponse(_message.Message):
84+
__slots__ = ("create_stream_response", "ingest_record_response", "close_stream_signal")
85+
CREATE_STREAM_RESPONSE_FIELD_NUMBER: _ClassVar[int]
86+
INGEST_RECORD_RESPONSE_FIELD_NUMBER: _ClassVar[int]
87+
CLOSE_STREAM_SIGNAL_FIELD_NUMBER: _ClassVar[int]
88+
create_stream_response: CreateIngestStreamResponse
89+
ingest_record_response: IngestRecordResponse
90+
close_stream_signal: CloseStreamSignal
91+
def __init__(
92+
self,
93+
create_stream_response: _Optional[_Union[CreateIngestStreamResponse, _Mapping]] = ...,
94+
ingest_record_response: _Optional[_Union[IngestRecordResponse, _Mapping]] = ...,
95+
close_stream_signal: _Optional[_Union[CloseStreamSignal, _Mapping]] = ...,
96+
) -> None: ...

zerobus/sdk/shared/zerobus_service_pb2_grpc.py

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,9 @@
11
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
22
"""Client and server classes corresponding to protobuf-defined services."""
3-
import warnings
4-
53
import grpc
64

75
from . import zerobus_service_pb2 as zerobus__service__pb2
86

9-
GRPC_GENERATED_VERSION = "1.71.2"
10-
GRPC_VERSION = grpc.__version__
11-
_version_not_supported = False
12-
13-
try:
14-
from grpc._utilities import first_version_is_lower
15-
16-
_version_not_supported = first_version_is_lower(GRPC_VERSION, GRPC_GENERATED_VERSION)
17-
except ImportError:
18-
_version_not_supported = True
19-
20-
if _version_not_supported:
21-
raise RuntimeError(
22-
f"The grpc package installed is at version {GRPC_VERSION},"
23-
+ f" but the generated code in zerobus_service_pb2_grpc.py depends on"
24-
+ f" grpcio>={GRPC_GENERATED_VERSION}."
25-
+ f" Please upgrade your grpc module to grpcio>={GRPC_GENERATED_VERSION}"
26-
+ f" or downgrade your generated code using grpcio-tools<={GRPC_VERSION}."
27-
)
28-
297

308
class ZerobusStub(object):
319
"""Version information for the Zerobus service.
@@ -58,7 +36,6 @@ def __init__(self, channel):
5836
"/databricks.zerobus.Zerobus/EphemeralStream",
5937
request_serializer=zerobus__service__pb2.EphemeralStreamRequest.SerializeToString,
6038
response_deserializer=zerobus__service__pb2.EphemeralStreamResponse.FromString,
61-
_registered_method=True,
6239
)
6340

6441

@@ -107,7 +84,6 @@ def add_ZerobusServicer_to_server(servicer, server):
10784
}
10885
generic_handler = grpc.method_handlers_generic_handler("databricks.zerobus.Zerobus", rpc_method_handlers)
10986
server.add_generic_rpc_handlers((generic_handler,))
110-
server.add_registered_method_handlers("databricks.zerobus.Zerobus", rpc_method_handlers)
11187

11288

11389
# This class is part of an EXPERIMENTAL API.
@@ -159,5 +135,4 @@ def EphemeralStream(
159135
wait_for_ready,
160136
timeout,
161137
metadata,
162-
_registered_method=True,
163138
)

0 commit comments

Comments
 (0)