kafka-python 2.2.17__py2.py3-none-any.whl → 2.2.19__py2.py3-none-any.whl
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/codec.py +2 -4
- kafka/consumer/fetcher.py +5 -4
- kafka/coordinator/consumer.py +2 -1
- kafka/producer/record_accumulator.py +4 -0
- kafka/protocol/types.py +21 -20
- kafka/version.py +1 -1
- {kafka_python-2.2.17.dist-info → kafka_python-2.2.19.dist-info}/METADATA +1 -1
- {kafka_python-2.2.17.dist-info → kafka_python-2.2.19.dist-info}/RECORD +10 -10
- {kafka_python-2.2.17.dist-info → kafka_python-2.2.19.dist-info}/WHEEL +1 -1
- {kafka_python-2.2.17.dist-info → kafka_python-2.2.19.dist-info}/top_level.txt +0 -0
kafka/codec.py
CHANGED
|
@@ -327,7 +327,5 @@ def zstd_encode(payload):
|
|
|
327
327
|
def zstd_decode(payload):
|
|
328
328
|
if not zstd:
|
|
329
329
|
raise NotImplementedError("Zstd codec is not available")
|
|
330
|
-
|
|
331
|
-
return
|
|
332
|
-
except zstd.ZstdError:
|
|
333
|
-
return zstd.ZstdDecompressor().decompress(payload, max_output_size=ZSTD_MAX_OUTPUT_SIZE)
|
|
330
|
+
with zstd.ZstdDecompressor().stream_reader(io.BytesIO(payload), read_across_frames=True) as reader:
|
|
331
|
+
return reader.read()
|
kafka/consumer/fetcher.py
CHANGED
|
@@ -250,16 +250,17 @@ class Fetcher(six.Iterator):
|
|
|
250
250
|
break
|
|
251
251
|
|
|
252
252
|
if future.succeeded():
|
|
253
|
-
|
|
254
|
-
|
|
253
|
+
offsets, retry = future.value
|
|
254
|
+
fetched_offsets.update(offsets)
|
|
255
|
+
if not retry:
|
|
255
256
|
return fetched_offsets
|
|
256
257
|
|
|
257
|
-
timestamps = {tp: timestamps[tp] for tp in
|
|
258
|
+
timestamps = {tp: timestamps[tp] for tp in retry}
|
|
258
259
|
|
|
259
260
|
elif not future.retriable():
|
|
260
261
|
raise future.exception # pylint: disable-msg=raising-bad-type
|
|
261
262
|
|
|
262
|
-
|
|
263
|
+
elif future.exception.invalid_metadata or self._client.cluster.need_update:
|
|
263
264
|
refresh_future = self._client.cluster.request_update()
|
|
264
265
|
self._client.poll(future=refresh_future, timeout_ms=timer.timeout_ms)
|
|
265
266
|
|
kafka/coordinator/consumer.py
CHANGED
|
@@ -443,7 +443,8 @@ class ConsumerCoordinator(BaseCoordinator):
|
|
|
443
443
|
self._client.poll(future=future, timeout_ms=timer.timeout_ms)
|
|
444
444
|
|
|
445
445
|
if future.is_done:
|
|
446
|
-
|
|
446
|
+
if future_key in self._offset_fetch_futures:
|
|
447
|
+
del self._offset_fetch_futures[future_key]
|
|
447
448
|
|
|
448
449
|
if future.succeeded():
|
|
449
450
|
return future.value
|
|
@@ -179,6 +179,10 @@ class ProducerBatch(object):
|
|
|
179
179
|
return 'ProducerBatch(topic_partition=%s, record_count=%d)' % (
|
|
180
180
|
self.topic_partition, self.records.next_offset())
|
|
181
181
|
|
|
182
|
+
# for heapq
|
|
183
|
+
def __lt__(self, other):
|
|
184
|
+
return self.created < other.created
|
|
185
|
+
|
|
182
186
|
|
|
183
187
|
class RecordAccumulator(object):
|
|
184
188
|
"""
|
kafka/protocol/types.py
CHANGED
|
@@ -213,6 +213,17 @@ class Array(AbstractType):
|
|
|
213
213
|
|
|
214
214
|
|
|
215
215
|
class UnsignedVarInt32(AbstractType):
|
|
216
|
+
@classmethod
|
|
217
|
+
def decode(cls, data):
|
|
218
|
+
value = VarInt32.decode(data)
|
|
219
|
+
return (value << 1) ^ (value >> 31)
|
|
220
|
+
|
|
221
|
+
@classmethod
|
|
222
|
+
def encode(cls, value):
|
|
223
|
+
return VarInt32.encode((value >> 1) ^ -(value & 1))
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
class VarInt32(AbstractType):
|
|
216
227
|
@classmethod
|
|
217
228
|
def decode(cls, data):
|
|
218
229
|
value, i = 0, 0
|
|
@@ -225,10 +236,12 @@ class UnsignedVarInt32(AbstractType):
|
|
|
225
236
|
if i > 28:
|
|
226
237
|
raise ValueError('Invalid value {}'.format(value))
|
|
227
238
|
value |= b << i
|
|
228
|
-
return value
|
|
239
|
+
return (value >> 1) ^ -(value & 1)
|
|
229
240
|
|
|
230
241
|
@classmethod
|
|
231
242
|
def encode(cls, value):
|
|
243
|
+
# bring it in line with the java binary repr
|
|
244
|
+
value = (value << 1) ^ (value >> 31)
|
|
232
245
|
value &= 0xffffffff
|
|
233
246
|
ret = b''
|
|
234
247
|
while (value & 0xffffff80) != 0:
|
|
@@ -239,25 +252,12 @@ class UnsignedVarInt32(AbstractType):
|
|
|
239
252
|
return ret
|
|
240
253
|
|
|
241
254
|
|
|
242
|
-
class VarInt32(AbstractType):
|
|
243
|
-
@classmethod
|
|
244
|
-
def decode(cls, data):
|
|
245
|
-
value = UnsignedVarInt32.decode(data)
|
|
246
|
-
return (value >> 1) ^ -(value & 1)
|
|
247
|
-
|
|
248
|
-
@classmethod
|
|
249
|
-
def encode(cls, value):
|
|
250
|
-
# bring it in line with the java binary repr
|
|
251
|
-
value &= 0xffffffff
|
|
252
|
-
return UnsignedVarInt32.encode((value << 1) ^ (value >> 31))
|
|
253
|
-
|
|
254
|
-
|
|
255
255
|
class VarInt64(AbstractType):
|
|
256
256
|
@classmethod
|
|
257
257
|
def decode(cls, data):
|
|
258
258
|
value, i = 0, 0
|
|
259
259
|
while True:
|
|
260
|
-
b = data.read(1)
|
|
260
|
+
b, = struct.unpack('B', data.read(1))
|
|
261
261
|
if not (b & 0x80):
|
|
262
262
|
break
|
|
263
263
|
value |= (b & 0x7f) << i
|
|
@@ -270,14 +270,14 @@ class VarInt64(AbstractType):
|
|
|
270
270
|
@classmethod
|
|
271
271
|
def encode(cls, value):
|
|
272
272
|
# bring it in line with the java binary repr
|
|
273
|
+
value = (value << 1) ^ (value >> 63)
|
|
273
274
|
value &= 0xffffffffffffffff
|
|
274
|
-
v = (value << 1) ^ (value >> 63)
|
|
275
275
|
ret = b''
|
|
276
|
-
while (
|
|
276
|
+
while (value & 0xffffffffffffff80) != 0:
|
|
277
277
|
b = (value & 0x7f) | 0x80
|
|
278
278
|
ret += struct.pack('B', b)
|
|
279
|
-
|
|
280
|
-
ret += struct.pack('B',
|
|
279
|
+
value >>= 7
|
|
280
|
+
ret += struct.pack('B', value)
|
|
281
281
|
return ret
|
|
282
282
|
|
|
283
283
|
|
|
@@ -322,8 +322,9 @@ class TaggedFields(AbstractType):
|
|
|
322
322
|
for k, v in value.items():
|
|
323
323
|
# do we allow for other data types ?? It could get complicated really fast
|
|
324
324
|
assert isinstance(v, bytes), 'Value {} is not a byte array'.format(v)
|
|
325
|
-
assert isinstance(k, int) and k
|
|
325
|
+
assert isinstance(k, int) and k >= 0, 'Key {} is not a non-negative integer'.format(k)
|
|
326
326
|
ret += UnsignedVarInt32.encode(k)
|
|
327
|
+
ret += UnsignedVarInt32.encode(len(v))
|
|
327
328
|
ret += v
|
|
328
329
|
return ret
|
|
329
330
|
|
kafka/version.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = '2.2.
|
|
1
|
+
__version__ = '2.2.19'
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
kafka/__init__.py,sha256=4dvHKZAxmD_4tfJ5wGcRV2X78vPcm8vsUoqceULevjA,1077
|
|
2
2
|
kafka/client_async.py,sha256=R8q_rRpG3RrYrRmcZo7XgO2oSdpLJATNcq8w-1vIJ_8,56878
|
|
3
3
|
kafka/cluster.py,sha256=B4tOZYhZaYrcGsyAtdA8yejFm9ue7ElJxn_pd6Xhdfk,16775
|
|
4
|
-
kafka/codec.py,sha256=
|
|
4
|
+
kafka/codec.py,sha256=_jglwQ8yn-B85hzf0nvOvazRwGQSBx22Bb8R4sSCvcs,9977
|
|
5
5
|
kafka/conn.py,sha256=hDwKQ93zpZAWfACdiInEfcBSD6MpYCxVNoAjFneQW9Q,70406
|
|
6
6
|
kafka/errors.py,sha256=qX2Fp0qawU_HBNcZCwB7EDCmx3C2PehrETi6qSEJHmk,33290
|
|
7
7
|
kafka/future.py,sha256=ZQStbfUYIPJRrgMfAWxxjrIRVxsw4WCtSR0J0bkyGno,2847
|
|
8
8
|
kafka/socks5_wrapper.py,sha256=h0Gag3xAOp8io2MfzeYLOiNvLRmq3rkmpZ6Aj-9uKTw,10716
|
|
9
9
|
kafka/structs.py,sha256=SJGzmLdV21jZyQ7247k0WFy16UiusgTHK3I-e4qzI-E,3058
|
|
10
10
|
kafka/util.py,sha256=WGqI5yT1yWGgHqSuRF9Fi8ejpiB53SurMy7ABkYxJ2g,4584
|
|
11
|
-
kafka/version.py,sha256=
|
|
11
|
+
kafka/version.py,sha256=6WkzpprHDoy9mj0_FucCX1HxhMEqxYStYqflNHdfW-4,23
|
|
12
12
|
kafka/admin/__init__.py,sha256=S_XxqyyV480_yXhttK79XZqNAmZyXRjspd3SoqYykE8,720
|
|
13
13
|
kafka/admin/acl_resource.py,sha256=ak_dUsSni4SyP0ORbSKenZpwTy0Ykxq3FSt_9XgLR8k,8265
|
|
14
14
|
kafka/admin/client.py,sha256=94UpHTsgzvhOoB6_1QLeKxvZKlStKfI96xuWyaY9_Sc,78814
|
|
@@ -23,12 +23,12 @@ kafka/benchmarks/record_batch_compose.py,sha256=CnUreNg1lUT0Qx9enmSr-THmBl9PjVMf
|
|
|
23
23
|
kafka/benchmarks/record_batch_read.py,sha256=vlFaWU2YWI379n_2M8qieb_S2uHUWKV0NquEYy5b-Ho,2184
|
|
24
24
|
kafka/benchmarks/varint_speed.py,sha256=s4CuvKgDZL-_zna5E3vM8RgHjhXuW6pcaO1z1WYZ_0Y,12585
|
|
25
25
|
kafka/consumer/__init__.py,sha256=NDdvtyuJgFyQZahqL9i5sYXGP6rOMIXWwHQEaZ1fCcs,122
|
|
26
|
-
kafka/consumer/fetcher.py,sha256=
|
|
26
|
+
kafka/consumer/fetcher.py,sha256=Ft4FsafYH-_u03ktRrxGBQLVfSvMPnKSuo2vVZzRjPg,69204
|
|
27
27
|
kafka/consumer/group.py,sha256=rkjqEjWY72is-tRfm2mjAF1m6dACUP83PO_XGbkJu8I,59071
|
|
28
28
|
kafka/consumer/subscription_state.py,sha256=bK-YTVbOzhy8OB206QAfXVuo7zPA9YqYXnrRRST369c,24289
|
|
29
29
|
kafka/coordinator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
30
|
kafka/coordinator/base.py,sha256=4GdPwC28S5a6e7B20fvzMVcL0YKemS43B4JiogeEd0E,54507
|
|
31
|
-
kafka/coordinator/consumer.py,sha256=
|
|
31
|
+
kafka/coordinator/consumer.py,sha256=Q2QErQ-K3mi-l4TONiKakuj0SBrJRP5bCzJNOBWuh5s,46413
|
|
32
32
|
kafka/coordinator/heartbeat.py,sha256=LeJJlwz1oUEOfEMIFT-R7ZOHBQ-b-luVKwmKyWxLfDo,3242
|
|
33
33
|
kafka/coordinator/protocol.py,sha256=wTaIOnUVbj0CKXZ82FktZo-zMRvOCk3hdQAoHJ62e3I,1041
|
|
34
34
|
kafka/coordinator/assignors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -68,7 +68,7 @@ kafka/partitioner/default.py,sha256=tW-RC1PWIPRDEbeEAaPTLn-00oiZnXoVouEk9AnYE4w,
|
|
|
68
68
|
kafka/producer/__init__.py,sha256=i3Wxih0NHjmqCkRNE54ial8fBp9siqabUE6ZGyL6oX8,122
|
|
69
69
|
kafka/producer/future.py,sha256=UC3-g9QlgVFmbitrtMXVpeP0Pbvr7xl2kcw6bAehKG8,2983
|
|
70
70
|
kafka/producer/kafka.py,sha256=T0c-QmoagY6HMyomNlvYaYSVfUHe42W72EDiegX6XyY,53573
|
|
71
|
-
kafka/producer/record_accumulator.py,sha256=
|
|
71
|
+
kafka/producer/record_accumulator.py,sha256=b6aoqCS_O40N_JBSOPW5ffQBMIdITaANU4U9QQfJC5A,28260
|
|
72
72
|
kafka/producer/sender.py,sha256=8-TLTw6vQO7AheWSDPI33cQdWMyTDxi1k-pkXuUb9k0,37789
|
|
73
73
|
kafka/producer/transaction_manager.py,sha256=q3e9Lc9o-ofWvjT9FbHdTQH08XQBeRtoQEcQHGcnp7g,41535
|
|
74
74
|
kafka/protocol/__init__.py,sha256=T1RBBlTH3zze0Cr1RqemPD4Z1b3IUDRmLOBfZTsPgLs,1184
|
|
@@ -97,7 +97,7 @@ kafka/protocol/sasl_authenticate.py,sha256=HaFAHPRhCKgyGEoJ5LwGffcpMUBNCphgBgXCs
|
|
|
97
97
|
kafka/protocol/sasl_handshake.py,sha256=WzQh9HBRemXvShrczkN4rd4SM-hNdes1khMzPRvcRQQ,982
|
|
98
98
|
kafka/protocol/struct.py,sha256=DxktwrPp1pj4b7Vne2H5n-xWjgx9jpCmf0ydZkeIjoY,2380
|
|
99
99
|
kafka/protocol/txn_offset_commit.py,sha256=_6Wr-SabUd9q09Tj9oG43AVZcqlW3LYbqXNW1Pvk9vs,2250
|
|
100
|
-
kafka/protocol/types.py,sha256=
|
|
100
|
+
kafka/protocol/types.py,sha256=DgqYR4YHhN77rEls6hMsEPEca9pmb9wpNhfASh9WYp0,10360
|
|
101
101
|
kafka/record/__init__.py,sha256=Q20hP_R5XX3AEnAlPkpoWzTLShESvxUT2OLXmI-JYEQ,129
|
|
102
102
|
kafka/record/_crc32c.py,sha256=Ok-P62Yvg6D6rMGM9Z56OMjZWQlnps4xBbakg-sdxvI,5761
|
|
103
103
|
kafka/record/abc.py,sha256=z1UYURHbD2RyyGRpVXKP598jck5eXU9p4M6iUo6ZSFo,4110
|
|
@@ -120,7 +120,7 @@ kafka/vendor/enum34.py,sha256=-u-lxAiJMt6ru4Do7NUDY9OpeWkYJMksb2xengJawFE,31204
|
|
|
120
120
|
kafka/vendor/selectors34.py,sha256=gxejLO4eXf8mRSGXaQiknPig3GdX1rtsZiYOQJVuAy8,20594
|
|
121
121
|
kafka/vendor/six.py,sha256=lLBa9_HrANP5BMZ7twEzg1M3wofwPmXyptuWmHX0brY,34826
|
|
122
122
|
kafka/vendor/socketpair.py,sha256=Fi3PoY1Okkppab720wFk1BhHXyjcw7hi5DwhqrYZH2Y,2737
|
|
123
|
-
kafka_python-2.2.
|
|
124
|
-
kafka_python-2.2.
|
|
125
|
-
kafka_python-2.2.
|
|
126
|
-
kafka_python-2.2.
|
|
123
|
+
kafka_python-2.2.19.dist-info/METADATA,sha256=Mk_bmFfBWrAOzcfTWLGyMNILRLHkMjvVXdw_2za3cwA,9952
|
|
124
|
+
kafka_python-2.2.19.dist-info/WHEEL,sha256=TdQ5LtNwLuxTCjgxN51AgdU5w-KkB9ttmLbzjTH02pg,109
|
|
125
|
+
kafka_python-2.2.19.dist-info/top_level.txt,sha256=IivJz7l5WHdLNDT6RIiVAlhjQzYRwGqBBmKHZ7WjPeM,6
|
|
126
|
+
kafka_python-2.2.19.dist-info/RECORD,,
|
|
File without changes
|