kafka-grpc 0.37.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- kafka_grpc-0.37.0/PKG-INFO +14 -0
- kafka_grpc-0.37.0/README.md +5 -0
- kafka_grpc-0.37.0/grpcdc/__init__.py +1 -0
- kafka_grpc-0.37.0/grpcdc/kafka_grpc_dc.py +283 -0
- kafka_grpc-0.37.0/grpcdc/kafka_pb.py +1866 -0
- kafka_grpc-0.37.0/kafka_grpc.egg-info/PKG-INFO +14 -0
- kafka_grpc-0.37.0/kafka_grpc.egg-info/SOURCES.txt +10 -0
- kafka_grpc-0.37.0/kafka_grpc.egg-info/dependency_links.txt +1 -0
- kafka_grpc-0.37.0/kafka_grpc.egg-info/requires.txt +1 -0
- kafka_grpc-0.37.0/kafka_grpc.egg-info/top_level.txt +1 -0
- kafka_grpc-0.37.0/pyproject.toml +15 -0
- kafka_grpc-0.37.0/setup.cfg +4 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: kafka-grpc
|
|
3
|
+
Version: 0.37.0
|
|
4
|
+
Summary: Kafka over gRPC — generated grpcdc.kafka.v1 clients (produce/consume/groups/topics) speaking gRPC over WebRTC DataChannels, via the grpc-dc runtime (Python)
|
|
5
|
+
License: Apache-2.0
|
|
6
|
+
Requires-Python: >=3.9
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
Requires-Dist: grpc-dc>=0.37.0
|
|
9
|
+
|
|
10
|
+
# kafka-grpc (Python)
|
|
11
|
+
|
|
12
|
+
Kafka over gRPC — generated grpcdc.kafka.v1 clients (produce/consume/groups/topics) speaking gRPC over WebRTC DataChannels, via the grpc-dc runtime.
|
|
13
|
+
|
|
14
|
+
Install: `pip install kafka-grpc` (depends on `grpc-dc`).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Generated grpcdc.kafka.v1 stubs; the runtime lives in the grpc-dc package."""
|
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
# Generated code: use without restriction (see GENERATED-CODE-LICENSE.md).
|
|
2
|
+
# @generated by protoc-gen-grpc-dc-python. DO NOT EDIT.
|
|
3
|
+
# source: kafka.proto
|
|
4
|
+
|
|
5
|
+
try:
|
|
6
|
+
from . import kafka_pb
|
|
7
|
+
except ImportError: # direct module load
|
|
8
|
+
import kafka_pb
|
|
9
|
+
|
|
10
|
+
import grpcdc
|
|
11
|
+
|
|
12
|
+
class _RecvStream:
|
|
13
|
+
"""Client receiving stream: recv() raises EOFError at end."""
|
|
14
|
+
|
|
15
|
+
def __init__(self, stream, resp_cls):
|
|
16
|
+
self._stream = stream
|
|
17
|
+
self._resp_cls = resp_cls
|
|
18
|
+
|
|
19
|
+
def recv(self):
|
|
20
|
+
if self._stream is None:
|
|
21
|
+
raise EOFError("stream closed")
|
|
22
|
+
return self._stream.recv(self._resp_cls())
|
|
23
|
+
|
|
24
|
+
def close(self):
|
|
25
|
+
"""Abandon the call early: RST so the server stops."""
|
|
26
|
+
stream, self._stream = self._stream, None
|
|
27
|
+
if stream is not None:
|
|
28
|
+
stream.cancel()
|
|
29
|
+
|
|
30
|
+
def __del__(self):
|
|
31
|
+
self.close()
|
|
32
|
+
|
|
33
|
+
def __enter__(self):
|
|
34
|
+
return self
|
|
35
|
+
|
|
36
|
+
def __exit__(self, *exc):
|
|
37
|
+
self.close()
|
|
38
|
+
return False
|
|
39
|
+
|
|
40
|
+
def __iter__(self):
|
|
41
|
+
return self
|
|
42
|
+
|
|
43
|
+
def __next__(self):
|
|
44
|
+
try:
|
|
45
|
+
return self.recv()
|
|
46
|
+
except EOFError:
|
|
47
|
+
raise StopIteration
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class _SendStream:
|
|
51
|
+
"""Server-streaming sink passed to service implementations."""
|
|
52
|
+
|
|
53
|
+
def __init__(self, ctx, sink):
|
|
54
|
+
self.context = ctx
|
|
55
|
+
self._sink = sink
|
|
56
|
+
|
|
57
|
+
def send(self, resp):
|
|
58
|
+
self._sink.send(resp.marshal_dc())
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class _ClientStreamImpl:
|
|
62
|
+
"""Client-streaming stream passed to service implementations."""
|
|
63
|
+
|
|
64
|
+
def __init__(self, ctx, reqs, req_cls):
|
|
65
|
+
self.context = ctx
|
|
66
|
+
self._reqs = reqs
|
|
67
|
+
self._req_cls = req_cls
|
|
68
|
+
self.resp = None
|
|
69
|
+
|
|
70
|
+
def recv(self):
|
|
71
|
+
return self._reqs.recv_into(self._req_cls())
|
|
72
|
+
|
|
73
|
+
def send_and_close(self, resp):
|
|
74
|
+
self.resp = resp
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
class _BidiStream:
|
|
78
|
+
"""Bidi stream passed to service implementations."""
|
|
79
|
+
|
|
80
|
+
def __init__(self, ctx, reqs, sink, req_cls):
|
|
81
|
+
self.context = ctx
|
|
82
|
+
self._reqs = reqs
|
|
83
|
+
self._sink = sink
|
|
84
|
+
self._req_cls = req_cls
|
|
85
|
+
|
|
86
|
+
def send(self, resp):
|
|
87
|
+
self._sink.send(resp.marshal_dc())
|
|
88
|
+
|
|
89
|
+
def recv(self):
|
|
90
|
+
return self._reqs.recv_into(self._req_cls())
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
class _AsyncRecvStream:
|
|
94
|
+
"""Async client receiving stream: async-for or await recv()."""
|
|
95
|
+
|
|
96
|
+
def __init__(self, stream, resp_cls):
|
|
97
|
+
self._stream = stream
|
|
98
|
+
self._resp_cls = resp_cls
|
|
99
|
+
|
|
100
|
+
async def recv(self):
|
|
101
|
+
return await self._stream.recv(self._resp_cls())
|
|
102
|
+
|
|
103
|
+
def cancel(self):
|
|
104
|
+
self._stream.cancel()
|
|
105
|
+
|
|
106
|
+
async def aclose(self):
|
|
107
|
+
self.cancel()
|
|
108
|
+
|
|
109
|
+
def __aiter__(self):
|
|
110
|
+
return self
|
|
111
|
+
|
|
112
|
+
async def __anext__(self):
|
|
113
|
+
try:
|
|
114
|
+
return await self.recv()
|
|
115
|
+
except EOFError:
|
|
116
|
+
raise StopAsyncIteration
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
class KafkaClient:
|
|
120
|
+
def __init__(self, channel):
|
|
121
|
+
self._channel = channel
|
|
122
|
+
|
|
123
|
+
def Metadata(self, req, metadata=None, timeout=None):
|
|
124
|
+
return self._channel.unary("/grpcdc.kafka.v1.Kafka/Metadata", req, kafka_pb.MetadataResponse(), metadata, timeout)
|
|
125
|
+
|
|
126
|
+
def OpenProducer(self, req, metadata=None, timeout=None):
|
|
127
|
+
return self._channel.unary("/grpcdc.kafka.v1.Kafka/OpenProducer", req, kafka_pb.OpenProducerResponse(), metadata, timeout)
|
|
128
|
+
|
|
129
|
+
def CloseProducer(self, req, metadata=None, timeout=None):
|
|
130
|
+
return self._channel.unary("/grpcdc.kafka.v1.Kafka/CloseProducer", req, kafka_pb.CloseProducerResponse(), metadata, timeout)
|
|
131
|
+
|
|
132
|
+
def EndTransaction(self, req, metadata=None, timeout=None):
|
|
133
|
+
return self._channel.unary("/grpcdc.kafka.v1.Kafka/EndTransaction", req, kafka_pb.EndTransactionResponse(), metadata, timeout)
|
|
134
|
+
|
|
135
|
+
def Produce(self, req, metadata=None, timeout=None):
|
|
136
|
+
return self._channel.unary("/grpcdc.kafka.v1.Kafka/Produce", req, kafka_pb.ProduceResponse(), metadata, timeout)
|
|
137
|
+
|
|
138
|
+
def Consume(self, req, metadata=None, timeout=None):
|
|
139
|
+
stream = self._channel.server_stream("/grpcdc.kafka.v1.Kafka/Consume", req, metadata, timeout)
|
|
140
|
+
return _RecvStream(stream, kafka_pb.ConsumeResponse)
|
|
141
|
+
|
|
142
|
+
def Subscribe(self, req, metadata=None, timeout=None):
|
|
143
|
+
stream = self._channel.server_stream("/grpcdc.kafka.v1.Kafka/Subscribe", req, metadata, timeout)
|
|
144
|
+
return _RecvStream(stream, kafka_pb.GroupSubscribeResponse)
|
|
145
|
+
|
|
146
|
+
def ListOffsets(self, req, metadata=None, timeout=None):
|
|
147
|
+
return self._channel.unary("/grpcdc.kafka.v1.Kafka/ListOffsets", req, kafka_pb.ListOffsetsResponse(), metadata, timeout)
|
|
148
|
+
|
|
149
|
+
def CommitOffset(self, req, metadata=None, timeout=None):
|
|
150
|
+
return self._channel.unary("/grpcdc.kafka.v1.Kafka/CommitOffset", req, kafka_pb.CommitOffsetResponse(), metadata, timeout)
|
|
151
|
+
|
|
152
|
+
def FetchOffset(self, req, metadata=None, timeout=None):
|
|
153
|
+
return self._channel.unary("/grpcdc.kafka.v1.Kafka/FetchOffset", req, kafka_pb.FetchOffsetResponse(), metadata, timeout)
|
|
154
|
+
|
|
155
|
+
def CreateTopics(self, req, metadata=None, timeout=None):
|
|
156
|
+
return self._channel.unary("/grpcdc.kafka.v1.Kafka/CreateTopics", req, kafka_pb.CreateTopicsResponse(), metadata, timeout)
|
|
157
|
+
|
|
158
|
+
def DeleteTopics(self, req, metadata=None, timeout=None):
|
|
159
|
+
return self._channel.unary("/grpcdc.kafka.v1.Kafka/DeleteTopics", req, kafka_pb.DeleteTopicsResponse(), metadata, timeout)
|
|
160
|
+
|
|
161
|
+
class KafkaClientAsync:
|
|
162
|
+
"""Asyncio client: wrap a grpcdc.AsyncChannel (a sync Channel is wrapped)."""
|
|
163
|
+
|
|
164
|
+
def __init__(self, channel):
|
|
165
|
+
if isinstance(channel, grpcdc.AsyncChannel):
|
|
166
|
+
self._channel = channel
|
|
167
|
+
else:
|
|
168
|
+
self._channel = grpcdc.AsyncChannel(channel=channel)
|
|
169
|
+
|
|
170
|
+
async def Metadata(self, req, metadata=None, timeout=None):
|
|
171
|
+
return await self._channel.unary("/grpcdc.kafka.v1.Kafka/Metadata", req, kafka_pb.MetadataResponse(), metadata, timeout)
|
|
172
|
+
|
|
173
|
+
async def OpenProducer(self, req, metadata=None, timeout=None):
|
|
174
|
+
return await self._channel.unary("/grpcdc.kafka.v1.Kafka/OpenProducer", req, kafka_pb.OpenProducerResponse(), metadata, timeout)
|
|
175
|
+
|
|
176
|
+
async def CloseProducer(self, req, metadata=None, timeout=None):
|
|
177
|
+
return await self._channel.unary("/grpcdc.kafka.v1.Kafka/CloseProducer", req, kafka_pb.CloseProducerResponse(), metadata, timeout)
|
|
178
|
+
|
|
179
|
+
async def EndTransaction(self, req, metadata=None, timeout=None):
|
|
180
|
+
return await self._channel.unary("/grpcdc.kafka.v1.Kafka/EndTransaction", req, kafka_pb.EndTransactionResponse(), metadata, timeout)
|
|
181
|
+
|
|
182
|
+
async def Produce(self, req, metadata=None, timeout=None):
|
|
183
|
+
return await self._channel.unary("/grpcdc.kafka.v1.Kafka/Produce", req, kafka_pb.ProduceResponse(), metadata, timeout)
|
|
184
|
+
|
|
185
|
+
async def Consume(self, req, metadata=None, timeout=None):
|
|
186
|
+
stream = await self._channel.server_stream("/grpcdc.kafka.v1.Kafka/Consume", req, metadata, timeout)
|
|
187
|
+
return _AsyncRecvStream(stream, kafka_pb.ConsumeResponse)
|
|
188
|
+
|
|
189
|
+
async def Subscribe(self, req, metadata=None, timeout=None):
|
|
190
|
+
stream = await self._channel.server_stream("/grpcdc.kafka.v1.Kafka/Subscribe", req, metadata, timeout)
|
|
191
|
+
return _AsyncRecvStream(stream, kafka_pb.GroupSubscribeResponse)
|
|
192
|
+
|
|
193
|
+
async def ListOffsets(self, req, metadata=None, timeout=None):
|
|
194
|
+
return await self._channel.unary("/grpcdc.kafka.v1.Kafka/ListOffsets", req, kafka_pb.ListOffsetsResponse(), metadata, timeout)
|
|
195
|
+
|
|
196
|
+
async def CommitOffset(self, req, metadata=None, timeout=None):
|
|
197
|
+
return await self._channel.unary("/grpcdc.kafka.v1.Kafka/CommitOffset", req, kafka_pb.CommitOffsetResponse(), metadata, timeout)
|
|
198
|
+
|
|
199
|
+
async def FetchOffset(self, req, metadata=None, timeout=None):
|
|
200
|
+
return await self._channel.unary("/grpcdc.kafka.v1.Kafka/FetchOffset", req, kafka_pb.FetchOffsetResponse(), metadata, timeout)
|
|
201
|
+
|
|
202
|
+
async def CreateTopics(self, req, metadata=None, timeout=None):
|
|
203
|
+
return await self._channel.unary("/grpcdc.kafka.v1.Kafka/CreateTopics", req, kafka_pb.CreateTopicsResponse(), metadata, timeout)
|
|
204
|
+
|
|
205
|
+
async def DeleteTopics(self, req, metadata=None, timeout=None):
|
|
206
|
+
return await self._channel.unary("/grpcdc.kafka.v1.Kafka/DeleteTopics", req, kafka_pb.DeleteTopicsResponse(), metadata, timeout)
|
|
207
|
+
|
|
208
|
+
def register_kafka_server(server, impl):
|
|
209
|
+
def _Metadata_handler(ctx, reqs, sink):
|
|
210
|
+
req = reqs.recv_into(kafka_pb.MetadataRequest())
|
|
211
|
+
resp = impl.Metadata(ctx, req)
|
|
212
|
+
sink.send(resp.marshal_dc())
|
|
213
|
+
|
|
214
|
+
def _OpenProducer_handler(ctx, reqs, sink):
|
|
215
|
+
req = reqs.recv_into(kafka_pb.OpenProducerRequest())
|
|
216
|
+
resp = impl.OpenProducer(ctx, req)
|
|
217
|
+
sink.send(resp.marshal_dc())
|
|
218
|
+
|
|
219
|
+
def _CloseProducer_handler(ctx, reqs, sink):
|
|
220
|
+
req = reqs.recv_into(kafka_pb.CloseProducerRequest())
|
|
221
|
+
resp = impl.CloseProducer(ctx, req)
|
|
222
|
+
sink.send(resp.marshal_dc())
|
|
223
|
+
|
|
224
|
+
def _EndTransaction_handler(ctx, reqs, sink):
|
|
225
|
+
req = reqs.recv_into(kafka_pb.EndTransactionRequest())
|
|
226
|
+
resp = impl.EndTransaction(ctx, req)
|
|
227
|
+
sink.send(resp.marshal_dc())
|
|
228
|
+
|
|
229
|
+
def _Produce_handler(ctx, reqs, sink):
|
|
230
|
+
req = reqs.recv_into(kafka_pb.ProduceRequest())
|
|
231
|
+
resp = impl.Produce(ctx, req)
|
|
232
|
+
sink.send(resp.marshal_dc())
|
|
233
|
+
|
|
234
|
+
def _Consume_handler(ctx, reqs, sink):
|
|
235
|
+
req = reqs.recv_into(kafka_pb.ConsumeRequest())
|
|
236
|
+
impl.Consume(req, _SendStream(ctx, sink))
|
|
237
|
+
|
|
238
|
+
def _Subscribe_handler(ctx, reqs, sink):
|
|
239
|
+
req = reqs.recv_into(kafka_pb.GroupSubscribeRequest())
|
|
240
|
+
impl.Subscribe(req, _SendStream(ctx, sink))
|
|
241
|
+
|
|
242
|
+
def _ListOffsets_handler(ctx, reqs, sink):
|
|
243
|
+
req = reqs.recv_into(kafka_pb.ListOffsetsRequest())
|
|
244
|
+
resp = impl.ListOffsets(ctx, req)
|
|
245
|
+
sink.send(resp.marshal_dc())
|
|
246
|
+
|
|
247
|
+
def _CommitOffset_handler(ctx, reqs, sink):
|
|
248
|
+
req = reqs.recv_into(kafka_pb.CommitOffsetRequest())
|
|
249
|
+
resp = impl.CommitOffset(ctx, req)
|
|
250
|
+
sink.send(resp.marshal_dc())
|
|
251
|
+
|
|
252
|
+
def _FetchOffset_handler(ctx, reqs, sink):
|
|
253
|
+
req = reqs.recv_into(kafka_pb.FetchOffsetRequest())
|
|
254
|
+
resp = impl.FetchOffset(ctx, req)
|
|
255
|
+
sink.send(resp.marshal_dc())
|
|
256
|
+
|
|
257
|
+
def _CreateTopics_handler(ctx, reqs, sink):
|
|
258
|
+
req = reqs.recv_into(kafka_pb.CreateTopicsRequest())
|
|
259
|
+
resp = impl.CreateTopics(ctx, req)
|
|
260
|
+
sink.send(resp.marshal_dc())
|
|
261
|
+
|
|
262
|
+
def _DeleteTopics_handler(ctx, reqs, sink):
|
|
263
|
+
req = reqs.recv_into(kafka_pb.DeleteTopicsRequest())
|
|
264
|
+
resp = impl.DeleteTopics(ctx, req)
|
|
265
|
+
sink.send(resp.marshal_dc())
|
|
266
|
+
|
|
267
|
+
server.register_service(grpcdc.ServiceDesc(
|
|
268
|
+
"grpcdc.kafka.v1.Kafka",
|
|
269
|
+
[
|
|
270
|
+
grpcdc.Method("Metadata", "/grpcdc.kafka.v1.Kafka/Metadata", grpcdc.KIND_UNARY, _Metadata_handler),
|
|
271
|
+
grpcdc.Method("OpenProducer", "/grpcdc.kafka.v1.Kafka/OpenProducer", grpcdc.KIND_UNARY, _OpenProducer_handler),
|
|
272
|
+
grpcdc.Method("CloseProducer", "/grpcdc.kafka.v1.Kafka/CloseProducer", grpcdc.KIND_UNARY, _CloseProducer_handler),
|
|
273
|
+
grpcdc.Method("EndTransaction", "/grpcdc.kafka.v1.Kafka/EndTransaction", grpcdc.KIND_UNARY, _EndTransaction_handler),
|
|
274
|
+
grpcdc.Method("Produce", "/grpcdc.kafka.v1.Kafka/Produce", grpcdc.KIND_UNARY, _Produce_handler),
|
|
275
|
+
grpcdc.Method("Consume", "/grpcdc.kafka.v1.Kafka/Consume", grpcdc.KIND_SERVER_STREAMING, _Consume_handler),
|
|
276
|
+
grpcdc.Method("Subscribe", "/grpcdc.kafka.v1.Kafka/Subscribe", grpcdc.KIND_SERVER_STREAMING, _Subscribe_handler),
|
|
277
|
+
grpcdc.Method("ListOffsets", "/grpcdc.kafka.v1.Kafka/ListOffsets", grpcdc.KIND_UNARY, _ListOffsets_handler),
|
|
278
|
+
grpcdc.Method("CommitOffset", "/grpcdc.kafka.v1.Kafka/CommitOffset", grpcdc.KIND_UNARY, _CommitOffset_handler),
|
|
279
|
+
grpcdc.Method("FetchOffset", "/grpcdc.kafka.v1.Kafka/FetchOffset", grpcdc.KIND_UNARY, _FetchOffset_handler),
|
|
280
|
+
grpcdc.Method("CreateTopics", "/grpcdc.kafka.v1.Kafka/CreateTopics", grpcdc.KIND_UNARY, _CreateTopics_handler),
|
|
281
|
+
grpcdc.Method("DeleteTopics", "/grpcdc.kafka.v1.Kafka/DeleteTopics", grpcdc.KIND_UNARY, _DeleteTopics_handler),
|
|
282
|
+
],
|
|
283
|
+
))
|