kafka-python 2.2.11__tar.gz → 2.2.13__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.
Files changed (168) hide show
  1. {kafka_python-2.2.11 → kafka_python-2.2.13}/CHANGES.md +17 -0
  2. {kafka_python-2.2.11 → kafka_python-2.2.13}/PKG-INFO +2 -2
  3. {kafka_python-2.2.11 → kafka_python-2.2.13}/README.rst +1 -1
  4. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/admin/client.py +5 -7
  5. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/consumer/fetcher.py +2 -1
  6. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/stats/percentiles.py +1 -1
  7. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/sasl/gssapi.py +4 -2
  8. kafka_python-2.2.13/kafka/version.py +1 -0
  9. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka_python.egg-info/PKG-INFO +2 -2
  10. kafka_python-2.2.11/kafka/version.py +0 -1
  11. {kafka_python-2.2.11 → kafka_python-2.2.13}/AUTHORS.md +0 -0
  12. {kafka_python-2.2.11 → kafka_python-2.2.13}/LICENSE +0 -0
  13. {kafka_python-2.2.11 → kafka_python-2.2.13}/MANIFEST.in +0 -0
  14. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/__init__.py +0 -0
  15. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/admin/__init__.py +0 -0
  16. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/admin/acl_resource.py +0 -0
  17. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/admin/config_resource.py +0 -0
  18. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/admin/new_partitions.py +0 -0
  19. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/admin/new_topic.py +0 -0
  20. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/benchmarks/__init__.py +0 -0
  21. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/benchmarks/consumer_performance.py +0 -0
  22. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/benchmarks/load_example.py +0 -0
  23. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/benchmarks/producer_performance.py +0 -0
  24. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/benchmarks/record_batch_compose.py +0 -0
  25. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/benchmarks/record_batch_read.py +0 -0
  26. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/benchmarks/varint_speed.py +0 -0
  27. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/client_async.py +0 -0
  28. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/cluster.py +0 -0
  29. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/codec.py +0 -0
  30. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/conn.py +0 -0
  31. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/consumer/__init__.py +0 -0
  32. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/consumer/group.py +0 -0
  33. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/consumer/subscription_state.py +0 -0
  34. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/coordinator/__init__.py +0 -0
  35. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/coordinator/assignors/__init__.py +0 -0
  36. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/coordinator/assignors/abstract.py +0 -0
  37. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/coordinator/assignors/range.py +0 -0
  38. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/coordinator/assignors/roundrobin.py +0 -0
  39. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/coordinator/assignors/sticky/__init__.py +0 -0
  40. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/coordinator/assignors/sticky/partition_movements.py +0 -0
  41. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/coordinator/assignors/sticky/sorted_set.py +0 -0
  42. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/coordinator/assignors/sticky/sticky_assignor.py +0 -0
  43. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/coordinator/base.py +0 -0
  44. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/coordinator/consumer.py +0 -0
  45. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/coordinator/heartbeat.py +0 -0
  46. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/coordinator/protocol.py +0 -0
  47. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/errors.py +0 -0
  48. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/future.py +0 -0
  49. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/__init__.py +0 -0
  50. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/compound_stat.py +0 -0
  51. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/dict_reporter.py +0 -0
  52. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/kafka_metric.py +0 -0
  53. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/measurable.py +0 -0
  54. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/measurable_stat.py +0 -0
  55. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/metric_config.py +0 -0
  56. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/metric_name.py +0 -0
  57. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/metrics.py +0 -0
  58. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/metrics_reporter.py +0 -0
  59. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/quota.py +0 -0
  60. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/stat.py +0 -0
  61. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/stats/__init__.py +0 -0
  62. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/stats/avg.py +0 -0
  63. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/stats/count.py +0 -0
  64. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/stats/histogram.py +0 -0
  65. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/stats/max_stat.py +0 -0
  66. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/stats/min_stat.py +0 -0
  67. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/stats/percentile.py +0 -0
  68. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/stats/rate.py +0 -0
  69. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/stats/sampled_stat.py +0 -0
  70. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/stats/sensor.py +0 -0
  71. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/metrics/stats/total.py +0 -0
  72. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/partitioner/__init__.py +0 -0
  73. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/partitioner/default.py +0 -0
  74. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/producer/__init__.py +0 -0
  75. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/producer/future.py +0 -0
  76. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/producer/kafka.py +0 -0
  77. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/producer/record_accumulator.py +0 -0
  78. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/producer/sender.py +0 -0
  79. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/producer/transaction_manager.py +0 -0
  80. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/__init__.py +0 -0
  81. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/abstract.py +0 -0
  82. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/add_offsets_to_txn.py +0 -0
  83. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/add_partitions_to_txn.py +0 -0
  84. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/admin.py +0 -0
  85. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/api.py +0 -0
  86. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/api_versions.py +0 -0
  87. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/broker_api_versions.py +0 -0
  88. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/commit.py +0 -0
  89. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/end_txn.py +0 -0
  90. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/fetch.py +0 -0
  91. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/find_coordinator.py +0 -0
  92. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/frame.py +0 -0
  93. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/group.py +0 -0
  94. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/init_producer_id.py +0 -0
  95. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/list_offsets.py +0 -0
  96. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/message.py +0 -0
  97. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/metadata.py +0 -0
  98. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/offset_for_leader_epoch.py +0 -0
  99. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/parser.py +0 -0
  100. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/pickle.py +0 -0
  101. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/produce.py +0 -0
  102. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/sasl_authenticate.py +0 -0
  103. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/sasl_handshake.py +0 -0
  104. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/struct.py +0 -0
  105. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/txn_offset_commit.py +0 -0
  106. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/protocol/types.py +0 -0
  107. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/record/__init__.py +0 -0
  108. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/record/_crc32c.py +0 -0
  109. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/record/abc.py +0 -0
  110. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/record/default_records.py +0 -0
  111. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/record/legacy_records.py +0 -0
  112. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/record/memory_records.py +0 -0
  113. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/record/util.py +0 -0
  114. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/sasl/__init__.py +0 -0
  115. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/sasl/abc.py +0 -0
  116. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/sasl/msk.py +0 -0
  117. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/sasl/oauth.py +0 -0
  118. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/sasl/plain.py +0 -0
  119. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/sasl/scram.py +0 -0
  120. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/sasl/sspi.py +0 -0
  121. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/serializer/__init__.py +0 -0
  122. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/serializer/abstract.py +0 -0
  123. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/socks5_wrapper.py +0 -0
  124. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/structs.py +0 -0
  125. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/util.py +0 -0
  126. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/vendor/__init__.py +0 -0
  127. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/vendor/enum34.py +0 -0
  128. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/vendor/selectors34.py +0 -0
  129. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/vendor/six.py +0 -0
  130. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka/vendor/socketpair.py +0 -0
  131. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka_python.egg-info/SOURCES.txt +0 -0
  132. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka_python.egg-info/dependency_links.txt +0 -0
  133. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka_python.egg-info/requires.txt +0 -0
  134. {kafka_python-2.2.11 → kafka_python-2.2.13}/kafka_python.egg-info/top_level.txt +0 -0
  135. {kafka_python-2.2.11 → kafka_python-2.2.13}/pyproject.toml +0 -0
  136. {kafka_python-2.2.11 → kafka_python-2.2.13}/setup.cfg +0 -0
  137. {kafka_python-2.2.11 → kafka_python-2.2.13}/setup.py +0 -0
  138. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/integration/__init__.py +0 -0
  139. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/integration/conftest.py +0 -0
  140. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/integration/fixtures.py +0 -0
  141. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/integration/test_admin_integration.py +0 -0
  142. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/integration/test_consumer_group.py +0 -0
  143. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/integration/test_consumer_integration.py +0 -0
  144. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/integration/test_producer_integration.py +0 -0
  145. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/integration/test_sasl_integration.py +0 -0
  146. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_acl_comparisons.py +0 -0
  147. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_admin.py +0 -0
  148. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_api_object_implementation.py +0 -0
  149. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_assignors.py +0 -0
  150. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_client_async.py +0 -0
  151. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_cluster.py +0 -0
  152. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_codec.py +0 -0
  153. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_conn.py +0 -0
  154. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_consumer.py +0 -0
  155. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_coordinator.py +0 -0
  156. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_fetcher.py +0 -0
  157. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_metrics.py +0 -0
  158. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_object_conversion.py +0 -0
  159. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_package.py +0 -0
  160. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_partition_movements.py +0 -0
  161. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_partitioner.py +0 -0
  162. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_producer.py +0 -0
  163. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_protocol.py +0 -0
  164. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_record_accumulator.py +0 -0
  165. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_sender.py +0 -0
  166. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_subscription_state.py +0 -0
  167. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/test_util.py +0 -0
  168. {kafka_python-2.2.11 → kafka_python-2.2.13}/test/testutil.py +0 -0
@@ -1,3 +1,20 @@
1
+ # 2.2.13 (June 20, 2025)
2
+
3
+ Fixes
4
+ * Use client.await_ready() to simplify blocking wait and add timeout to admin client (#2648)
5
+ * Fixup import style in example.py
6
+
7
+ Documentation
8
+ * update README kafka version badge to include 4.0
9
+
10
+ # 2.2.12 (June 18, 2025)
11
+
12
+ Fixes
13
+ * Fix construction of final GSSAPI authentication message (#2647)
14
+ * Avoid RuntimeError on mutated `_completed_fetches` deque in consumer fetcher (#2646)
15
+ * Throw exception on invalid bucket type (#2642)
16
+
17
+
1
18
  # 2.2.11 (June 5, 2025)
2
19
 
3
20
  Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kafka-python
3
- Version: 2.2.11
3
+ Version: 2.2.13
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
@@ -45,7 +45,7 @@ Requires-Dist: pyperf; extra == "benchmarks"
45
45
  Kafka Python client
46
46
  ------------------------
47
47
 
48
- .. image:: https://img.shields.io/badge/kafka-3.9--0.8-brightgreen.svg
48
+ .. image:: https://img.shields.io/badge/kafka-4.0--0.8-brightgreen.svg
49
49
  :target: https://kafka-python.readthedocs.io/en/master/compatibility.html
50
50
  .. image:: https://img.shields.io/pypi/pyversions/kafka-python.svg
51
51
  :target: https://pypi.python.org/pypi/kafka-python
@@ -1,7 +1,7 @@
1
1
  Kafka Python client
2
2
  ------------------------
3
3
 
4
- .. image:: https://img.shields.io/badge/kafka-3.9--0.8-brightgreen.svg
4
+ .. image:: https://img.shields.io/badge/kafka-4.0--0.8-brightgreen.svg
5
5
  :target: https://kafka-python.readthedocs.io/en/master/compatibility.html
6
6
  .. image:: https://img.shields.io/pypi/pyversions/kafka-python.svg
7
7
  :target: https://pypi.python.org/pypi/kafka-python
@@ -17,6 +17,7 @@ import kafka.errors as Errors
17
17
  from kafka.errors import (
18
18
  IncompatibleBrokerVersion, KafkaConfigurationError, UnknownTopicOrPartitionError,
19
19
  UnrecognizedBrokerVersion, IllegalArgumentError)
20
+ from kafka.future import Future
20
21
  from kafka.metrics import MetricConfig, Metrics
21
22
  from kafka.protocol.admin import (
22
23
  CreateTopicsRequest, DeleteTopicsRequest, DescribeConfigsRequest, AlterConfigsRequest, CreatePartitionsRequest,
@@ -358,14 +359,11 @@ class KafkaAdminClient(object):
358
359
 
359
360
  Returns:
360
361
  A future object that may be polled for status and results.
361
-
362
- Raises:
363
- The exception if the message could not be sent.
364
362
  """
365
- while not self._client.ready(node_id):
366
- # poll until the connection to broker is ready, otherwise send()
367
- # will fail with NodeNotReadyError
368
- self._client.poll(timeout_ms=200)
363
+ try:
364
+ self._client.await_ready(node_id)
365
+ except Errors.KafkaConnectionError as e:
366
+ return Future().failure(e)
369
367
  return self._client.send(node_id, request, wakeup)
370
368
 
371
369
  def _send_request_to_controller(self, request):
@@ -612,7 +612,8 @@ class Fetcher(six.Iterator):
612
612
  def _fetchable_partitions(self):
613
613
  fetchable = self._subscriptions.fetchable_partitions()
614
614
  # do not fetch a partition if we have a pending fetch response to process
615
- discard = {fetch.topic_partition for fetch in self._completed_fetches}
615
+ # use copy.copy to avoid runtimeerror on mutation from different thread
616
+ discard = {fetch.topic_partition for fetch in self._completed_fetches.copy()}
616
617
  current = self._next_partition_records
617
618
  if current:
618
619
  discard.add(current.topic_partition)
@@ -30,7 +30,7 @@ class Percentiles(AbstractSampledStat, AbstractCompoundStat):
30
30
  ' to be 0.0.')
31
31
  self.bin_scheme = Histogram.LinearBinScheme(self._buckets, max_val)
32
32
  else:
33
- ValueError('Unknown bucket type: %s' % (bucketing,))
33
+ raise ValueError('Unknown bucket type: %s' % (bucketing,))
34
34
 
35
35
  def stats(self):
36
36
  measurables = []
@@ -1,5 +1,7 @@
1
1
  from __future__ import absolute_import
2
2
 
3
+ import struct
4
+
3
5
  # needed for SASL_GSSAPI authentication:
4
6
  try:
5
7
  import gssapi
@@ -68,8 +70,8 @@ class SaslMechanismGSSAPI(SaslMechanism):
68
70
  client_flags = self.SASL_QOP_AUTH
69
71
  server_flags = msg[0]
70
72
  message_parts = [
71
- bytes(client_flags & server_flags),
72
- msg[:1],
73
+ struct.Struct('>b').pack(client_flags & server_flags),
74
+ msg[1:],
73
75
  self.auth_id.encode('utf-8'),
74
76
  ]
75
77
  # add authorization identity to the response, and GSS-wrap
@@ -0,0 +1 @@
1
+ __version__ = '2.2.13'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kafka-python
3
- Version: 2.2.11
3
+ Version: 2.2.13
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
@@ -45,7 +45,7 @@ Requires-Dist: pyperf; extra == "benchmarks"
45
45
  Kafka Python client
46
46
  ------------------------
47
47
 
48
- .. image:: https://img.shields.io/badge/kafka-3.9--0.8-brightgreen.svg
48
+ .. image:: https://img.shields.io/badge/kafka-4.0--0.8-brightgreen.svg
49
49
  :target: https://kafka-python.readthedocs.io/en/master/compatibility.html
50
50
  .. image:: https://img.shields.io/pypi/pyversions/kafka-python.svg
51
51
  :target: https://pypi.python.org/pypi/kafka-python
@@ -1 +0,0 @@
1
- __version__ = '2.2.11'
File without changes
File without changes
File without changes
File without changes
File without changes