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.
@@ -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,5 @@
1
+ # kafka-grpc (Python)
2
+
3
+ Kafka over gRPC — generated grpcdc.kafka.v1 clients (produce/consume/groups/topics) speaking gRPC over WebRTC DataChannels, via the grpc-dc runtime.
4
+
5
+ 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
+ ))