kafka-python 2.2.19__tar.gz → 2.3.1__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.
- {kafka_python-2.2.19 → kafka_python-2.3.1}/CHANGES.md +35 -3
- {kafka_python-2.2.19 → kafka_python-2.3.1}/PKG-INFO +11 -14
- {kafka_python-2.2.19 → kafka_python-2.3.1}/README.rst +10 -13
- kafka_python-2.3.1/kafka/__main__.py +5 -0
- kafka_python-2.3.1/kafka/admin/__main__.py +7 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/admin/acl_resource.py +12 -2
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/admin/client.py +230 -361
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/admin/config_resource.py +6 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/admin/new_topic.py +2 -7
- kafka_python-2.3.1/kafka/cli/admin/__init__.py +145 -0
- kafka_python-2.3.1/kafka/cli/admin/cluster/__init__.py +16 -0
- kafka_python-2.3.1/kafka/cli/admin/cluster/describe.py +9 -0
- kafka_python-2.3.1/kafka/cli/admin/configs/__init__.py +16 -0
- kafka_python-2.3.1/kafka/cli/admin/configs/describe.py +24 -0
- kafka_python-2.3.1/kafka/cli/admin/consumer_groups/__init__.py +19 -0
- kafka_python-2.3.1/kafka/cli/admin/consumer_groups/delete.py +10 -0
- kafka_python-2.3.1/kafka/cli/admin/consumer_groups/describe.py +10 -0
- kafka_python-2.3.1/kafka/cli/admin/consumer_groups/list.py +9 -0
- kafka_python-2.3.1/kafka/cli/admin/consumer_groups/list_offsets.py +10 -0
- kafka_python-2.3.1/kafka/cli/admin/log_dirs/__init__.py +16 -0
- kafka_python-2.3.1/kafka/cli/admin/log_dirs/describe.py +9 -0
- kafka_python-2.3.1/kafka/cli/admin/topics/__init__.py +19 -0
- kafka_python-2.3.1/kafka/cli/admin/topics/create.py +18 -0
- kafka_python-2.3.1/kafka/cli/admin/topics/delete.py +10 -0
- kafka_python-2.3.1/kafka/cli/admin/topics/describe.py +10 -0
- kafka_python-2.3.1/kafka/cli/admin/topics/list.py +9 -0
- kafka_python-2.3.1/kafka/cli/consumer/__init__.py +89 -0
- kafka_python-2.3.1/kafka/cli/producer/__init__.py +91 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/client_async.py +5 -3
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/cluster.py +3 -1
- kafka_python-2.3.1/kafka/consumer/__main__.py +7 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/consumer/fetcher.py +8 -5
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/consumer/group.py +25 -1
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/coordinator/assignors/abstract.py +3 -2
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/coordinator/assignors/range.py +16 -11
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/coordinator/assignors/roundrobin.py +15 -10
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/coordinator/assignors/sticky/sticky_assignor.py +9 -8
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/coordinator/base.py +127 -44
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/coordinator/consumer.py +50 -10
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/coordinator/protocol.py +9 -7
- kafka_python-2.3.1/kafka/coordinator/subscription.py +37 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/errors.py +7 -0
- kafka_python-2.3.1/kafka/producer/__main__.py +7 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/producer/future.py +19 -16
- kafka_python-2.3.1/kafka/producer/producer_batch.py +185 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/producer/record_accumulator.py +1 -151
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/producer/sender.py +79 -35
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/producer/transaction_manager.py +4 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/admin.py +4 -4
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/commit.py +31 -8
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/group.py +130 -8
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/metadata.py +47 -3
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/parser.py +1 -1
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/produce.py +2 -2
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/struct.py +6 -7
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/types.py +31 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/util.py +1 -0
- kafka_python-2.3.1/kafka/version.py +1 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka_python.egg-info/PKG-INFO +11 -14
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka_python.egg-info/SOURCES.txt +27 -1
- kafka_python-2.3.1/test/integration/__init__.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/integration/test_admin_integration.py +2 -5
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_admin.py +22 -6
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_assignors.py +47 -46
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_coordinator.py +18 -16
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_object_conversion.py +2 -3
- kafka_python-2.3.1/test/test_producer_batch.py +151 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_record_accumulator.py +1 -117
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_sender.py +43 -26
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_util.py +1 -0
- kafka_python-2.2.19/kafka/protocol/pickle.py +0 -35
- kafka_python-2.2.19/kafka/version.py +0 -1
- {kafka_python-2.2.19 → kafka_python-2.3.1}/AUTHORS.md +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/LICENSE +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/MANIFEST.in +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/__init__.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/admin/__init__.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/admin/new_partitions.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/benchmarks/__init__.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/benchmarks/consumer_performance.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/benchmarks/load_example.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/benchmarks/producer_performance.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/benchmarks/record_batch_compose.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/benchmarks/record_batch_read.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/benchmarks/varint_speed.py +0 -0
- {kafka_python-2.2.19/kafka/coordinator → kafka_python-2.3.1/kafka/cli}/__init__.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/codec.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/conn.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/consumer/__init__.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/consumer/subscription_state.py +0 -0
- {kafka_python-2.2.19/kafka/coordinator/assignors → kafka_python-2.3.1/kafka/coordinator}/__init__.py +0 -0
- {kafka_python-2.2.19/kafka/coordinator/assignors/sticky → kafka_python-2.3.1/kafka/coordinator/assignors}/__init__.py +0 -0
- {kafka_python-2.2.19/kafka/vendor → kafka_python-2.3.1/kafka/coordinator/assignors/sticky}/__init__.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/coordinator/assignors/sticky/partition_movements.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/coordinator/assignors/sticky/sorted_set.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/coordinator/heartbeat.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/future.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/__init__.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/compound_stat.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/dict_reporter.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/kafka_metric.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/measurable.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/measurable_stat.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/metric_config.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/metric_name.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/metrics.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/metrics_reporter.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/quota.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/stat.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/stats/__init__.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/stats/avg.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/stats/count.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/stats/histogram.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/stats/max_stat.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/stats/min_stat.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/stats/percentile.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/stats/percentiles.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/stats/rate.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/stats/sampled_stat.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/stats/sensor.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/metrics/stats/total.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/partitioner/__init__.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/partitioner/default.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/producer/__init__.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/producer/kafka.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/__init__.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/abstract.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/add_offsets_to_txn.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/add_partitions_to_txn.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/api.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/api_versions.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/broker_api_versions.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/end_txn.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/fetch.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/find_coordinator.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/frame.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/init_producer_id.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/list_offsets.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/message.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/offset_for_leader_epoch.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/sasl_authenticate.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/sasl_handshake.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/protocol/txn_offset_commit.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/record/__init__.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/record/_crc32c.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/record/abc.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/record/default_records.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/record/legacy_records.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/record/memory_records.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/record/util.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/sasl/__init__.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/sasl/abc.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/sasl/gssapi.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/sasl/msk.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/sasl/oauth.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/sasl/plain.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/sasl/scram.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/sasl/sspi.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/serializer/__init__.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/serializer/abstract.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/socks5_wrapper.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/structs.py +0 -0
- {kafka_python-2.2.19/test/integration → kafka_python-2.3.1/kafka/vendor}/__init__.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/vendor/enum34.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/vendor/selectors34.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/vendor/six.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka/vendor/socketpair.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka_python.egg-info/dependency_links.txt +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka_python.egg-info/requires.txt +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/kafka_python.egg-info/top_level.txt +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/pyproject.toml +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/setup.cfg +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/setup.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/integration/conftest.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/integration/fixtures.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/integration/test_consumer_group.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/integration/test_consumer_integration.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/integration/test_producer_integration.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/integration/test_sasl_integration.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_acl_comparisons.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_api_object_implementation.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_client_async.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_cluster.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_codec.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_conn.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_consumer.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_fetcher.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_metrics.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_package.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_partition_movements.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_partitioner.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_producer.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/test_subscription_state.py +0 -0
- {kafka_python-2.2.19 → kafka_python-2.3.1}/test/testutil.py +0 -0
|
@@ -1,13 +1,45 @@
|
|
|
1
|
-
# 2.
|
|
1
|
+
# 2.3.1 (Apr 9, 2026)
|
|
2
2
|
|
|
3
3
|
Fixes
|
|
4
4
|
* Fix TaggedFields value encoding; add test coverage (#2725)
|
|
5
5
|
* Fix zstd multi-frame decompression failure (#2717)
|
|
6
6
|
* Fix KeyError in KafkaConsumer.committed() (#2710)
|
|
7
7
|
* Fix VarInt/VarLong encoding; move tests to test/protocol/ (#2706)
|
|
8
|
-
* Fix `Fetcher._fetch_offsets_by_times retry handling
|
|
8
|
+
* Fix `Fetcher._fetch_offsets_by_times` retry handling (#2833)
|
|
9
9
|
* Fixes to support integration testing with external KAFKA_URI (#2838)
|
|
10
|
-
* Minor py2 fixes: consumer integration test;
|
|
10
|
+
* Minor py2 fixes: consumer integration test; dont pip install python-snappy
|
|
11
|
+
|
|
12
|
+
# 2.3.0 (Nov 20, 2025)
|
|
13
|
+
|
|
14
|
+
CLI
|
|
15
|
+
* python -m cli interfaces for kafka.admin, kafka.consumer, kafka.producer (#2650)
|
|
16
|
+
|
|
17
|
+
Producer
|
|
18
|
+
* KIP-654: Abort transaction with pending data with TransactionAbortedError (#2662)
|
|
19
|
+
* KafkaProducer: Handle UnknownProducerIdError (#2663)
|
|
20
|
+
* KIP-467: Augment ProduceResponse error messaging for specific culprit records (#2661)
|
|
21
|
+
|
|
22
|
+
Consumer
|
|
23
|
+
* KIP-345: Consumer group static membership (#2625)
|
|
24
|
+
* KIP-207: Add ListOffsetsRequest v5 / handle OffsetNotAvailableError (#2657)
|
|
25
|
+
* Fetcher: Add missing argument in debug log (#2665)
|
|
26
|
+
|
|
27
|
+
AdminClient
|
|
28
|
+
* KIP-430: Return Authorized Operations in Describe Responses (#2656)
|
|
29
|
+
* Add `send_request()` and `send_requests()` to KafkaAdminClient (#2649)
|
|
30
|
+
|
|
31
|
+
Maintenance
|
|
32
|
+
* Remove old/unused kafka.protocol.pickle (#2653)
|
|
33
|
+
* Switch protocol code to getattr/setattr from __dict__ (#2654)
|
|
34
|
+
* Drop unused imports (#2651)
|
|
35
|
+
|
|
36
|
+
Project Infra
|
|
37
|
+
* Bump github/codeql-action from 3 to 4 (#2678)
|
|
38
|
+
* Bump actions/setup-python from 5 to 6 (#2674)
|
|
39
|
+
* Bump actions/setup-java from 4 to 5 (#2673)
|
|
40
|
+
* Bump actions/checkout from 4 to 5 (#2669)
|
|
41
|
+
* Bump actions/checkout from 5 to 6 (#2694)
|
|
42
|
+
* NixOS helpers
|
|
11
43
|
|
|
12
44
|
# 2.2.18 (Nov 20, 2025)
|
|
13
45
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kafka-python
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.1
|
|
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
|
|
@@ -66,22 +66,11 @@ Python client for the Apache Kafka distributed stream processing system.
|
|
|
66
66
|
kafka-python is designed to function much like the official java client, with a
|
|
67
67
|
sprinkling of pythonic interfaces (e.g., consumer iterators).
|
|
68
68
|
|
|
69
|
-
kafka-python is best used with newer brokers (0.9+), but is backwards-compatible with
|
|
70
|
-
older versions (to 0.8.0). Some features will only be enabled on newer brokers.
|
|
71
|
-
For example, fully coordinated consumer groups -- i.e., dynamic partition
|
|
72
|
-
assignment to multiple consumers in the same group -- requires use of 0.9+ kafka
|
|
73
|
-
brokers. Supporting this feature for earlier broker releases would require
|
|
74
|
-
writing and maintaining custom leadership election and membership / health
|
|
75
|
-
check code (perhaps using zookeeper or consul). For older brokers, you can
|
|
76
|
-
achieve something similar by manually assigning different partitions to each
|
|
77
|
-
consumer instance with config management tools like chef, ansible, etc. This
|
|
78
|
-
approach will work fine, though it does not support rebalancing on failures.
|
|
79
|
-
See https://kafka-python.readthedocs.io/en/master/compatibility.html
|
|
80
|
-
for more details.
|
|
81
|
-
|
|
82
69
|
Please note that the master branch may contain unreleased features. For release
|
|
83
70
|
documentation, please see readthedocs and/or python's inline help.
|
|
84
71
|
|
|
72
|
+
New in 2.3 release: python -m kafka.* interfaces for quick scripts and testing.
|
|
73
|
+
|
|
85
74
|
.. code-block:: bash
|
|
86
75
|
|
|
87
76
|
$ pip install kafka-python
|
|
@@ -232,6 +221,14 @@ for more details.
|
|
|
232
221
|
metrics = producer.metrics()
|
|
233
222
|
|
|
234
223
|
|
|
224
|
+
Module CLI Interface
|
|
225
|
+
********************
|
|
226
|
+
|
|
227
|
+
kafka-python also provides simple command-line interfaces for consumer, producer, and admin clients.
|
|
228
|
+
Access via ``python -m kafka.consumer``, ``python -m kafka.producer``, and ``python -m kafka.admin``.
|
|
229
|
+
See https://kafka-python.readthedocs.io/en/master/usage.html for more details.
|
|
230
|
+
|
|
231
|
+
|
|
235
232
|
Thread safety
|
|
236
233
|
*************
|
|
237
234
|
|
|
@@ -22,22 +22,11 @@ Python client for the Apache Kafka distributed stream processing system.
|
|
|
22
22
|
kafka-python is designed to function much like the official java client, with a
|
|
23
23
|
sprinkling of pythonic interfaces (e.g., consumer iterators).
|
|
24
24
|
|
|
25
|
-
kafka-python is best used with newer brokers (0.9+), but is backwards-compatible with
|
|
26
|
-
older versions (to 0.8.0). Some features will only be enabled on newer brokers.
|
|
27
|
-
For example, fully coordinated consumer groups -- i.e., dynamic partition
|
|
28
|
-
assignment to multiple consumers in the same group -- requires use of 0.9+ kafka
|
|
29
|
-
brokers. Supporting this feature for earlier broker releases would require
|
|
30
|
-
writing and maintaining custom leadership election and membership / health
|
|
31
|
-
check code (perhaps using zookeeper or consul). For older brokers, you can
|
|
32
|
-
achieve something similar by manually assigning different partitions to each
|
|
33
|
-
consumer instance with config management tools like chef, ansible, etc. This
|
|
34
|
-
approach will work fine, though it does not support rebalancing on failures.
|
|
35
|
-
See https://kafka-python.readthedocs.io/en/master/compatibility.html
|
|
36
|
-
for more details.
|
|
37
|
-
|
|
38
25
|
Please note that the master branch may contain unreleased features. For release
|
|
39
26
|
documentation, please see readthedocs and/or python's inline help.
|
|
40
27
|
|
|
28
|
+
New in 2.3 release: python -m kafka.* interfaces for quick scripts and testing.
|
|
29
|
+
|
|
41
30
|
.. code-block:: bash
|
|
42
31
|
|
|
43
32
|
$ pip install kafka-python
|
|
@@ -188,6 +177,14 @@ for more details.
|
|
|
188
177
|
metrics = producer.metrics()
|
|
189
178
|
|
|
190
179
|
|
|
180
|
+
Module CLI Interface
|
|
181
|
+
********************
|
|
182
|
+
|
|
183
|
+
kafka-python also provides simple command-line interfaces for consumer, producer, and admin clients.
|
|
184
|
+
Access via ``python -m kafka.consumer``, ``python -m kafka.producer``, and ``python -m kafka.admin``.
|
|
185
|
+
See https://kafka-python.readthedocs.io/en/master/usage.html for more details.
|
|
186
|
+
|
|
187
|
+
|
|
191
188
|
Thread safety
|
|
192
189
|
*************
|
|
193
190
|
|
|
@@ -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)])
|