kafka-python 2.3.2__tar.gz → 3.0.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.
- {kafka_python-2.3.2 → kafka_python-3.0.0}/AUTHORS.md +1 -1
- {kafka_python-2.3.2 → kafka_python-3.0.0}/CHANGES.md +364 -5
- {kafka_python-2.3.2 → kafka_python-3.0.0}/LICENSE +1 -1
- {kafka_python-2.3.2 → kafka_python-3.0.0}/PKG-INFO +107 -62
- {kafka_python-2.3.2 → kafka_python-3.0.0}/README.rst +96 -52
- kafka_python-3.0.0/kafka/__init__.py +34 -0
- kafka_python-3.0.0/kafka/admin/__init__.py +29 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/admin/__main__.py +0 -2
- kafka_python-3.0.0/kafka/admin/_acls.py +355 -0
- kafka_python-3.0.0/kafka/admin/_cluster.py +359 -0
- kafka_python-3.0.0/kafka/admin/_configs.py +479 -0
- kafka_python-3.0.0/kafka/admin/_groups.py +754 -0
- kafka_python-3.0.0/kafka/admin/_partitions.py +595 -0
- kafka_python-3.0.0/kafka/admin/_topics.py +281 -0
- kafka_python-3.0.0/kafka/admin/_transactions.py +450 -0
- kafka_python-3.0.0/kafka/admin/_users.py +194 -0
- kafka_python-3.0.0/kafka/admin/client.py +373 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/benchmarks/consumer_performance.py +14 -18
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/benchmarks/load_example.py +2 -3
- kafka_python-3.0.0/kafka/benchmarks/producer_encode_path.py +201 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/benchmarks/producer_performance.py +26 -18
- kafka_python-3.0.0/kafka/benchmarks/profile_protocol.py +138 -0
- kafka_python-3.0.0/kafka/benchmarks/protocol_old_vs_new.py +447 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/benchmarks/record_batch_compose.py +0 -1
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/benchmarks/record_batch_read.py +0 -1
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/benchmarks/varint_speed.py +11 -19
- kafka_python-3.0.0/kafka/cli/__init__.py +36 -0
- kafka_python-3.0.0/kafka/cli/admin/__init__.py +117 -0
- kafka_python-3.0.0/kafka/cli/admin/acls/__init__.py +9 -0
- kafka_python-3.0.0/kafka/cli/admin/acls/common.py +76 -0
- kafka_python-3.0.0/kafka/cli/admin/acls/create.py +19 -0
- kafka_python-3.0.0/kafka/cli/admin/acls/delete.py +23 -0
- kafka_python-3.0.0/kafka/cli/admin/acls/describe.py +16 -0
- kafka_python-3.0.0/kafka/cli/admin/cluster/__init__.py +14 -0
- kafka_python-3.0.0/kafka/cli/admin/cluster/describe.py +11 -0
- kafka_python-3.0.0/kafka/cli/admin/cluster/describe_quorum.py +11 -0
- kafka_python-3.0.0/kafka/cli/admin/cluster/features.py +52 -0
- kafka_python-3.0.0/kafka/cli/admin/cluster/log_dirs.py +43 -0
- kafka_python-3.0.0/kafka/cli/admin/cluster/versions.py +33 -0
- kafka_python-3.0.0/kafka/cli/admin/configs/__init__.py +10 -0
- kafka_python-3.0.0/kafka/cli/admin/configs/alter.py +43 -0
- kafka_python-3.0.0/kafka/cli/admin/configs/common.py +17 -0
- kafka_python-3.0.0/kafka/cli/admin/configs/describe.py +30 -0
- kafka_python-3.0.0/kafka/cli/admin/configs/list.py +16 -0
- kafka_python-3.0.0/kafka/cli/admin/configs/reset.py +20 -0
- kafka_python-3.0.0/kafka/cli/admin/groups/__init__.py +16 -0
- kafka_python-3.0.0/kafka/cli/admin/groups/alter_offsets.py +30 -0
- kafka_python-3.0.0/kafka/cli/admin/groups/delete.py +11 -0
- kafka_python-3.0.0/kafka/cli/admin/groups/delete_offsets.py +29 -0
- kafka_python-3.0.0/kafka/cli/admin/groups/describe.py +11 -0
- kafka_python-3.0.0/kafka/cli/admin/groups/list.py +28 -0
- kafka_python-3.0.0/kafka/cli/admin/groups/list_offsets.py +29 -0
- kafka_python-3.0.0/kafka/cli/admin/groups/remove_members.py +40 -0
- kafka_python-3.0.0/kafka/cli/admin/groups/reset_offsets.py +139 -0
- kafka_python-3.0.0/kafka/cli/admin/partitions/__init__.py +21 -0
- kafka_python-3.0.0/kafka/cli/admin/partitions/alter_reassignments.py +37 -0
- kafka_python-3.0.0/kafka/cli/admin/partitions/create.py +27 -0
- kafka_python-3.0.0/kafka/cli/admin/partitions/delete_records.py +31 -0
- kafka_python-3.0.0/kafka/cli/admin/partitions/describe.py +36 -0
- kafka_python-3.0.0/kafka/cli/admin/partitions/elect_leaders.py +53 -0
- kafka_python-3.0.0/kafka/cli/admin/partitions/list_offsets.py +88 -0
- kafka_python-3.0.0/kafka/cli/admin/partitions/list_reassignments.py +35 -0
- kafka_python-3.0.0/kafka/cli/admin/topics/__init__.py +10 -0
- kafka_python-3.0.0/kafka/cli/admin/topics/create.py +13 -0
- kafka_python-3.0.0/kafka/cli/admin/topics/delete.py +19 -0
- kafka_python-3.0.0/kafka/cli/admin/topics/describe.py +18 -0
- kafka_python-3.0.0/kafka/cli/admin/topics/list.py +11 -0
- kafka_python-3.0.0/kafka/cli/admin/transactions/__init__.py +17 -0
- kafka_python-3.0.0/kafka/cli/admin/transactions/abort.py +38 -0
- kafka_python-3.0.0/kafka/cli/admin/transactions/describe.py +24 -0
- kafka_python-3.0.0/kafka/cli/admin/transactions/describe_producers.py +29 -0
- kafka_python-3.0.0/kafka/cli/admin/transactions/find_hanging.py +26 -0
- kafka_python-3.0.0/kafka/cli/admin/transactions/list.py +37 -0
- kafka_python-3.0.0/kafka/cli/admin/users/__init__.py +8 -0
- kafka_python-3.0.0/kafka/cli/admin/users/alter_user_scram_credentials.py +34 -0
- kafka_python-3.0.0/kafka/cli/admin/users/describe_user_scram_credentials.py +15 -0
- kafka_python-3.0.0/kafka/cli/common.py +95 -0
- kafka_python-3.0.0/kafka/cli/consumer/__init__.py +63 -0
- kafka_python-3.0.0/kafka/cli/producer/__init__.py +57 -0
- kafka_python-3.0.0/kafka/cluster.py +824 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/codec.py +4 -10
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/consumer/__init__.py +0 -2
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/consumer/__main__.py +0 -2
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/consumer/fetcher.py +965 -363
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/consumer/group.py +321 -198
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/consumer/subscription_state.py +380 -72
- kafka_python-3.0.0/kafka/coordinator/assignors/abstract.py +90 -0
- kafka_python-3.0.0/kafka/coordinator/assignors/cooperative_sticky.py +167 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/coordinator/assignors/range.py +15 -16
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/coordinator/assignors/roundrobin.py +16 -16
- kafka_python-3.0.0/kafka/coordinator/assignors/sticky/StickyAssignorUserData.json +37 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/coordinator/assignors/sticky/partition_movements.py +5 -5
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/coordinator/assignors/sticky/sticky_assignor.py +70 -90
- kafka_python-3.0.0/kafka/coordinator/assignors/sticky/user_data.py +8 -0
- kafka_python-3.0.0/kafka/coordinator/base.py +1215 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/coordinator/consumer.py +567 -352
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/coordinator/heartbeat.py +10 -12
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/coordinator/subscription.py +1 -4
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/errors.py +100 -173
- kafka_python-3.0.0/kafka/future.py +166 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/__init__.py +0 -2
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/compound_stat.py +5 -8
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/dict_reporter.py +0 -2
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/kafka_metric.py +2 -4
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/measurable.py +4 -6
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/measurable_stat.py +2 -6
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/metric_config.py +1 -3
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/metric_name.py +1 -3
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/metrics.py +10 -12
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/metrics_reporter.py +12 -17
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/quota.py +1 -4
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stat.py +4 -9
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/__init__.py +0 -2
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/avg.py +1 -3
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/count.py +1 -3
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/histogram.py +4 -6
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/max_stat.py +1 -3
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/min_stat.py +1 -3
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/percentile.py +1 -4
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/percentiles.py +4 -6
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/rate.py +2 -4
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/sampled_stat.py +7 -11
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/sensor.py +4 -6
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/metrics/stats/total.py +1 -3
- kafka_python-3.0.0/kafka/net/__init__.py +19 -0
- kafka_python-3.0.0/kafka/net/compat.py +165 -0
- kafka_python-3.0.0/kafka/net/connection.py +593 -0
- kafka_python-3.0.0/kafka/net/http_connect.py +144 -0
- kafka_python-3.0.0/kafka/net/inet.py +122 -0
- kafka_python-3.0.0/kafka/net/manager.py +451 -0
- kafka_python-3.0.0/kafka/net/metrics.py +149 -0
- {kafka_python-2.3.2/kafka → kafka_python-3.0.0/kafka/net}/sasl/__init__.py +6 -8
- {kafka_python-2.3.2/kafka → kafka_python-3.0.0/kafka/net}/sasl/abc.py +7 -12
- {kafka_python-2.3.2/kafka → kafka_python-3.0.0/kafka/net}/sasl/gssapi.py +3 -4
- {kafka_python-2.3.2/kafka → kafka_python-3.0.0/kafka/net}/sasl/msk.py +8 -7
- {kafka_python-2.3.2/kafka → kafka_python-3.0.0/kafka/net}/sasl/oauth.py +8 -10
- {kafka_python-2.3.2/kafka → kafka_python-3.0.0/kafka/net}/sasl/plain.py +6 -5
- {kafka_python-2.3.2/kafka → kafka_python-3.0.0/kafka/net}/sasl/scram.py +10 -13
- {kafka_python-2.3.2/kafka → kafka_python-3.0.0/kafka/net}/sasl/sspi.py +5 -5
- kafka_python-3.0.0/kafka/net/selector.py +644 -0
- kafka_python-2.3.2/kafka/socks5_wrapper.py → kafka_python-3.0.0/kafka/net/socks5.py +31 -43
- kafka_python-3.0.0/kafka/net/transport.py +415 -0
- kafka_python-3.0.0/kafka/net/wakeup_notifier.py +72 -0
- kafka_python-3.0.0/kafka/partitioner/__init__.py +8 -0
- kafka_python-3.0.0/kafka/partitioner/abc.py +8 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/partitioner/default.py +14 -27
- kafka_python-3.0.0/kafka/partitioner/sticky.py +109 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/producer/__init__.py +0 -2
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/producer/__main__.py +0 -2
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/producer/future.py +39 -12
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/producer/kafka.py +297 -200
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/producer/producer_batch.py +26 -19
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/producer/record_accumulator.py +144 -25
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/producer/sender.py +297 -220
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/producer/transaction_manager.py +537 -196
- kafka_python-3.0.0/kafka/protocol/admin/__init__.py +29 -0
- kafka_python-3.0.0/kafka/protocol/admin/acl.py +83 -0
- kafka_python-3.0.0/kafka/protocol/admin/acl.pyi +375 -0
- kafka_python-3.0.0/kafka/protocol/admin/client_quotas.py +14 -0
- kafka_python-3.0.0/kafka/protocol/admin/client_quotas.pyi +265 -0
- kafka_python-3.0.0/kafka/protocol/admin/cluster.py +31 -0
- kafka_python-3.0.0/kafka/protocol/admin/cluster.pyi +620 -0
- kafka_python-3.0.0/kafka/protocol/admin/configs.py +22 -0
- kafka_python-3.0.0/kafka/protocol/admin/configs.pyi +437 -0
- kafka_python-3.0.0/kafka/protocol/admin/groups.py +24 -0
- kafka_python-3.0.0/kafka/protocol/admin/groups.pyi +261 -0
- kafka_python-3.0.0/kafka/protocol/admin/topics.py +53 -0
- kafka_python-3.0.0/kafka/protocol/admin/topics.pyi +982 -0
- kafka_python-3.0.0/kafka/protocol/admin/transactions.py +18 -0
- kafka_python-3.0.0/kafka/protocol/admin/transactions.pyi +311 -0
- kafka_python-3.0.0/kafka/protocol/admin/users.py +14 -0
- kafka_python-3.0.0/kafka/protocol/admin/users.pyi +223 -0
- kafka_python-3.0.0/kafka/protocol/api_data.py +125 -0
- kafka_python-3.0.0/kafka/protocol/api_header.py +55 -0
- kafka_python-3.0.0/kafka/protocol/api_key.py +97 -0
- kafka_python-3.0.0/kafka/protocol/api_message.py +277 -0
- kafka_python-2.3.2/kafka/protocol/broker_api_versions.py → kafka_python-3.0.0/kafka/protocol/broker_version_data.py +178 -0
- kafka_python-3.0.0/kafka/protocol/consumer/__init__.py +13 -0
- kafka_python-3.0.0/kafka/protocol/consumer/fetch.py +16 -0
- kafka_python-3.0.0/kafka/protocol/consumer/fetch.pyi +298 -0
- kafka_python-3.0.0/kafka/protocol/consumer/group.py +38 -0
- kafka_python-3.0.0/kafka/protocol/consumer/group.pyi +824 -0
- kafka_python-3.0.0/kafka/protocol/consumer/metadata.py +30 -0
- kafka_python-3.0.0/kafka/protocol/consumer/metadata.pyi +89 -0
- kafka_python-3.0.0/kafka/protocol/consumer/offsets.py +75 -0
- kafka_python-3.0.0/kafka/protocol/consumer/offsets.pyi +288 -0
- kafka_python-3.0.0/kafka/protocol/data_container.py +166 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/protocol/frame.py +1 -1
- kafka_python-3.0.0/kafka/protocol/generate_stubs.py +468 -0
- kafka_python-3.0.0/kafka/protocol/metadata/__init__.py +10 -0
- kafka_python-3.0.0/kafka/protocol/metadata/api_versions.py +41 -0
- kafka_python-3.0.0/kafka/protocol/metadata/api_versions.pyi +128 -0
- kafka_python-3.0.0/kafka/protocol/metadata/find_coordinator.py +19 -0
- kafka_python-3.0.0/kafka/protocol/metadata/find_coordinator.pyi +105 -0
- kafka_python-3.0.0/kafka/protocol/metadata/metadata.py +34 -0
- kafka_python-3.0.0/kafka/protocol/metadata/metadata.pyi +160 -0
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/abstract.py +6 -9
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/add_offsets_to_txn.py +2 -7
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/add_partitions_to_txn.py +25 -17
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/admin.py +214 -243
- kafka_python-3.0.0/kafka/protocol/old/api.py +205 -0
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/api_versions.py +18 -19
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/commit.py +99 -80
- kafka_python-2.3.2/kafka/coordinator/protocol.py → kafka_python-3.0.0/kafka/protocol/old/consumer_protocol.py +8 -7
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/end_txn.py +2 -7
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/fetch.py +73 -59
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/find_coordinator.py +20 -12
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/group.py +93 -62
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/init_producer_id.py +2 -6
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/list_offsets.py +23 -31
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/metadata.py +37 -48
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/offset_for_leader_epoch.py +2 -9
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/produce.py +67 -54
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/sasl_authenticate.py +2 -6
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/sasl_handshake.py +7 -7
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/struct.py +37 -21
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/txn_offset_commit.py +13 -18
- {kafka_python-2.3.2/kafka/protocol → kafka_python-3.0.0/kafka/protocol/old}/types.py +53 -10
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/protocol/parser.py +44 -38
- kafka_python-3.0.0/kafka/protocol/producer/__init__.py +7 -0
- kafka_python-3.0.0/kafka/protocol/producer/produce.py +17 -0
- kafka_python-3.0.0/kafka/protocol/producer/produce.pyi +197 -0
- kafka_python-3.0.0/kafka/protocol/producer/transaction.py +30 -0
- kafka_python-3.0.0/kafka/protocol/producer/transaction.pyi +663 -0
- kafka_python-3.0.0/kafka/protocol/sasl.py +52 -0
- kafka_python-3.0.0/kafka/protocol/sasl.pyi +126 -0
- kafka_python-3.0.0/kafka/protocol/schemas/__init__.py +7 -0
- kafka_python-3.0.0/kafka/protocol/schemas/fields/__init__.py +7 -0
- kafka_python-3.0.0/kafka/protocol/schemas/fields/array.py +127 -0
- kafka_python-3.0.0/kafka/protocol/schemas/fields/base.py +156 -0
- kafka_python-3.0.0/kafka/protocol/schemas/fields/codecs/__init__.py +12 -0
- kafka_python-3.0.0/kafka/protocol/schemas/fields/codecs/encode_buffer.py +82 -0
- kafka_python-3.0.0/kafka/protocol/schemas/fields/codecs/tagged_fields.py +109 -0
- kafka_python-3.0.0/kafka/protocol/schemas/fields/codecs/types.py +505 -0
- kafka_python-3.0.0/kafka/protocol/schemas/fields/codegen.py +40 -0
- kafka_python-3.0.0/kafka/protocol/schemas/fields/simple.py +127 -0
- kafka_python-3.0.0/kafka/protocol/schemas/fields/struct.py +357 -0
- kafka_python-3.0.0/kafka/protocol/schemas/fields/struct_array.py +142 -0
- kafka_python-3.0.0/kafka/protocol/schemas/load_json.py +42 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/AddOffsetsToTxnRequest.json +40 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/AddOffsetsToTxnResponse.json +35 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/AddPartitionsToTxnRequest.json +65 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/AddPartitionsToTxnResponse.json +60 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterClientQuotasRequest.json +47 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterClientQuotasResponse.json +41 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterConfigsRequest.json +43 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterConfigsResponse.json +39 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterPartitionReassignmentsRequest.json +42 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterPartitionReassignmentsResponse.json +47 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterReplicaLogDirsRequest.json +41 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterReplicaLogDirsResponse.json +41 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterUserScramCredentialsRequest.json +45 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/AlterUserScramCredentialsResponse.json +35 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ApiVersionsRequest.json +34 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ApiVersionsResponse.json +79 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ConsumerProtocolAssignment.json +42 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ConsumerProtocolSubscription.json +49 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/CreateAclsRequest.json +46 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/CreateAclsResponse.json +37 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/CreatePartitionsRequest.json +47 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/CreatePartitionsResponse.json +41 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/CreateTopicsRequest.json +65 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/CreateTopicsResponse.json +72 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DeleteAclsRequest.json +46 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DeleteAclsResponse.json +59 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DeleteGroupsRequest.json +30 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DeleteGroupsResponse.json +36 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DeleteRecordsRequest.json +42 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DeleteRecordsResponse.json +43 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DeleteTopicsRequest.json +43 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DeleteTopicsResponse.json +52 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeAclsRequest.json +43 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeAclsResponse.json +55 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeClientQuotasRequest.json +37 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeClientQuotasResponse.json +47 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeClusterRequest.json +35 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeClusterResponse.json +56 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeConfigsRequest.json +42 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeConfigsResponse.json +69 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeGroupsRequest.json +38 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeGroupsResponse.json +74 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeLogDirsRequest.json +38 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeLogDirsResponse.json +65 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeProducersRequest.json +32 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeProducersResponse.json +55 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeQuorumRequest.json +39 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeQuorumResponse.json +82 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeTopicPartitionsRequest.json +40 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeTopicPartitionsResponse.json +66 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeTransactionsRequest.json +27 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeTransactionsResponse.json +52 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeUserScramCredentialsRequest.json +30 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/DescribeUserScramCredentialsResponse.json +45 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ElectLeadersRequest.json +41 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ElectLeadersResponse.json +45 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/EndTxnRequest.json +43 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/EndTxnResponse.json +41 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/FetchRequest.json +125 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/FetchResponse.json +124 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/FindCoordinatorRequest.json +43 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/FindCoordinatorResponse.json +58 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/HeartbeatRequest.json +39 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/HeartbeatResponse.json +35 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/IncrementalAlterConfigsRequest.json +44 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/IncrementalAlterConfigsResponse.json +38 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/InitProducerIdRequest.json +50 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/InitProducerIdResponse.json +47 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/JoinGroupRequest.json +63 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/JoinGroupResponse.json +69 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/LeaveGroupRequest.json +47 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/LeaveGroupResponse.json +47 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ListConfigResourcesRequest.json +31 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ListConfigResourcesResponse.json +37 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ListGroupsRequest.json +36 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ListGroupsResponse.json +49 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ListOffsetsRequest.json +72 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ListOffsetsResponse.json +71 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ListPartitionReassignmentsRequest.json +34 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ListPartitionReassignmentsResponse.json +46 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ListTransactionsRequest.json +40 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ListTransactionsResponse.json +42 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/MetadataRequest.json +56 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/MetadataResponse.json +101 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/OffsetCommitRequest.json +76 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/OffsetCommitResponse.json +71 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/OffsetDeleteRequest.json +39 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/OffsetDeleteResponse.json +42 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/OffsetFetchRequest.json +76 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/OffsetFetchResponse.json +107 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/OffsetForLeaderEpochRequest.json +52 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/OffsetForLeaderEpochResponse.json +51 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ProduceRequest.json +73 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ProduceResponse.json +96 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/RequestHeader.json +44 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/ResponseHeader.json +26 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/SaslAuthenticateRequest.json +29 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/SaslAuthenticateResponse.json +34 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/SaslHandshakeRequest.json +31 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/SaslHandshakeResponse.json +32 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/SyncGroupRequest.json +56 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/SyncGroupResponse.json +46 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/TxnOffsetCommitRequest.json +68 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/TxnOffsetCommitResponse.json +47 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/UpdateFeaturesRequest.json +43 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/UpdateFeaturesResponse.json +39 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/WriteTxnMarkersRequest.json +49 -0
- kafka_python-3.0.0/kafka/protocol/schemas/resources/WriteTxnMarkersResponse.json +45 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/record/_crc32c.py +25 -9
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/record/abc.py +25 -33
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/record/default_records.py +13 -7
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/record/legacy_records.py +13 -6
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/record/memory_records.py +21 -5
- kafka_python-3.0.0/kafka/serializer/__init__.py +4 -0
- kafka_python-3.0.0/kafka/serializer/abstract.py +20 -0
- kafka_python-3.0.0/kafka/serializer/default.py +16 -0
- kafka_python-3.0.0/kafka/serializer/json.py +17 -0
- kafka_python-3.0.0/kafka/serializer/wrapper.py +21 -0
- kafka_python-3.0.0/kafka/structs.py +69 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/util.py +43 -25
- kafka_python-3.0.0/kafka/vendor/__init__.py +0 -0
- kafka_python-3.0.0/kafka/version.py +1 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka_python.egg-info/PKG-INFO +107 -62
- kafka_python-3.0.0/kafka_python.egg-info/SOURCES.txt +405 -0
- kafka_python-3.0.0/kafka_python.egg-info/entry_points.txt +2 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka_python.egg-info/requires.txt +0 -3
- {kafka_python-2.3.2 → kafka_python-3.0.0}/pyproject.toml +27 -14
- kafka_python-3.0.0/test/integration/__init__.py +0 -0
- kafka_python-3.0.0/test/integration/conftest.py +250 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/test/integration/fixtures.py +158 -151
- kafka_python-3.0.0/test/integration/test_admin_integration.py +595 -0
- kafka_python-3.0.0/test/integration/test_consumer_integration.py +497 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/test/integration/test_producer_integration.py +96 -62
- {kafka_python-2.3.2 → kafka_python-3.0.0}/test/integration/test_sasl_integration.py +17 -14
- kafka_python-3.0.0/test/integration/test_ssl_integration.py +52 -0
- kafka_python-3.0.0/test/net/__init__.py +0 -0
- kafka_python-3.0.0/test/net/test_compat.py +192 -0
- kafka_python-3.0.0/test/net/test_connection.py +689 -0
- kafka_python-3.0.0/test/net/test_http_connect.py +116 -0
- kafka_python-3.0.0/test/net/test_inet.py +362 -0
- kafka_python-3.0.0/test/net/test_manager.py +436 -0
- kafka_python-3.0.0/test/net/test_sasl_reauthentication.py +252 -0
- kafka_python-3.0.0/test/net/test_selector.py +646 -0
- kafka_python-3.0.0/test/net/test_transport.py +248 -0
- kafka_python-3.0.0/test/net/test_wakeup_notifier.py +165 -0
- kafka_python-3.0.0/test/test_cluster.py +538 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/test/test_codec.py +0 -3
- kafka_python-3.0.0/test/test_future.py +57 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/test/test_metrics.py +12 -12
- kafka_python-3.0.0/test/test_mock_broker.py +315 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/test/test_package.py +8 -8
- {kafka_python-2.3.2 → kafka_python-3.0.0}/test/test_util.py +0 -1
- {kafka_python-2.3.2 → kafka_python-3.0.0}/test/testutil.py +5 -5
- kafka_python-2.3.2/kafka/__init__.py +0 -34
- kafka_python-2.3.2/kafka/admin/__init__.py +0 -14
- kafka_python-2.3.2/kafka/admin/acl_resource.py +0 -254
- kafka_python-2.3.2/kafka/admin/client.py +0 -1627
- kafka_python-2.3.2/kafka/admin/config_resource.py +0 -42
- kafka_python-2.3.2/kafka/admin/new_partitions.py +0 -19
- kafka_python-2.3.2/kafka/admin/new_topic.py +0 -29
- kafka_python-2.3.2/kafka/cli/admin/__init__.py +0 -145
- kafka_python-2.3.2/kafka/cli/admin/cluster/__init__.py +0 -16
- kafka_python-2.3.2/kafka/cli/admin/cluster/describe.py +0 -9
- kafka_python-2.3.2/kafka/cli/admin/configs/__init__.py +0 -16
- kafka_python-2.3.2/kafka/cli/admin/configs/describe.py +0 -24
- kafka_python-2.3.2/kafka/cli/admin/consumer_groups/__init__.py +0 -19
- kafka_python-2.3.2/kafka/cli/admin/consumer_groups/delete.py +0 -10
- kafka_python-2.3.2/kafka/cli/admin/consumer_groups/describe.py +0 -10
- kafka_python-2.3.2/kafka/cli/admin/consumer_groups/list.py +0 -9
- kafka_python-2.3.2/kafka/cli/admin/consumer_groups/list_offsets.py +0 -10
- kafka_python-2.3.2/kafka/cli/admin/log_dirs/__init__.py +0 -16
- kafka_python-2.3.2/kafka/cli/admin/log_dirs/describe.py +0 -9
- kafka_python-2.3.2/kafka/cli/admin/topics/__init__.py +0 -19
- kafka_python-2.3.2/kafka/cli/admin/topics/create.py +0 -18
- kafka_python-2.3.2/kafka/cli/admin/topics/delete.py +0 -10
- kafka_python-2.3.2/kafka/cli/admin/topics/describe.py +0 -10
- kafka_python-2.3.2/kafka/cli/admin/topics/list.py +0 -9
- kafka_python-2.3.2/kafka/cli/consumer/__init__.py +0 -89
- kafka_python-2.3.2/kafka/cli/producer/__init__.py +0 -91
- kafka_python-2.3.2/kafka/client_async.py +0 -1312
- kafka_python-2.3.2/kafka/cluster.py +0 -450
- kafka_python-2.3.2/kafka/conn.py +0 -1544
- kafka_python-2.3.2/kafka/coordinator/assignors/abstract.py +0 -57
- kafka_python-2.3.2/kafka/coordinator/base.py +0 -1270
- kafka_python-2.3.2/kafka/future.py +0 -102
- kafka_python-2.3.2/kafka/partitioner/__init__.py +0 -8
- kafka_python-2.3.2/kafka/protocol/__init__.py +0 -49
- kafka_python-2.3.2/kafka/protocol/api.py +0 -141
- kafka_python-2.3.2/kafka/protocol/message.py +0 -216
- kafka_python-2.3.2/kafka/serializer/__init__.py +0 -3
- kafka_python-2.3.2/kafka/serializer/abstract.py +0 -31
- kafka_python-2.3.2/kafka/structs.py +0 -88
- kafka_python-2.3.2/kafka/vendor/enum34.py +0 -841
- kafka_python-2.3.2/kafka/vendor/selectors34.py +0 -641
- kafka_python-2.3.2/kafka/vendor/six.py +0 -1004
- kafka_python-2.3.2/kafka/vendor/socketpair.py +0 -75
- kafka_python-2.3.2/kafka/version.py +0 -1
- kafka_python-2.3.2/kafka_python.egg-info/SOURCES.txt +0 -190
- kafka_python-2.3.2/setup.py +0 -4
- kafka_python-2.3.2/test/integration/conftest.py +0 -168
- kafka_python-2.3.2/test/integration/test_admin_integration.py +0 -377
- kafka_python-2.3.2/test/integration/test_consumer_group.py +0 -208
- kafka_python-2.3.2/test/integration/test_consumer_integration.py +0 -326
- kafka_python-2.3.2/test/test_acl_comparisons.py +0 -92
- kafka_python-2.3.2/test/test_admin.py +0 -94
- kafka_python-2.3.2/test/test_api_object_implementation.py +0 -18
- kafka_python-2.3.2/test/test_assignors.py +0 -872
- kafka_python-2.3.2/test/test_client_async.py +0 -399
- kafka_python-2.3.2/test/test_cluster.py +0 -208
- kafka_python-2.3.2/test/test_conn.py +0 -451
- kafka_python-2.3.2/test/test_consumer.py +0 -52
- kafka_python-2.3.2/test/test_coordinator.py +0 -690
- kafka_python-2.3.2/test/test_fetcher.py +0 -959
- kafka_python-2.3.2/test/test_object_conversion.py +0 -235
- kafka_python-2.3.2/test/test_partition_movements.py +0 -23
- kafka_python-2.3.2/test/test_partitioner.py +0 -38
- kafka_python-2.3.2/test/test_producer.py +0 -35
- kafka_python-2.3.2/test/test_producer_batch.py +0 -151
- kafka_python-2.3.2/test/test_record_accumulator.py +0 -166
- kafka_python-2.3.2/test/test_sender.py +0 -272
- kafka_python-2.3.2/test/test_subscription_state.py +0 -57
- {kafka_python-2.3.2 → kafka_python-3.0.0}/MANIFEST.in +0 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/__main__.py +0 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/benchmarks/__init__.py +0 -0
- {kafka_python-2.3.2/kafka/cli → kafka_python-3.0.0/kafka/coordinator}/__init__.py +0 -0
- {kafka_python-2.3.2/kafka/coordinator → kafka_python-3.0.0/kafka/coordinator/assignors}/__init__.py +0 -0
- {kafka_python-2.3.2/kafka/coordinator/assignors → kafka_python-3.0.0/kafka/coordinator/assignors/sticky}/__init__.py +0 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/coordinator/assignors/sticky/sorted_set.py +0 -0
- {kafka_python-2.3.2/kafka/coordinator/assignors/sticky → kafka_python-3.0.0/kafka/protocol}/__init__.py +0 -0
- {kafka_python-2.3.2/kafka/vendor → kafka_python-3.0.0/kafka/protocol/old}/__init__.py +0 -0
- {kafka_python-2.3.2/test/integration → kafka_python-3.0.0/kafka/protocol/schemas/resources}/__init__.py +0 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/record/__init__.py +0 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka/record/util.py +0 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka_python.egg-info/dependency_links.txt +0 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/kafka_python.egg-info/top_level.txt +0 -0
- {kafka_python-2.3.2 → kafka_python-3.0.0}/setup.cfg +0 -0
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* Enrico Canzonieri, [@ecanzonieri](https://github.com/ecanzonieri)
|
|
15
15
|
* haosdent, [@haosdent](https://github.com/haosdent)
|
|
16
16
|
* Arturo Filastò, [@hellais](https://github.com/hellais)
|
|
17
|
-
* Job Evers
|
|
17
|
+
* Job Evers-Meltzer, [@jobevers](https://github.com/jobevers)
|
|
18
18
|
* Martin Olveyra, [@kalessin](https://github.com/kalessin)
|
|
19
19
|
* Kubilay Kocak, [@koobs](https://github.com/koobs)
|
|
20
20
|
* Matthew L Daniel <mdaniel@gmail.com>
|
|
@@ -1,10 +1,358 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 3.0.0 (Jun 11, 2026)
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
This is a major release with significant changes to kafka-python internals to simplify networking and feature development. It introduces a new networking layer (`kafka.net`) and a dynamic protocol system that uses JSON schema files imported from Apache Kafka. It substantially refactors and expands the Admin client, including breaking changes to some API signatures, and it lands a long list of KIP features/changes across the producer, consumer, admin, and networking/metadata clients. Protocol support across kafka-python is now at or beyond the apache kafka 3.0 baseline.
|
|
4
|
+
|
|
5
|
+
## Breaking Changes
|
|
6
|
+
|
|
7
|
+
### Python Compatibility
|
|
8
|
+
* Drop python2 support (#2699, #2774, #2837, #2846)
|
|
9
|
+
|
|
10
|
+
### Default Configuration Changes
|
|
11
|
+
* KIP-679: Update Producer defaults -- enable_idempotence=True, acks='all' (#3013)
|
|
12
|
+
* KIP-735: Increase default consumer session_timeout_ms from 10s to 45s (#3030)
|
|
13
|
+
* Rename api_version_auto_timeout_ms -> bootstrap_timeout_ms; default 30s (#3028)
|
|
14
|
+
* Producer: Remove deprecation warning for buffer_memory config (now raises) (#3047)
|
|
15
|
+
|
|
16
|
+
### Abstract Interface Changes
|
|
17
|
+
* Serializer/Deserializer: Pass headers to serialize/deserialize (#3046)
|
|
18
|
+
* Partitioner: pass both key/value, serialized and unserialized, to partition() (#3045)
|
|
19
|
+
|
|
20
|
+
### Admin API Changes
|
|
21
|
+
* Admin: change response shapes to simple dicts (#2883)
|
|
22
|
+
* Admin: groups apis renames; add offsets, members apis (#2892)
|
|
23
|
+
* Admin: Deprecate NewTopics/NewPartitions in favor of simple dicts (#2869)
|
|
24
|
+
|
|
25
|
+
### Consumer API Changes
|
|
26
|
+
* Consumer: use assignor instances, not classes (#2775)
|
|
27
|
+
|
|
28
|
+
### Error Hierarchy
|
|
29
|
+
* KafkaError subclass Exception not RuntimeError (#2932)
|
|
30
|
+
* Make IncompatibleBrokerVersion a subclass of UnsupportedVersionError (#2924)
|
|
31
|
+
* Eliminate NoBrokersAvailableError (#2942)
|
|
32
|
+
* KafkaProtocolError is not retriable (#2941)
|
|
33
|
+
* Prefer raised Exceptions to assert / AssertionError (#3042)
|
|
34
|
+
|
|
35
|
+
### Old Networking Stack Removal
|
|
36
|
+
* Remove kafka.client_async / kafka.conn legacy modules (#2918)
|
|
37
|
+
* Drop version probes for pre-0.10/ApiVersionsRequest brokers
|
|
38
|
+
|
|
39
|
+
### SASL Module Rename
|
|
40
|
+
* Rename kafka.sasl -> kafka.net.sasl
|
|
41
|
+
|
|
42
|
+
## Networking (kafka.net)
|
|
43
|
+
|
|
44
|
+
Complete refactor of the networking layer using a bespoke event-loop supporting async/await (but no asyncio yet). All three clients (Admin, Consumer, Producer) use a dedicated IO thread that drives a selector-based event loop. AdminClient/KafkaConsumer leverage a built-in io thread supplied by kafka.net, KafkaProducer continues to use its existing background Sender thread for now.
|
|
45
|
+
|
|
46
|
+
### Async IO Substrate
|
|
47
|
+
* kafka.net: Refactored async networking modules (generator-based coroutines) (#2812)
|
|
48
|
+
* kafka.net: Network IO thread (#2965, #2980, #2961, #2968, #2963)
|
|
49
|
+
* KafkaNetClient: drop-in replacement for KafkaClient using kafka.net (#2816)
|
|
50
|
+
* KafkaNetSocket: interface class for socket and proxy connections (#2992)
|
|
51
|
+
* kafka.net.manager: Add call_soon(coro) and run(coro) for sync/async bridge (#2862)
|
|
52
|
+
* kafka.net.manager: Bootstrap is sync/blocking (#2919)
|
|
53
|
+
* connection: short-circuit send/recv when closed (#2967)
|
|
54
|
+
* Clamp broker_version to user-supplied api_version (#3052)
|
|
55
|
+
|
|
56
|
+
### Transports and Proxies
|
|
57
|
+
* Default SSLContext -> PROTOCOL_TLS_CLIENT; minimum version TLS 1.2 (#2807)
|
|
58
|
+
* Enable TCP KeepAlive as default socket option (#2904)
|
|
59
|
+
* kafka.net: HTTP CONNECT proxy support (RFC 7231 s4.3.6) (#2990)
|
|
60
|
+
|
|
61
|
+
### SASL Authentication
|
|
5
62
|
* kafka.net: Validate SASL/SCRAM iterations (#3026)
|
|
6
|
-
*
|
|
7
|
-
|
|
63
|
+
* SASL: Prefer node hostname to IP address when building mechanisms (#3003)
|
|
64
|
+
|
|
65
|
+
### Timeouts and Connection Management
|
|
66
|
+
Per-request and per-stage timeouts replace the old single client-wide timeout.
|
|
67
|
+
* KIP-601: support socket_connection_setup_timeout_ms w/ exponential backoff (#3027)
|
|
68
|
+
* kafka.net: Bootstrap if needed for metadata refresh (#2825)
|
|
69
|
+
* kafka.net: Raise UnknownBrokerIdError when connection fails because node_id is not in metadata (#2876)
|
|
70
|
+
|
|
71
|
+
### Futures and Wakeups
|
|
72
|
+
The `Future` primitive gains `__await__` and a faster slotted implementation; cross-thread wakeups are factored out into a reusable helper.
|
|
73
|
+
* Future.__await__ support (#2811)
|
|
74
|
+
* Future: __slots__ and callback/errback inlining optimization (#2848)
|
|
75
|
+
* Future: clear callbacks/errbacks when done to avoid reference cycles (#2891)
|
|
76
|
+
* WakeupNotifier primitive for cross-thread/task wakeups (#2925, #2933)
|
|
77
|
+
|
|
78
|
+
### Concurrency and Error Handling
|
|
79
|
+
Defensive checks throughout the kafka.net event loop and transport stack: improved socket I/O error handling, RuntimeErrors on misuse of the IO thread, and lock-based detection of concurrent access.
|
|
80
|
+
* kafka.net.selector: Break scheduled heapq ties when tasks share scheduled_at (#3007)
|
|
81
|
+
* kafka.net.selector: Monitor slow tasks with slow_task_threshold_secs (#2946)
|
|
82
|
+
* kafka.net.selector: Use threading.Lock() to detect concurrent access to poll() (#2945)
|
|
83
|
+
* kafka.net.selector: Track pending tasks to prevent gc before completion (#2950)
|
|
84
|
+
* kafka.net.selector: Support reschedule(when, task); idempotent unschedule (#2939)
|
|
85
|
+
* kafka.net.selector: Raise RuntimeError on concurrent access to net.poll or wakeup() (#2938)
|
|
86
|
+
* kafka.net.selector: Raise RuntimeError on run/call_at/call_soon_threadsafe after closed (#2971)
|
|
87
|
+
* kafka.net.selector: Catch unhandled exceptions in IO thread (#2970)
|
|
88
|
+
* kafka.net.selector: Improve error handling on sock read/write (#2995)
|
|
89
|
+
* kafka.net.selector: Check locks in `_poll_once`; add net.drain() (#2949)
|
|
90
|
+
* kafka.net.transport: Close connection on socket write error (#2973)
|
|
91
|
+
|
|
92
|
+
## Protocol
|
|
93
|
+
|
|
94
|
+
A new JSON-schema-based dynamic protocol generator now replaces the legacy hand-written protocol classes (moved to `kafka.protocol.old`).
|
|
95
|
+
|
|
96
|
+
### Dynamic Protocol Classes
|
|
97
|
+
Protocol classes are now generated from the upstream Apache Kafka JSON schemas.
|
|
98
|
+
* Dynamic protocol classes using upstream json schemas (#2727, #2745, #2779, #2782, #2787, #2810, #3037)
|
|
99
|
+
* Add .pyi type annotation stubs for generated protocol classes (#2784)
|
|
100
|
+
* Migrate all internal usage to new protocol classes (#2764, #2765, #2766, #2767, #2768, #2772)
|
|
101
|
+
* Refactor treatment of versioned ApiMessage classes (#2739)
|
|
102
|
+
* Lookup request header -> response class via ResponseClassRegistry (#2730)
|
|
103
|
+
* Manual json schema edits to restore fields dropped in Apache 4.0 (#2738)
|
|
104
|
+
|
|
105
|
+
### New Types and Messages
|
|
106
|
+
* Add UUID protocol type (#2703)
|
|
107
|
+
* Add UnsignedInt16 type
|
|
108
|
+
* KIP-893: support nullable structs (#2889)
|
|
109
|
+
* Replace kafka.structs BrokerMetadata/PartitionMetadata with MetadataResponse structs (#2794)
|
|
110
|
+
* Add ConsumerProtocol data schemas (#2754)
|
|
111
|
+
* Add StickyAssignorUserData json schema (#2755)
|
|
112
|
+
|
|
113
|
+
### Performance
|
|
114
|
+
* Protocol encode/decode optimization with inline compile/exec (#2785)
|
|
115
|
+
* Protocol benchmarks and profiling (make bench-protocol) (#2783)
|
|
116
|
+
|
|
117
|
+
### Protocol Fixes
|
|
118
|
+
* Fix TaggedFields encoding/decoding (#2725, #2745, #2779)
|
|
119
|
+
* Fix VarInt/VarLong encoding (#2706)
|
|
120
|
+
* Fix CompactBytes encoding of struct data (#2782)
|
|
121
|
+
* Fix compiled encode_into for None arrays (#2790)
|
|
122
|
+
* Validate network frame size (#3019)
|
|
123
|
+
* Validate DataContainer version (#2759)
|
|
124
|
+
|
|
125
|
+
### Helpers and Debugging
|
|
126
|
+
* DataContainer.to_dict() helper (#2758, #2872, #2879)
|
|
127
|
+
* Store in-flight request headers only for protocol parser (#2723)
|
|
128
|
+
* Debug log send/recv bytes from protocol parser (#2707)
|
|
129
|
+
* Adjust protocol debug logging; add KAFKA_PYTHON_PROTOCOL_DEBUG_LOG (#2719)
|
|
130
|
+
* CoordinatorType enum (GROUP/TRANSACTION/SHARE) (#3049)
|
|
131
|
+
|
|
132
|
+
## Broker Version Check
|
|
133
|
+
|
|
134
|
+
Broker version inference is consolidated into a single `BrokerVersionData` helper that tracks the broker's reported API versions and infers a broker version string. `ApiVersionsRequest` is always sent on connect.
|
|
135
|
+
|
|
136
|
+
### BrokerVersionData
|
|
137
|
+
* BrokerVersionData: consolidated version checks (#2795)
|
|
138
|
+
* BrokerVersionData: infer up to 4.3 (#2835, #2836, #3032)
|
|
139
|
+
* BrokerVersionData: support request min/max version (#2868)
|
|
140
|
+
* BrokerVersionData: Fix IncompatibleBrokerVersion errors; add __str__ (#2804)
|
|
141
|
+
|
|
142
|
+
### ApiVersionsRequest
|
|
143
|
+
* Always send ApiVersionsRequest on connect (#2802)
|
|
144
|
+
* Improve ApiVersionsRequest fallbacks (#2803, #2817, #2821)
|
|
145
|
+
|
|
146
|
+
## Client Bootstrap
|
|
147
|
+
|
|
148
|
+
* Fix bootstrap connection error handling (#2831)
|
|
149
|
+
* ClusterMetadata: bootstrap_brokers(), set_topics/add_topics/metadata_request (#2805, #2792, #2796, #2797)
|
|
150
|
+
* Move bootstrap_brokers fallback from brokers() to least_loaded_node() (#2809)
|
|
151
|
+
* KafkaClient.least_loaded_node: pass bootstrap_fallback=True if needed (#2830)
|
|
152
|
+
* Consumer: add explicit bootstrap() method (#2975)
|
|
153
|
+
* Admin: explicit bootstrap on __init__ (#2864)
|
|
154
|
+
* Manage metadata refresh logic in ClusterMetadata via attached manager (#2920)
|
|
155
|
+
* kafka.cluster: End refresh loop on close(); refresh loop catches KafkaError (#2935, #2936)
|
|
156
|
+
* Respect metadata backoff in KafkaNetClient (#2854)
|
|
157
|
+
|
|
158
|
+
## Consumer
|
|
159
|
+
|
|
160
|
+
KafkaConsumer drops the dedicated HeartbeatThread in favor of scheduled async tasks on the kafka.net IO thread. Internals have been substantially refactored to migrate from future callbacks to async/await syntax. Feature support added for incremental cooperative rebalancing (KIP-429), rack-aware fetch (KIP-392), and log truncation detection (KIP-320/KIP-595).
|
|
161
|
+
|
|
162
|
+
### Threading and IO
|
|
163
|
+
All consumer network I/O now flows through the shared kafka.net IO thread; `consumer.poll()` no longer drives the event loop directly.
|
|
164
|
+
* Consumer: use background thread for all network io; drop HeartbeatThread (#2965)
|
|
165
|
+
* Consumer: send all requests from net io thread (#2980)
|
|
166
|
+
* Consumer: simplify poll() with fetcher.fetch_records (#2960)
|
|
167
|
+
* Consumer: sleep in poll() if timeout, no records, and no fetchable partitions (#3039)
|
|
168
|
+
* Consumer: drop poll loop optimizations for pending offset resets and rejoins (#2959)
|
|
169
|
+
* Consumer: `_update_fetch_positions` -> `_refresh_committed_offsets`; dont poll in position() (#2958)
|
|
170
|
+
* Consumer: convert fetcher reset_offsets/send_list_offsets_requests to async def
|
|
171
|
+
* Consumer: use new proto attrs in Fetcher (ListOffsets/Fetch) (#2923)
|
|
172
|
+
|
|
173
|
+
### Group Membership and Rebalance
|
|
174
|
+
* KIP-429: Incremental Cooperative Rebalance (#2999)
|
|
175
|
+
* KIP-429: Add on_partitions_lost rebalance listener hook (#3016)
|
|
176
|
+
* KIP-559: Bump JoinGroup v7 / SyncGroup v5; verify protocol_type/name (#2998)
|
|
177
|
+
* Rebalance Listener: raise errors, block fetches on revoked, pre-revoke unsubscribed (#3018)
|
|
178
|
+
* Consumer: call RebalanceListener on close (#3020)
|
|
179
|
+
* Preserve member id on IllegalGeneration error (#3017)
|
|
180
|
+
|
|
181
|
+
### Fetch
|
|
182
|
+
* KIP-320: Detect and handle Log Truncation (#2978)
|
|
183
|
+
* KIP-392: Rack-aware fetch from closest replica (#2986, #2996)
|
|
184
|
+
* KIP-595: Fetch v12 support; check for log truncation and leader updates in response (#3021)
|
|
185
|
+
* KAFKA-7548: Retain fetched data for paused partitions (#2981)
|
|
186
|
+
* KAFKA-9212: Leader Epoch unreliable before Metadata v9 (#2997)
|
|
187
|
+
|
|
188
|
+
### Offsets and Commits
|
|
189
|
+
* KIP-447: OffsetFetch v7 set require_stable flag if read_committed (#3023)
|
|
190
|
+
* Consumer: handle retriable errors in offsets_for_times (#3022)
|
|
191
|
+
* Consumer: Improve retriable offset fetch error handling (#2977)
|
|
192
|
+
* Consumer: Retain subscription TopicPartitionState when possible (#3001)
|
|
193
|
+
* Consumer: drop max_version clamp on ListOffsetsRequest (#3012)
|
|
194
|
+
|
|
195
|
+
### Configuration
|
|
196
|
+
* KIP-602: Support client_dns_lookup in Consumer/Producer/Admin config (#3004)
|
|
197
|
+
* Consumer: default request_timeout_ms 30s; use request-specific timeout for JoinGroup (#3011)
|
|
198
|
+
|
|
199
|
+
### Consumer Fixes
|
|
200
|
+
* Retry metadata request if tracked topics have retriable errors (#2832)
|
|
201
|
+
* Fix KeyError in KafkaConsumer.committed() (#2710)
|
|
202
|
+
* Fix `Fetcher._fetch_offsets_by_times` retry handling (#2833)
|
|
203
|
+
|
|
204
|
+
## Producer
|
|
205
|
+
|
|
206
|
+
KafkaProducer gains a sticky partitioner (KIP-480), enabled-by-default idempotence (KIP-679), tightened transaction handling, and a faster send/encode path.
|
|
207
|
+
|
|
208
|
+
### Transactions and Idempotence
|
|
209
|
+
* KIP-360 (pt1): Add transaction manager state and helper methods (#2852)
|
|
210
|
+
* KIP-360 (pt2): Bump producer epoch with InitProducerIdRequest v3 on 2.5+ brokers (#2853)
|
|
211
|
+
* KIP-447: Include group metadata in TxnOffsetCommitRequest (#2984, #2988)
|
|
212
|
+
* KIP-654: Txn Producer aborts with non-fatal TransactionAbortedError (#3010)
|
|
213
|
+
* KAFKA-5793: Tighten up semantics of OutOfOrderSequenceNumber (pt1) (#2843)
|
|
214
|
+
* Enable producer idempotence with max_in_flight_requests_per_connection > 1 (#2841)
|
|
215
|
+
* Producer: Enforce guaranteed message order when idempotence_enabled (#2937)
|
|
216
|
+
* Producer: treat InvalidProducerEpochError as ProducerFencedError (#2885)
|
|
217
|
+
* Producer: Improve transaction manager retriable error handling (#2884)
|
|
218
|
+
* Producer: Use new-style request construction in Txn Manager (#2983)
|
|
219
|
+
|
|
220
|
+
### Partitioning
|
|
221
|
+
* KIP-480: StickyPartitioner for KafkaProducer (#2982, #2989)
|
|
222
|
+
|
|
223
|
+
### Batching and Send Path
|
|
224
|
+
Split-and-resend oversized batches instead of failing; avoid redundant validation and buffer copies on hot send-path.
|
|
225
|
+
* KIP-126: Allow KafkaProducer to split and resend oversized batches (#2839)
|
|
226
|
+
* Refactor producer.send / _wait_on_metadata for fast path (#2850)
|
|
227
|
+
* Only ensure_valid_topic_name new topics on send (#2849)
|
|
228
|
+
* Avoid unnecessary bytes/bytearray copies on send (#2845)
|
|
229
|
+
* MemoryRecordsBuilder.build() returns bytearray buffer not bytes copy (#2842)
|
|
230
|
+
* Drop PartitionResponse namedtuple; consolidate response and error handling (#2851)
|
|
231
|
+
|
|
232
|
+
### Producer Fixes
|
|
233
|
+
* Fixup Sender error class logging (#2828)
|
|
234
|
+
|
|
235
|
+
## Admin Client
|
|
236
|
+
|
|
237
|
+
Split KafkaAdminClient into focused mixin classes (cluster, topics, configs, groups, ACLs, log dirs, etc), and convert request-sending path to async def methods that run on the kafka.net IO thread. Support for new KIPs using new protocol stack.
|
|
238
|
+
|
|
239
|
+
### Refactor and Async Migration
|
|
240
|
+
The admin client interface remains sync but wraps a fully-async internal api (does not support asyncio yet). Adds cached coordinator lookups and a mixin structure to separate logical resource groups.
|
|
241
|
+
* Admin: split into functional mixin classes (#2873, #2877, #2882)
|
|
242
|
+
* Admin: convert request paths to async; cache coordinator_ids (#2851, #2862, #2863, #2866, #2867, #2870, #2871, #3050)
|
|
243
|
+
* Admin: refactor `_send_request_to_controller` error handling (#2751)
|
|
244
|
+
|
|
245
|
+
### Batch Protocol Support
|
|
246
|
+
* KIP-699: FindCoordinatorRequest v4 -- multi-group support (#3025)
|
|
247
|
+
* KIP-709: OffsetFetch v8 -- use batch interface when available (#3024)
|
|
248
|
+
|
|
249
|
+
### New Cluster and Quorum APIs
|
|
250
|
+
* Admin: describe_metadata_quorum (#2914)
|
|
251
|
+
* Admin: cluster features describe/update (#2908, #3053)
|
|
252
|
+
* Admin: cluster get_broker_version_data / api_versions (#2903)
|
|
253
|
+
|
|
254
|
+
### Configs
|
|
255
|
+
* Admin: list_config_resources (requires 4.1+) (#2900)
|
|
256
|
+
* Admin: support incremental alter configs (#2901)
|
|
257
|
+
* Admin: Improve alter_configs w/ filters and missing keys (#2899)
|
|
258
|
+
|
|
259
|
+
### Topics and Partitions
|
|
260
|
+
* KIP-516: Support topic id (uuid) for describe topics (#3031)
|
|
261
|
+
* Admin: re-use config processing for CreateTopicsResponse (#3036)
|
|
262
|
+
* Admin: wait_for_topics() and create_topics() wait_for_metadata option (#2856)
|
|
263
|
+
* Admin: list_partition_offsets (#2894)
|
|
264
|
+
* Admin: Expand partitions api support (#2890)
|
|
265
|
+
* Admin: Cleanup alter_partition_reassignments (#3002)
|
|
266
|
+
|
|
267
|
+
### Groups
|
|
268
|
+
* Admin: include latest offsets and lag in list_group_offsets; add reset_group_offsets (#2897)
|
|
269
|
+
* Admin: support group state/type filters for list_groups (#2910)
|
|
270
|
+
* Admin: add extended group reset options (#2911)
|
|
271
|
+
* Admin: Dont return MemberToRemove as key in remove_group_members dict result (#2893)
|
|
272
|
+
|
|
273
|
+
### Transactions
|
|
274
|
+
* Admin: implement KIP-664 hanging-transaction tooling (#3051)
|
|
275
|
+
|
|
276
|
+
### Log Dirs
|
|
277
|
+
* Admin: alter_log_dirs (#2912)
|
|
278
|
+
* Admin: Fix describe_log_dirs, accept optional topics/brokers (#2881)
|
|
279
|
+
|
|
280
|
+
### Reliability
|
|
281
|
+
* Admin: retry delete_records / list_partition_offsets on NotLeaderForPartitionError (#2976)
|
|
282
|
+
|
|
283
|
+
## CLI
|
|
284
|
+
|
|
285
|
+
The CLI adds shared parser config, SASL/SSL connection support across all subcommands, and several new admin subcommands (acls, configs alter, users).
|
|
286
|
+
|
|
287
|
+
### Common Infrastructure
|
|
288
|
+
* Add kafka-python cli script to wrap admin/consumer/producer (#3034)
|
|
289
|
+
* kafka.cli: common parser args; support sasl/ssl connections (#2887)
|
|
290
|
+
* kafka.cli: common configuration for logging and connect kwargs (#2906)
|
|
291
|
+
* Add --enable-logger/--disable-logger to cli options (#2798)
|
|
292
|
+
* Set default cli log level => CRITICAL (#2760)
|
|
293
|
+
|
|
294
|
+
### Admin CLI
|
|
295
|
+
* admin cli: acls, users, configs alter (#2888)
|
|
296
|
+
* admin cli: refactor admin group/command parsers; consumer/producer option groups (#2909)
|
|
297
|
+
* admin cli: --id support for describe-topics
|
|
298
|
+
* admin cli: close() after running command
|
|
299
|
+
* admin cli: dont print stacktrace for BrokerResponseError or ValueError (#2895)
|
|
300
|
+
* admin cli: catch AttributeError and print_help() (#2880)
|
|
301
|
+
* admin cli: fix describe_configs (#2875)
|
|
302
|
+
|
|
303
|
+
### Consumer CLI
|
|
304
|
+
* consumer cli does not require group_id (#3044)
|
|
305
|
+
|
|
306
|
+
## Compatibility / Misc
|
|
307
|
+
|
|
308
|
+
Small quality-of-life additions to the public API surface.
|
|
309
|
+
|
|
310
|
+
* Support context manager interface for consumer/producer/admin (#2969)
|
|
311
|
+
* Make IncompatibleBrokerVersion a subclass of UnsupportedVersionError (#2924)
|
|
312
|
+
* Add OffsetSpec / IsolationLevel to kafka imports (#2898)
|
|
313
|
+
* Errors: subclasses for RetriableError and InvalidMetadataError (#3041)
|
|
314
|
+
* Helper classes: DefaultSerializer and JsonSerializer (#3046)
|
|
315
|
+
|
|
316
|
+
## Fixes
|
|
317
|
+
|
|
318
|
+
Codec and Python-3-compatibility fixes that aren't specific to a single client.
|
|
319
|
+
|
|
320
|
+
* Fix zstd multi-frame decompression failure (#2717)
|
|
321
|
+
* Use time.monotonic() instead of time.time() for elapsed time calculations (#2714)
|
|
322
|
+
* Fix deprecated log.warn() -> log.warning()
|
|
323
|
+
* REF: Switch to deque.copy() for Python 3 compatibility (#2712)
|
|
324
|
+
|
|
325
|
+
## Tests
|
|
326
|
+
|
|
327
|
+
A new in-memory `MockBroker` / `MockTransport` enables deterministic protocol-level tests, and the integration test fixtures have been substantially consolidated.
|
|
328
|
+
|
|
329
|
+
### MockBroker and Fixtures
|
|
330
|
+
* MockBroker / MockTransport for deterministic protocol tests (#2861, #2902)
|
|
331
|
+
* Organize test files into consumer/ producer/ admin/ directories (#2844)
|
|
332
|
+
* Consolidate consumer integration tests (#2857)
|
|
333
|
+
* Consolidate more pytest fixtures (admin/client) (#2921)
|
|
334
|
+
* Integration fixtures use contextmanager (#2966)
|
|
335
|
+
* Refactor coordinator test fixtures; prefer MockBroker to patched_coord (#2953)
|
|
336
|
+
* Support SSL transports in KafkaFixture (#2806)
|
|
337
|
+
* Simplify interacting with KafkaFixture (client factories, create_topics) (#2808)
|
|
338
|
+
* Use producer/consumer/admin factories in producer_integration tests (#2829)
|
|
339
|
+
* Set api_version for integration tests; fix test_group missing consumers (#2824)
|
|
340
|
+
* Close local fixtures in tests (#2962)
|
|
341
|
+
* Catch exceptions in fixture.open() -> close() (#2907)
|
|
342
|
+
* Create topic on 0.8.2 broker to fix bootstrap (#2896)
|
|
343
|
+
|
|
344
|
+
### Reliability
|
|
345
|
+
* Reduce timing flakiness in test_group (#3006)
|
|
346
|
+
* Test timeouts: use pytest-timeout method=thread and add faulthandler
|
|
347
|
+
|
|
348
|
+
## Project Infra
|
|
349
|
+
|
|
350
|
+
* Enable pylint workflow; disable/fix all outstanding errors (#2701)
|
|
351
|
+
* Add coverage step to CI (#2786)
|
|
352
|
+
* CI test matrix updated to python 3.14 / kafka 4.3 (#2836, #3032)
|
|
353
|
+
* Add lint-unicode make target; include in make lint test (#2993)
|
|
354
|
+
* pyproject updates: no more universal wheels; requres py3.8+; fix license files; drop setup.py (#3033)
|
|
355
|
+
* Bump actions/cache from 4 to 5; actions/upload-artifact from 4 to 7 (#2702, #2789)
|
|
8
356
|
|
|
9
357
|
# 2.3.1 (Apr 9, 2026)
|
|
10
358
|
|
|
@@ -49,6 +397,17 @@ Project Infra
|
|
|
49
397
|
* Bump actions/checkout from 5 to 6 (#2694)
|
|
50
398
|
* NixOS helpers
|
|
51
399
|
|
|
400
|
+
# 2.2.19 (Apr 9, 2026)
|
|
401
|
+
|
|
402
|
+
Fixes
|
|
403
|
+
* Fix TaggedFields value encoding; add test coverage (#2725)
|
|
404
|
+
* Fix zstd multi-frame decompression failure (#2717)
|
|
405
|
+
* Fix KeyError in KafkaConsumer.committed() (#2710)
|
|
406
|
+
* Fix VarInt/VarLong encoding; move tests to test/protocol/ (#2706)
|
|
407
|
+
* Fix `Fetcher._fetch_offsets_by_times retry handling` (#2833)
|
|
408
|
+
* Fixes to support integration testing with external KAFKA_URI (#2838)
|
|
409
|
+
* Minor py2 fixes: consumer integration test; done pip install python-snappy
|
|
410
|
+
|
|
52
411
|
# 2.2.18 (Nov 20, 2025)
|
|
53
412
|
|
|
54
413
|
Fixes
|
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
|
187
187
|
identification within third-party archives.
|
|
188
188
|
|
|
189
|
-
Copyright
|
|
189
|
+
Copyright 2026 Dana Powers, David Arthur, and Contributors
|
|
190
190
|
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
192
|
you may not use this file except in compliance with the License.
|