kafka-python 2.2.18__tar.gz → 2.3.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.
Files changed (195) hide show
  1. {kafka_python-2.2.18 → kafka_python-2.3.0}/CHANGES.md +32 -0
  2. {kafka_python-2.2.18 → kafka_python-2.3.0}/PKG-INFO +1 -1
  3. kafka_python-2.3.0/kafka/__main__.py +5 -0
  4. kafka_python-2.3.0/kafka/admin/__main__.py +7 -0
  5. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/admin/acl_resource.py +12 -2
  6. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/admin/client.py +230 -361
  7. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/admin/config_resource.py +6 -0
  8. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/admin/new_topic.py +2 -7
  9. kafka_python-2.3.0/kafka/cli/admin/__init__.py +145 -0
  10. kafka_python-2.3.0/kafka/cli/admin/cluster/__init__.py +16 -0
  11. kafka_python-2.3.0/kafka/cli/admin/cluster/describe.py +9 -0
  12. kafka_python-2.3.0/kafka/cli/admin/configs/__init__.py +16 -0
  13. kafka_python-2.3.0/kafka/cli/admin/configs/describe.py +24 -0
  14. kafka_python-2.3.0/kafka/cli/admin/consumer_groups/__init__.py +19 -0
  15. kafka_python-2.3.0/kafka/cli/admin/consumer_groups/delete.py +10 -0
  16. kafka_python-2.3.0/kafka/cli/admin/consumer_groups/describe.py +10 -0
  17. kafka_python-2.3.0/kafka/cli/admin/consumer_groups/list.py +9 -0
  18. kafka_python-2.3.0/kafka/cli/admin/consumer_groups/list_offsets.py +10 -0
  19. kafka_python-2.3.0/kafka/cli/admin/log_dirs/__init__.py +16 -0
  20. kafka_python-2.3.0/kafka/cli/admin/log_dirs/describe.py +9 -0
  21. kafka_python-2.3.0/kafka/cli/admin/topics/__init__.py +19 -0
  22. kafka_python-2.3.0/kafka/cli/admin/topics/create.py +18 -0
  23. kafka_python-2.3.0/kafka/cli/admin/topics/delete.py +10 -0
  24. kafka_python-2.3.0/kafka/cli/admin/topics/describe.py +10 -0
  25. kafka_python-2.3.0/kafka/cli/admin/topics/list.py +9 -0
  26. kafka_python-2.3.0/kafka/cli/consumer/__init__.py +89 -0
  27. kafka_python-2.3.0/kafka/cli/producer/__init__.py +91 -0
  28. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/client_async.py +5 -3
  29. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/cluster.py +3 -1
  30. kafka_python-2.3.0/kafka/consumer/__main__.py +7 -0
  31. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/consumer/fetcher.py +8 -5
  32. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/consumer/group.py +25 -1
  33. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/coordinator/assignors/abstract.py +3 -2
  34. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/coordinator/assignors/range.py +16 -11
  35. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/coordinator/assignors/roundrobin.py +15 -10
  36. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/coordinator/assignors/sticky/sticky_assignor.py +9 -8
  37. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/coordinator/base.py +127 -44
  38. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/coordinator/consumer.py +50 -10
  39. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/coordinator/protocol.py +9 -7
  40. kafka_python-2.3.0/kafka/coordinator/subscription.py +37 -0
  41. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/errors.py +7 -0
  42. kafka_python-2.3.0/kafka/producer/__main__.py +7 -0
  43. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/producer/future.py +19 -16
  44. kafka_python-2.3.0/kafka/producer/producer_batch.py +185 -0
  45. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/producer/record_accumulator.py +1 -151
  46. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/producer/sender.py +79 -35
  47. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/producer/transaction_manager.py +4 -0
  48. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/admin.py +4 -4
  49. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/commit.py +31 -8
  50. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/group.py +130 -8
  51. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/metadata.py +47 -3
  52. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/parser.py +1 -1
  53. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/produce.py +2 -2
  54. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/struct.py +6 -7
  55. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/types.py +31 -0
  56. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/util.py +1 -0
  57. kafka_python-2.3.0/kafka/version.py +1 -0
  58. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka_python.egg-info/PKG-INFO +1 -1
  59. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka_python.egg-info/SOURCES.txt +27 -1
  60. kafka_python-2.3.0/test/integration/__init__.py +0 -0
  61. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/integration/test_admin_integration.py +2 -5
  62. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_admin.py +22 -6
  63. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_assignors.py +47 -46
  64. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_coordinator.py +18 -16
  65. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_object_conversion.py +2 -3
  66. kafka_python-2.3.0/test/test_producer_batch.py +151 -0
  67. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_protocol.py +11 -1
  68. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_record_accumulator.py +1 -117
  69. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_sender.py +43 -26
  70. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_util.py +1 -0
  71. kafka_python-2.2.18/kafka/protocol/pickle.py +0 -35
  72. kafka_python-2.2.18/kafka/version.py +0 -1
  73. {kafka_python-2.2.18 → kafka_python-2.3.0}/AUTHORS.md +0 -0
  74. {kafka_python-2.2.18 → kafka_python-2.3.0}/LICENSE +0 -0
  75. {kafka_python-2.2.18 → kafka_python-2.3.0}/MANIFEST.in +0 -0
  76. {kafka_python-2.2.18 → kafka_python-2.3.0}/README.rst +0 -0
  77. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/__init__.py +0 -0
  78. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/admin/__init__.py +0 -0
  79. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/admin/new_partitions.py +0 -0
  80. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/benchmarks/__init__.py +0 -0
  81. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/benchmarks/consumer_performance.py +0 -0
  82. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/benchmarks/load_example.py +0 -0
  83. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/benchmarks/producer_performance.py +0 -0
  84. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/benchmarks/record_batch_compose.py +0 -0
  85. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/benchmarks/record_batch_read.py +0 -0
  86. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/benchmarks/varint_speed.py +0 -0
  87. {kafka_python-2.2.18/kafka/coordinator → kafka_python-2.3.0/kafka/cli}/__init__.py +0 -0
  88. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/codec.py +0 -0
  89. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/conn.py +0 -0
  90. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/consumer/__init__.py +0 -0
  91. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/consumer/subscription_state.py +0 -0
  92. {kafka_python-2.2.18/kafka/coordinator/assignors → kafka_python-2.3.0/kafka/coordinator}/__init__.py +0 -0
  93. {kafka_python-2.2.18/kafka/coordinator/assignors/sticky → kafka_python-2.3.0/kafka/coordinator/assignors}/__init__.py +0 -0
  94. {kafka_python-2.2.18/kafka/vendor → kafka_python-2.3.0/kafka/coordinator/assignors/sticky}/__init__.py +0 -0
  95. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/coordinator/assignors/sticky/partition_movements.py +0 -0
  96. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/coordinator/assignors/sticky/sorted_set.py +0 -0
  97. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/coordinator/heartbeat.py +0 -0
  98. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/future.py +0 -0
  99. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/__init__.py +0 -0
  100. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/compound_stat.py +0 -0
  101. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/dict_reporter.py +0 -0
  102. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/kafka_metric.py +0 -0
  103. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/measurable.py +0 -0
  104. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/measurable_stat.py +0 -0
  105. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/metric_config.py +0 -0
  106. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/metric_name.py +0 -0
  107. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/metrics.py +0 -0
  108. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/metrics_reporter.py +0 -0
  109. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/quota.py +0 -0
  110. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/stat.py +0 -0
  111. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/stats/__init__.py +0 -0
  112. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/stats/avg.py +0 -0
  113. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/stats/count.py +0 -0
  114. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/stats/histogram.py +0 -0
  115. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/stats/max_stat.py +0 -0
  116. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/stats/min_stat.py +0 -0
  117. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/stats/percentile.py +0 -0
  118. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/stats/percentiles.py +0 -0
  119. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/stats/rate.py +0 -0
  120. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/stats/sampled_stat.py +0 -0
  121. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/stats/sensor.py +0 -0
  122. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/metrics/stats/total.py +0 -0
  123. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/partitioner/__init__.py +0 -0
  124. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/partitioner/default.py +0 -0
  125. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/producer/__init__.py +0 -0
  126. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/producer/kafka.py +0 -0
  127. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/__init__.py +0 -0
  128. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/abstract.py +0 -0
  129. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/add_offsets_to_txn.py +0 -0
  130. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/add_partitions_to_txn.py +0 -0
  131. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/api.py +0 -0
  132. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/api_versions.py +0 -0
  133. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/broker_api_versions.py +0 -0
  134. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/end_txn.py +0 -0
  135. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/fetch.py +0 -0
  136. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/find_coordinator.py +0 -0
  137. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/frame.py +0 -0
  138. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/init_producer_id.py +0 -0
  139. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/list_offsets.py +0 -0
  140. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/message.py +0 -0
  141. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/offset_for_leader_epoch.py +0 -0
  142. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/sasl_authenticate.py +0 -0
  143. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/sasl_handshake.py +0 -0
  144. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/protocol/txn_offset_commit.py +0 -0
  145. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/record/__init__.py +0 -0
  146. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/record/_crc32c.py +0 -0
  147. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/record/abc.py +0 -0
  148. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/record/default_records.py +0 -0
  149. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/record/legacy_records.py +0 -0
  150. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/record/memory_records.py +0 -0
  151. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/record/util.py +0 -0
  152. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/sasl/__init__.py +0 -0
  153. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/sasl/abc.py +0 -0
  154. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/sasl/gssapi.py +0 -0
  155. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/sasl/msk.py +0 -0
  156. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/sasl/oauth.py +0 -0
  157. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/sasl/plain.py +0 -0
  158. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/sasl/scram.py +0 -0
  159. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/sasl/sspi.py +0 -0
  160. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/serializer/__init__.py +0 -0
  161. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/serializer/abstract.py +0 -0
  162. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/socks5_wrapper.py +0 -0
  163. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/structs.py +0 -0
  164. {kafka_python-2.2.18/test/integration → kafka_python-2.3.0/kafka/vendor}/__init__.py +0 -0
  165. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/vendor/enum34.py +0 -0
  166. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/vendor/selectors34.py +0 -0
  167. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/vendor/six.py +0 -0
  168. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka/vendor/socketpair.py +0 -0
  169. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka_python.egg-info/dependency_links.txt +0 -0
  170. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka_python.egg-info/requires.txt +0 -0
  171. {kafka_python-2.2.18 → kafka_python-2.3.0}/kafka_python.egg-info/top_level.txt +0 -0
  172. {kafka_python-2.2.18 → kafka_python-2.3.0}/pyproject.toml +0 -0
  173. {kafka_python-2.2.18 → kafka_python-2.3.0}/setup.cfg +0 -0
  174. {kafka_python-2.2.18 → kafka_python-2.3.0}/setup.py +0 -0
  175. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/integration/conftest.py +0 -0
  176. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/integration/fixtures.py +0 -0
  177. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/integration/test_consumer_group.py +0 -0
  178. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/integration/test_consumer_integration.py +0 -0
  179. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/integration/test_producer_integration.py +0 -0
  180. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/integration/test_sasl_integration.py +0 -0
  181. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_acl_comparisons.py +0 -0
  182. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_api_object_implementation.py +0 -0
  183. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_client_async.py +0 -0
  184. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_cluster.py +0 -0
  185. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_codec.py +0 -0
  186. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_conn.py +0 -0
  187. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_consumer.py +0 -0
  188. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_fetcher.py +0 -0
  189. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_metrics.py +0 -0
  190. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_package.py +0 -0
  191. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_partition_movements.py +0 -0
  192. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_partitioner.py +0 -0
  193. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_producer.py +0 -0
  194. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/test_subscription_state.py +0 -0
  195. {kafka_python-2.2.18 → kafka_python-2.3.0}/test/testutil.py +0 -0
@@ -1,3 +1,35 @@
1
+ # 2.3.0 (Nov 20, 2025)
2
+
3
+ CLI
4
+ * python -m cli interfaces for kafka.admin, kafka.consumer, kafka.producer (#2650)
5
+
6
+ Producer
7
+ * KIP-654: Abort transaction with pending data with TransactionAbortedError (#2662)
8
+ * KafkaProducer: Handle UnknownProducerIdError (#2663)
9
+ * KIP-467: Augment ProduceResponse error messaging for specific culprit records (#2661)
10
+
11
+ Consumer
12
+ * KIP-345: Consumer group static membership (#2625)
13
+ * KIP-207: Add ListOffsetsRequest v5 / handle OffsetNotAvailableError (#2657)
14
+ * Fetcher: Add missing argument in debug log (#2665)
15
+
16
+ AdminClient
17
+ * KIP-430: Return Authorized Operations in Describe Responses (#2656)
18
+ * Add `send_request()` and `send_requests()` to KafkaAdminClient (#2649)
19
+
20
+ Maintenance
21
+ * Remove old/unused kafka.protocol.pickle (#2653)
22
+ * Switch protocol code to getattr/setattr from __dict__ (#2654)
23
+ * Drop unused imports (#2651)
24
+
25
+ Project Infra
26
+ * Bump github/codeql-action from 3 to 4 (#2678)
27
+ * Bump actions/setup-python from 5 to 6 (#2674)
28
+ * Bump actions/setup-java from 4 to 5 (#2673)
29
+ * Bump actions/checkout from 4 to 5 (#2669)
30
+ * Bump actions/checkout from 5 to 6 (#2694)
31
+ * NixOS helpers
32
+
1
33
  # 2.2.18 (Nov 20, 2025)
2
34
 
3
35
  Fixes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kafka-python
3
- Version: 2.2.18
3
+ Version: 2.3.0
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
@@ -0,0 +1,5 @@
1
+ import sys
2
+
3
+ print("Available module interfaces: kafka.consumer, kafka.producer, kafka.admin")
4
+
5
+ sys.exit(1)
@@ -0,0 +1,7 @@
1
+ from __future__ import absolute_import
2
+
3
+ import sys
4
+
5
+ from kafka.cli.admin import run_cli
6
+
7
+ sys.exit(run_cli())
@@ -1,5 +1,4 @@
1
1
  from __future__ import absolute_import
2
- from kafka.errors import IllegalArgumentError
3
2
 
4
3
  # enum in stdlib as of py3.4
5
4
  try:
@@ -8,6 +7,8 @@ except ImportError:
8
7
  # vendored backport module
9
8
  from kafka.vendor.enum34 import IntEnum
10
9
 
10
+ from kafka.errors import IllegalArgumentError
11
+
11
12
 
12
13
  class ResourceType(IntEnum):
13
14
  """Type of kafka resource to set ACL for
@@ -30,6 +31,7 @@ class ACLOperation(IntEnum):
30
31
  The ANY value is only valid in a filter context
31
32
  """
32
33
 
34
+ UNKNOWN = 0,
33
35
  ANY = 1,
34
36
  ALL = 2,
35
37
  READ = 3,
@@ -41,7 +43,9 @@ class ACLOperation(IntEnum):
41
43
  CLUSTER_ACTION = 9,
42
44
  DESCRIBE_CONFIGS = 10,
43
45
  ALTER_CONFIGS = 11,
44
- IDEMPOTENT_WRITE = 12
46
+ IDEMPOTENT_WRITE = 12,
47
+ CREATE_TOKENS = 13,
48
+ DESCRIBE_TOKENS = 13
45
49
 
46
50
 
47
51
  class ACLPermissionType(IntEnum):
@@ -50,6 +54,7 @@ class ACLPermissionType(IntEnum):
50
54
  The ANY value is only valid in a filter context
51
55
  """
52
56
 
57
+ UNKNOWN = 0,
53
58
  ANY = 1,
54
59
  DENY = 2,
55
60
  ALLOW = 3
@@ -63,6 +68,7 @@ class ACLResourcePatternType(IntEnum):
63
68
  https://cwiki.apache.org/confluence/display/KAFKA/KIP-290%3A+Support+for+Prefixed+ACLs
64
69
  """
65
70
 
71
+ UNKNOWN = 0,
66
72
  ANY = 1,
67
73
  MATCH = 2,
68
74
  LITERAL = 3,
@@ -242,3 +248,7 @@ class ResourcePattern(ResourcePatternFilter):
242
248
  raise IllegalArgumentError(
243
249
  "pattern_type cannot be {} on a concrete ResourcePattern".format(self.pattern_type.name)
244
250
  )
251
+
252
+
253
+ def valid_acl_operations(int_vals):
254
+ return set([ACLOperation(v) for v in int_vals if v not in (0, 1, 2)])