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 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
- try:
331
- return zstd.ZstdDecompressor().decompress(payload)
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
- fetched_offsets.update(future.value[0])
254
- if not future.value[1]:
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 future.value[1]}
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
- if future.exception.invalid_metadata or self._client.cluster.need_update:
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
 
@@ -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
- del self._offset_fetch_futures[future_key]
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 (v & 0xffffffffffffff80) != 0:
276
+ while (value & 0xffffffffffffff80) != 0:
277
277
  b = (value & 0x7f) | 0x80
278
278
  ret += struct.pack('B', b)
279
- v >>= 7
280
- ret += struct.pack('B', v)
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 > 0, 'Key {} is not a positive integer'.format(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.17'
1
+ __version__ = '2.2.19'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kafka-python
3
- Version: 2.2.17
3
+ Version: 2.2.19
4
4
  Summary: Pure Python client for Apache Kafka
5
5
  Author-email: Dana Powers <dana.powers@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/dpkp/kafka-python
@@ -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=8NZpnehzNrhSBIjzbPVSvyFbSeLAqEntE7BfVHu-_9I,10036
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=cwT2pG8_0ZVnZ1VhpzKqNri9AmJ_-isNazUrTQ3CI14,23
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=RlQLut54c5nOMl21neTJA2tmdsxIIPIX2Idu5Q-dYKY,69184
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=le4bGbHfrDK4pperYXekPKzuZW576uXL324IOwS4Kmw,46348
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=xNkHOCmganxDfa3W_Y3iBLT4RaAOZi0Lix-mUzsp2aQ,28170
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=f-lwfCqsJulYnBT1loek_KbMnZZqItN4YRIONjg3kbE,10244
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.17.dist-info/METADATA,sha256=u8fByYt-bY1oySuBwxpK9MiR1aGM5AFpNX5wNcTspWA,9952
124
- kafka_python-2.2.17.dist-info/WHEEL,sha256=JNWh1Fm1UdwIQV075glCn4MVuCRs0sotJIq-J6rbxCU,109
125
- kafka_python-2.2.17.dist-info/top_level.txt,sha256=IivJz7l5WHdLNDT6RIiVAlhjQzYRwGqBBmKHZ7WjPeM,6
126
- kafka_python-2.2.17.dist-info/RECORD,,
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,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (82.0.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py2-none-any
5
5
  Tag: py3-none-any