kafka-python 3.0.5__tar.gz → 3.0.7__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-3.0.5 → kafka_python-3.0.7}/CHANGES.md +14 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/PKG-INFO +1 -1
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/consumer/subscription_state.py +39 -5
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/transport.py +9 -3
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/producer/kafka.py +1 -1
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/producer/sender.py +3 -2
- kafka_python-3.0.7/kafka/version.py +1 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka_python.egg-info/PKG-INFO +1 -1
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/integration/fixtures.py +20 -12
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_transport.py +56 -1
- kafka_python-3.0.5/kafka/version.py +0 -1
- {kafka_python-3.0.5 → kafka_python-3.0.7}/AUTHORS.md +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/LICENSE +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/MANIFEST.in +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/README.rst +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/__main__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/__main__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/_acls.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/_cluster.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/_configs.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/_groups.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/_partitions.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/_topics.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/_transactions.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/_users.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/admin/client.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/consumer_performance.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/load_example.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/producer_encode_path.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/producer_performance.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/profile_protocol.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/protocol_old_vs_new.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/record_batch_compose.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/record_batch_read.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/benchmarks/varint_speed.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/acls/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/acls/common.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/acls/create.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/acls/delete.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/acls/describe.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/cluster/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/cluster/describe.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/cluster/describe_quorum.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/cluster/features.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/cluster/log_dirs.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/cluster/versions.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/configs/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/configs/alter.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/configs/common.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/configs/describe.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/configs/list.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/configs/reset.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/alter_offsets.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/delete.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/delete_offsets.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/describe.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/list.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/list_offsets.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/remove_members.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/groups/reset_offsets.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/partitions/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/partitions/alter_reassignments.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/partitions/create.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/partitions/delete_records.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/partitions/describe.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/partitions/elect_leaders.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/partitions/list_offsets.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/partitions/list_reassignments.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/topics/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/topics/create.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/topics/delete.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/topics/describe.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/topics/list.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/transactions/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/transactions/abort.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/transactions/describe.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/transactions/describe_producers.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/transactions/find_hanging.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/transactions/list.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/users/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/users/alter_user_scram_credentials.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/users/describe_user_scram_credentials.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/common.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/consumer/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/producer/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cluster.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/codec.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/consumer/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/consumer/__main__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/consumer/fetcher.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/consumer/group.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/abstract.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/cooperative_sticky.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/range.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/roundrobin.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/sticky/StickyAssignorUserData.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/sticky/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/sticky/partition_movements.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/sticky/sorted_set.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/sticky/sticky_assignor.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/sticky/user_data.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/base.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/consumer.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/heartbeat.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/subscription.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/errors.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/future.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/compound_stat.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/dict_reporter.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/kafka_metric.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/measurable.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/measurable_stat.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/metric_config.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/metric_name.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/metrics.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/metrics_reporter.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/quota.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stat.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/avg.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/count.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/histogram.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/max_stat.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/min_stat.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/percentile.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/percentiles.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/rate.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/sampled_stat.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/sensor.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/metrics/stats/total.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/compat.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/connection.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/http_connect.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/inet.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/manager.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/metrics.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/sasl/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/sasl/abc.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/sasl/gssapi.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/sasl/msk.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/sasl/oauth.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/sasl/plain.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/sasl/scram.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/sasl/sspi.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/selector.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/socks5.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/net/wakeup_notifier.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/partitioner/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/partitioner/abc.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/partitioner/default.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/partitioner/sticky.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/producer/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/producer/__main__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/producer/future.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/producer/producer_batch.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/producer/record_accumulator.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/producer/transaction_manager.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/acl.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/acl.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/client_quotas.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/client_quotas.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/cluster.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/cluster.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/configs.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/configs.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/groups.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/groups.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/topics.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/topics.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/transactions.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/transactions.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/users.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/admin/users.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/api_data.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/api_header.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/api_key.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/api_message.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/broker_version_data.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/fetch.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/fetch.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/group.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/group.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/metadata.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/metadata.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/offsets.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/consumer/offsets.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/data_container.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/frame.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/generate_stubs.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/metadata/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/metadata/api_versions.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/metadata/api_versions.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/metadata/find_coordinator.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/metadata/find_coordinator.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/metadata/metadata.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/metadata/metadata.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/abstract.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/add_offsets_to_txn.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/add_partitions_to_txn.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/admin.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/api.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/api_versions.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/commit.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/consumer_protocol.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/end_txn.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/fetch.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/find_coordinator.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/group.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/init_producer_id.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/list_offsets.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/metadata.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/offset_for_leader_epoch.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/produce.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/sasl_authenticate.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/sasl_handshake.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/struct.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/txn_offset_commit.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/old/types.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/parser.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/producer/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/producer/produce.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/producer/produce.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/producer/transaction.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/producer/transaction.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/sasl.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/sasl.pyi +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/array.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/base.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/codecs/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/codecs/encode_buffer.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/codecs/tagged_fields.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/codecs/types.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/codegen.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/simple.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/struct.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/fields/struct_array.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/load_json.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AddOffsetsToTxnRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AddOffsetsToTxnResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AddPartitionsToTxnRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AddPartitionsToTxnResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterClientQuotasRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterClientQuotasResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterConfigsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterConfigsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterPartitionReassignmentsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterPartitionReassignmentsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterReplicaLogDirsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterReplicaLogDirsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterUserScramCredentialsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/AlterUserScramCredentialsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ApiVersionsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ApiVersionsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ConsumerProtocolAssignment.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ConsumerProtocolSubscription.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/CreateAclsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/CreateAclsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/CreatePartitionsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/CreatePartitionsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/CreateTopicsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/CreateTopicsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DeleteAclsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DeleteAclsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DeleteGroupsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DeleteGroupsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DeleteRecordsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DeleteRecordsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DeleteTopicsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DeleteTopicsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeAclsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeAclsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeClientQuotasRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeClientQuotasResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeClusterRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeClusterResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeConfigsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeConfigsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeGroupsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeGroupsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeLogDirsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeLogDirsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeProducersRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeProducersResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeQuorumRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeQuorumResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeTopicPartitionsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeTopicPartitionsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeTransactionsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeTransactionsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeUserScramCredentialsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/DescribeUserScramCredentialsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ElectLeadersRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ElectLeadersResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/EndTxnRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/EndTxnResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/FetchRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/FetchResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/FindCoordinatorRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/FindCoordinatorResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/HeartbeatRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/HeartbeatResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/IncrementalAlterConfigsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/IncrementalAlterConfigsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/InitProducerIdRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/InitProducerIdResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/JoinGroupRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/JoinGroupResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/LeaveGroupRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/LeaveGroupResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListConfigResourcesRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListConfigResourcesResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListGroupsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListGroupsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListOffsetsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListOffsetsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListPartitionReassignmentsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListPartitionReassignmentsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListTransactionsRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ListTransactionsResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/MetadataRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/MetadataResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/OffsetCommitRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/OffsetCommitResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/OffsetDeleteRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/OffsetDeleteResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/OffsetFetchRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/OffsetFetchResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/OffsetForLeaderEpochRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/OffsetForLeaderEpochResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ProduceRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ProduceResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/RequestHeader.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/ResponseHeader.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/SaslAuthenticateRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/SaslAuthenticateResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/SaslHandshakeRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/SaslHandshakeResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/SyncGroupRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/SyncGroupResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/TxnOffsetCommitRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/TxnOffsetCommitResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/UpdateFeaturesRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/UpdateFeaturesResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/WriteTxnMarkersRequest.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/WriteTxnMarkersResponse.json +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/protocol/schemas/resources/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/record/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/record/_crc32c.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/record/abc.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/record/default_records.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/record/legacy_records.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/record/memory_records.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/record/util.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/serializer/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/serializer/abstract.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/serializer/default.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/serializer/json.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/serializer/wrapper.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/structs.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/util.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/vendor/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka_python.egg-info/SOURCES.txt +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka_python.egg-info/dependency_links.txt +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka_python.egg-info/entry_points.txt +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka_python.egg-info/requires.txt +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/kafka_python.egg-info/top_level.txt +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/pyproject.toml +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/setup.cfg +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/integration/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/integration/conftest.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/integration/test_admin_integration.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/integration/test_consumer_integration.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/integration/test_producer_integration.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/integration/test_sasl_integration.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/integration/test_ssl_integration.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/__init__.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_compat.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_connection.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_http_connect.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_inet.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_manager.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_sasl_reauthentication.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_selector.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/net/test_wakeup_notifier.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/test_cluster.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/test_codec.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/test_future.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/test_metrics.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/test_mock_broker.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/test_package.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/test_util.py +0 -0
- {kafka_python-3.0.5 → kafka_python-3.0.7}/test/testutil.py +0 -0
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# 3.0.7 (Jun 28, 2026)
|
|
2
|
+
|
|
3
|
+
### Fixes
|
|
4
|
+
* transport: cancel pending io coroutines on close() (#3109)
|
|
5
|
+
* producer: fix stalled shutdown when brokers unreachable (#3108)
|
|
6
|
+
|
|
7
|
+
# 3.0.6 (Jun 25, 2026)
|
|
8
|
+
|
|
9
|
+
### Fixes
|
|
10
|
+
* consumer: track current leader epoch in addition to record epoch (#3107)
|
|
11
|
+
|
|
12
|
+
### CI
|
|
13
|
+
* Also `wait_for_topics` on <0.10 test fixtures (#3105)
|
|
14
|
+
|
|
1
15
|
# 3.0.5 (Jun 24, 2026)
|
|
2
16
|
|
|
3
17
|
### Fixes
|
|
@@ -564,6 +564,18 @@ class TopicPartitionState:
|
|
|
564
564
|
# until OffsetForLeaderEpoch confirms the position is consistent with
|
|
565
565
|
# the current leader's log; mutually exclusive with awaiting_reset.
|
|
566
566
|
self._awaiting_validation = False
|
|
567
|
+
# Highest cluster leader epoch this position has already been reconciled
|
|
568
|
+
# against (a completed validation, or adoption of a position whose
|
|
569
|
+
# record epoch is unknown). This is deliberately distinct from the
|
|
570
|
+
# position's *record* epoch (``OffsetAndMetadata.leader_epoch``, which
|
|
571
|
+
# is sent as last_fetched_epoch for KIP-595 divergence detection): a
|
|
572
|
+
# leader election bumps the cluster epoch without changing the epoch of
|
|
573
|
+
# the record we're positioned on, and OffsetForLeaderEpoch reports the
|
|
574
|
+
# epoch of the requested (older) point, so the record epoch alone can't
|
|
575
|
+
# tell us whether we've validated against the current leader. Tracking
|
|
576
|
+
# it separately is what stops poll() from re-validating forever and
|
|
577
|
+
# stalling the consumer. See #3106.
|
|
578
|
+
self._current_leader_epoch = -1
|
|
567
579
|
# KIP-392: preferred read replica chosen by the broker (rack-aware).
|
|
568
580
|
# ``_preferred_read_replica_expiration`` is a monotonic deadline; after
|
|
569
581
|
# it passes we fall back to the leader and re-learn. Cleared on
|
|
@@ -597,6 +609,7 @@ class TopicPartitionState:
|
|
|
597
609
|
self._position = None
|
|
598
610
|
self.next_allowed_retry_time = None
|
|
599
611
|
self._awaiting_validation = False
|
|
612
|
+
self._current_leader_epoch = -1
|
|
600
613
|
self.clear_preferred_read_replica()
|
|
601
614
|
|
|
602
615
|
def is_reset_allowed(self):
|
|
@@ -625,6 +638,11 @@ class TopicPartitionState:
|
|
|
625
638
|
self.drop_pending_record_batch = True
|
|
626
639
|
self.next_allowed_retry_time = None
|
|
627
640
|
self._awaiting_validation = False
|
|
641
|
+
# A freshly-seeked position has not been reconciled against any leader;
|
|
642
|
+
# force the next maybe_validate_position to validate it against the
|
|
643
|
+
# current leader (the prior position's validation says nothing about
|
|
644
|
+
# this offset).
|
|
645
|
+
self._current_leader_epoch = -1
|
|
628
646
|
self.clear_preferred_read_replica()
|
|
629
647
|
|
|
630
648
|
def pause(self):
|
|
@@ -686,7 +704,8 @@ class TopicPartitionState:
|
|
|
686
704
|
return self._awaiting_validation
|
|
687
705
|
|
|
688
706
|
def maybe_validate_position(self, current_leader_epoch):
|
|
689
|
-
"""Mark for validation if current leader has advanced beyond
|
|
707
|
+
"""Mark for validation if the current leader has advanced beyond the
|
|
708
|
+
leader epoch this position was last reconciled against.
|
|
690
709
|
|
|
691
710
|
Returns True if the partition is now awaiting validation.
|
|
692
711
|
"""
|
|
@@ -696,11 +715,26 @@ class TopicPartitionState:
|
|
|
696
715
|
return False
|
|
697
716
|
if current_leader_epoch is None or current_leader_epoch < 0:
|
|
698
717
|
return False
|
|
699
|
-
#
|
|
700
|
-
#
|
|
701
|
-
|
|
718
|
+
# Have we already reconciled this position against this leader epoch (or
|
|
719
|
+
# a newer one)? The floor is the max of:
|
|
720
|
+
# - the record epoch of the position itself: a record we actually
|
|
721
|
+
# fetched at this offset proves the position is valid through its
|
|
722
|
+
# epoch (so a position fetched under the current leader needs no
|
|
723
|
+
# validation), and
|
|
724
|
+
# - the leader epoch a completed validation reconciled us against,
|
|
725
|
+
# which can exceed the record epoch because OffsetForLeaderEpoch
|
|
726
|
+
# reports the epoch of the requested (older) point, not the current
|
|
727
|
+
# leader's. Without this second term the position is re-marked every
|
|
728
|
+
# poll and the partition never becomes fetchable again (#3106).
|
|
729
|
+
reconciled_epoch = max(self._current_leader_epoch, self._position.leader_epoch)
|
|
730
|
+
if current_leader_epoch <= reconciled_epoch:
|
|
702
731
|
return False
|
|
703
|
-
|
|
732
|
+
# We are now tracking this leader epoch regardless of whether the
|
|
733
|
+
# position itself carries a record epoch we can validate against.
|
|
734
|
+
self._current_leader_epoch = current_leader_epoch
|
|
735
|
+
# Positions without a known record epoch (legacy data, post-seek to bare
|
|
736
|
+
# offset) can't be validated; treat as already-fetchable.
|
|
737
|
+
if self._position.leader_epoch < 0:
|
|
704
738
|
return False
|
|
705
739
|
self.clear_preferred_read_replica()
|
|
706
740
|
self._awaiting_validation = True
|
|
@@ -19,6 +19,8 @@ class KafkaTCPTransport:
|
|
|
19
19
|
self._closed = False
|
|
20
20
|
self._write_buffer = deque()
|
|
21
21
|
self._writing = False
|
|
22
|
+
self._read_task = None
|
|
23
|
+
self._write_task = None
|
|
22
24
|
self._protocol = None
|
|
23
25
|
self._read = False
|
|
24
26
|
self._write = True
|
|
@@ -80,7 +82,7 @@ class KafkaTCPTransport:
|
|
|
80
82
|
data_received() method.
|
|
81
83
|
"""
|
|
82
84
|
if not self._read:
|
|
83
|
-
self._net.call_soon(self._read_from_sock)
|
|
85
|
+
self._read_task = self._net.call_soon(self._read_from_sock)
|
|
84
86
|
self._read = True
|
|
85
87
|
log.debug('%s: Resumed reading', self)
|
|
86
88
|
|
|
@@ -173,7 +175,7 @@ class KafkaTCPTransport:
|
|
|
173
175
|
self._write_buffer.append(data)
|
|
174
176
|
if not self._writing:
|
|
175
177
|
self._writing = True
|
|
176
|
-
self._net.call_soon(self._write_to_sock)
|
|
178
|
+
self._write_task = self._net.call_soon(self._write_to_sock)
|
|
177
179
|
|
|
178
180
|
def writelines(self, list_of_data):
|
|
179
181
|
"""Write a list (or any iterable) of data bytes to the transport."""
|
|
@@ -182,7 +184,7 @@ class KafkaTCPTransport:
|
|
|
182
184
|
self._write_buffer.extend(list_of_data)
|
|
183
185
|
if not self._writing:
|
|
184
186
|
self._writing = True
|
|
185
|
-
self._net.call_soon(self._write_to_sock)
|
|
187
|
+
self._write_task = self._net.call_soon(self._write_to_sock)
|
|
186
188
|
|
|
187
189
|
async def _write_to_sock(self):
|
|
188
190
|
try:
|
|
@@ -272,6 +274,10 @@ class KafkaTCPTransport:
|
|
|
272
274
|
except OSError:
|
|
273
275
|
pass
|
|
274
276
|
sock.close()
|
|
277
|
+
for task in (self._read_task, self._write_task):
|
|
278
|
+
if task is not None:
|
|
279
|
+
self._net.cancel(task)
|
|
280
|
+
self._read_task = self._write_task = None
|
|
275
281
|
proto = self._protocol
|
|
276
282
|
self._protocol = None
|
|
277
283
|
if proto is not None:
|
|
@@ -310,7 +310,7 @@ class Sender(threading.Thread):
|
|
|
310
310
|
return False
|
|
311
311
|
|
|
312
312
|
log.debug("%s: Sending transactional request %s", str(self), next_request_handler.request)
|
|
313
|
-
while not self._force_close:
|
|
313
|
+
while self._running and not self._force_close:
|
|
314
314
|
target_node = None
|
|
315
315
|
try:
|
|
316
316
|
if next_request_handler.needs_coordinator():
|
|
@@ -325,7 +325,8 @@ class Sender(threading.Thread):
|
|
|
325
325
|
else:
|
|
326
326
|
target_node = self._client.least_loaded_node()
|
|
327
327
|
if target_node is None:
|
|
328
|
-
self._client.poll(
|
|
328
|
+
self._client.poll(timeout_ms=self.config['retry_backoff_ms'],
|
|
329
|
+
future=self._metadata.request_update())
|
|
329
330
|
elif not self._client.await_ready(target_node, timeout_ms=self.config['request_timeout_ms']):
|
|
330
331
|
continue
|
|
331
332
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '3.0.7'
|
|
@@ -34,21 +34,29 @@ def create_topics(broker, topic_names, num_partitions=None, replication_factor=N
|
|
|
34
34
|
for topic_name in topic_names:
|
|
35
35
|
# TODO: verify kafka-topics.sh support for early 0.8 brokers
|
|
36
36
|
broker._create_topic_via_cli(topic_name, num_partitions, replication_factor)
|
|
37
|
+
_wait_for_topics(broker, topic_names)
|
|
37
38
|
|
|
38
39
|
|
|
39
40
|
def _create_topics_via_admin(broker, topic_names, num_partitions, replication_factor):
|
|
40
|
-
|
|
41
|
-
params
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
41
|
+
params = broker._enrich_client_params({'api_version': env_kafka_version(), 'client_id': 'topic_creator'})
|
|
42
|
+
with KafkaAdminClient(**params) as admin:
|
|
43
|
+
try:
|
|
44
|
+
topics = {name: {'num_partitions': num_partitions, 'replication_factor': replication_factor}
|
|
45
|
+
for name in topic_names}
|
|
46
|
+
admin.create_topics(topics, wait_for_metadata=True)
|
|
47
|
+
except InvalidReplicationFactorError:
|
|
48
|
+
# wait and try again
|
|
49
|
+
# in CI the brokers sometimes take a while to find themselves
|
|
50
|
+
time.sleep(0.5)
|
|
51
|
+
topics = {name: {'num_partitions': num_partitions, 'replication_factor': replication_factor}
|
|
52
|
+
for name in topic_names}
|
|
53
|
+
admin.create_topics(topics, wait_for_metadata=True)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _wait_for_topics(broker, topics):
|
|
57
|
+
params = broker._enrich_client_params({'api_version': env_kafka_version(), 'client_id': 'topic_creator'})
|
|
58
|
+
with KafkaAdminClient(**params) as admin:
|
|
59
|
+
admin.wait_for_topics(topics)
|
|
52
60
|
|
|
53
61
|
|
|
54
62
|
def client_params(broker, client_id='client', **overrides):
|
|
@@ -6,7 +6,7 @@ import pytest
|
|
|
6
6
|
|
|
7
7
|
import kafka.errors as Errors
|
|
8
8
|
from kafka.future import Future
|
|
9
|
-
from kafka.net.selector import NetworkSelector
|
|
9
|
+
from kafka.net.selector import NetworkSelector, TaskState
|
|
10
10
|
from kafka.net.transport import KafkaTCPTransport
|
|
11
11
|
|
|
12
12
|
|
|
@@ -365,3 +365,58 @@ class TestKafkaTCPTransport:
|
|
|
365
365
|
t._closed = True
|
|
366
366
|
s = str(t)
|
|
367
367
|
assert 'closed' in s
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
class TestTransportWaiterCleanup:
|
|
371
|
+
"""Regression: a locally-initiated close()/abort() must reclaim the socket
|
|
372
|
+
read/write coroutine tasks parked in the event loop.
|
|
373
|
+
|
|
374
|
+
These tests fail until ``KafkaTCPTransport._close`` cancels its read/write
|
|
375
|
+
waiter tasks (``net.cancel(task)``); the selector's existing WAIT_IO branch
|
|
376
|
+
in ``cancel()`` then drives the io_guard finalizer and discards the task.
|
|
377
|
+
"""
|
|
378
|
+
|
|
379
|
+
def test_local_close_reclaims_parked_reader(self, net, socketpair):
|
|
380
|
+
rsock, wsock = socketpair
|
|
381
|
+
t = KafkaTCPTransport(net, wsock)
|
|
382
|
+
t.set_protocol(MagicMock())
|
|
383
|
+
baseline = len(net._pending_tasks)
|
|
384
|
+
|
|
385
|
+
t.resume_reading()
|
|
386
|
+
net.drain() # reader runs and parks in WAIT_IO on wait_read(wsock)
|
|
387
|
+
parked = [task for task in net._pending_tasks if task.state is TaskState.WAIT_IO]
|
|
388
|
+
assert len(parked) == 1, 'reader did not park as expected'
|
|
389
|
+
assert len(net._pending_tasks) == baseline + 1
|
|
390
|
+
|
|
391
|
+
# Empty write buffer -> close() tears the socket down synchronously. The
|
|
392
|
+
# peer (rsock) never sent anything, so there is no I/O event to wake the
|
|
393
|
+
# parked reader; close() itself must reclaim it.
|
|
394
|
+
t.close()
|
|
395
|
+
net.drain() # running the loop must not be needed -- and must not help either
|
|
396
|
+
|
|
397
|
+
assert t._sock is None
|
|
398
|
+
assert len(net._pending_tasks) == baseline, (
|
|
399
|
+
'parked reader leaked into _pending_tasks after local close')
|
|
400
|
+
assert not any(task.state is TaskState.WAIT_IO for task in net._pending_tasks)
|
|
401
|
+
|
|
402
|
+
def test_local_close_reclaims_parked_writer(self, net, socketpair):
|
|
403
|
+
rsock, wsock = socketpair
|
|
404
|
+
t = KafkaTCPTransport(net, wsock)
|
|
405
|
+
t.set_protocol(MagicMock())
|
|
406
|
+
baseline = len(net._pending_tasks)
|
|
407
|
+
|
|
408
|
+
# write() schedules _write_to_sock, whose loop parks on the first
|
|
409
|
+
# wait_write before the bytes leave the buffer. drain() steps it once
|
|
410
|
+
# to the park and returns (no _ready left), leaving it suspended.
|
|
411
|
+
t.write(b'data')
|
|
412
|
+
net.drain()
|
|
413
|
+
parked = [task for task in net._pending_tasks if task.state is TaskState.WAIT_IO]
|
|
414
|
+
assert len(parked) == 1, 'writer did not park as expected'
|
|
415
|
+
|
|
416
|
+
t.abort(error=Errors.KafkaConnectionError('boom'))
|
|
417
|
+
net.drain()
|
|
418
|
+
|
|
419
|
+
assert t._sock is None
|
|
420
|
+
assert len(net._pending_tasks) == baseline, (
|
|
421
|
+
'parked writer leaked into _pending_tasks after abort')
|
|
422
|
+
assert not any(task.state is TaskState.WAIT_IO for task in net._pending_tasks)
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '3.0.5'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/transactions/describe_producers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/users/alter_user_scram_credentials.py
RENAMED
|
File without changes
|
{kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/cli/admin/users/describe_user_scram_credentials.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/sticky/partition_movements.py
RENAMED
|
File without changes
|
|
File without changes
|
{kafka_python-3.0.5 → kafka_python-3.0.7}/kafka/coordinator/assignors/sticky/sticky_assignor.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|