This release is a pre-release and may not be stable for production use.
confluent_kafka (Rust-core Python client)
The Python client built on the Rust core's C FFI. Its surface is the Java Kafka
client (Apache Kafka 4.4.0) mapped to idiomatic Python, ruled by the
## Python Binding Conventions section of the repository's CLAUDE.md. The
package sits over a hand-written CPython extension, _confluentkafka, which
links the Rust library's C API (../rust, feature ffi).
Status
Preview: the Python client is in preview and not yet recommended for production use. The public API is not stable before the GA release and may change. We welcome your feedback while the design is still open.
Windows is not supported yet.
Known issue on Python 3.14: a Ctrl+C (KeyboardInterrupt) can, rarely, leave a client call counted, so that a later close() waits forever, or leave a mock client's lock held. It happens when the Ctrl+C arrives right after a with block takes its lock and before the block starts. The bug is in CPython 3.14 and affects every with block (python/cpython#148874); Python 3.15 has the fix.
Import paths
The package mirrors Java's package tree with the clients segment dropped
(CLAUDE.md, Python Binding Conventions, Modules). Import each name from its own
module — the package root does not re-export the everyday client names; it
exports only Duration and the Java built-in exception classes:
from confluent_kafka.producer import (
KafkaProducer, MockProducer, AsyncKafkaProducer, AsyncMockProducer,
ProducerRecord, RecordMetadata, Callback,
)
from confluent_kafka.admin import Admin, AsyncAdmin, NewTopic
from confluent_kafka.consumer import (
KafkaConsumer, MockConsumer, AsyncKafkaConsumer, AsyncMockConsumer,
ConsumerRebalanceListener, OffsetAndMetadata, CloseOptions,
SubscriptionPattern,
)
from confluent_kafka.common import (
TopicPartition, TopicIdPartition, Node, PartitionInfo, Uuid,
MetricName, Metric,
KafkaError, # Java's org.apache.kafka.common.KafkaException
KafkaFuture, AsyncKafkaFuture, # every future the package hands out
)
# Every type lives in the module of its Java package, `clients` dropped:
from confluent_kafka.common.header import Header, Headers # common.header
from confluent_kafka.common.metrics import KafkaMetric # common.metrics
from confluent_kafka.common.record import TimestampType # common.record
from confluent_kafka.common.errors import RetriableError # typed hierarchy
from confluent_kafka.common.serialization import (
bytes_serializer, string_serializer, int_serializer, json_serializer, # etc.
)
# The Java built-in exception classes and the Duration alias live at the
# package root:
from confluent_kafka import (
IllegalArgumentError, IllegalStateError, ConcurrentModificationError,
TimeoutError, NoSuchElementError, ExecutionError, UnsupportedOperationError,
IndexOutOfBoundsError, Duration,
)
The native extension is _confluentkafka (private): the package imports it; it
is never a public import path.
None is Java's null
Every keyword-only parameter mirrors a Java argument, and None is Java's
null, never "not given": leaving a parameter out is the only way to choose the
Java overload without it (CLAUDE.md, Python Binding Conventions, Signatures).
consumer.close() is Java's close(), while consumer.close(option=None) is
close(null) and raises TypeError("option must not be None"), as Java's
NullPointerException; producer.send(record=r, callback=None) is Java's
send(record, null). Where Java gives null a meaning, None keeps it
(ProducerRecord(topic=…, partition=None, key=None, value=…), an
Optional parameter's Optional.empty()). Code written against kafka-python or
confluent-kafka-python that passes None to skip an argument must leave the
argument out instead; its positional callbacks and serdes take the keyword form
(Serdes and callbacks), and an except UnsupportedVersionError meant for a mock's
unimplemented method becomes except UnsupportedOperationError (Errors). The
signatures show the private default MISSING
(help(), inspect.signature): it only marks a parameter some overload omits
and is never a value to pass.
Headers
A record's headers are Java's: record.headers() returns a Headers
(confluent_kafka.common.header), never None and empty when there are none, holding
Header objects with key() and value(), a memoryview or None (for a
fetched record, a view into the fetch batch, never a copy). Headers has
Java's add(header=…) / add(key=…, value=…), remove(key=…),
last_header(key=…), headers(key=…) and to_array(), and iterates with
for h in record.headers(). A record's headers can be changed until it is sent
(by KafkaProducer.send, once the serializers ran); then add and remove
raise IllegalStateError("RecordHeaders has been closed."), as Java's
KafkaProducer seals them. A polled record's headers stay writable, as Java's
CompletedFetch leaves them. Where headers are taken (ProducerRecord(headers=…),
ConsumerRecord(headers=…)), each element is a Header(key=…, value=…) or a
(key, value) pair. Code that read headers as (key, value) tuples
(for k, v in record.headers()) reads h.key(), h.value() instead.
Async peers
Each async client lives in the same module as its sync peer, Async-prefixed
(AsyncKafkaProducer, AsyncKafkaConsumer). A method is async def on the
async class iff Java waits in it (on the background thread, the network, or a
rebalance listener it runs); the others (assignment(), subscription(),
metrics(), group_metadata(), wakeup()) stay plain def on both.
commit_nowait() is async def on the async consumers, as every method whose
entry point has a _cb twin: _nowait means the call does not wait for the
broker's answer, so await consumer.commit_nowait(callback=cb) returns once the
commit is sent (raising the call's own failure) and cb gets the result later.
Futures
One future type for every future the package hands out: KafkaFuture[T] on a
sync client, AsyncKafkaFuture[T] on an async one (both in
confluent_kafka.common), with Java's KafkaFuture methods (get, get_now,
then_apply, when_complete, all_of, cancel, is_done, …).
md = producer.send(record=r).get() # sync
md = await (await producer.send(record=r)).get() # async: send() and get() are awaited
get() on a failed future raises confluent_kafka.ExecutionError, as Java's
ExecutionException, and the real error is its __cause__:
try:
producer.send(record=r).get()
except ExecutionError as e:
if isinstance(e.__cause__, RetriableError): ...
A get(timeout=…) that runs out raises TimeoutError. A future's
then_apply functions and when_complete actions run where the completion
runs: on the producer's completion thread or the sync admin client's pump
thread, on the event loop for an async client.
Serdes and callbacks take keyword arguments
A serializer, a deserializer, a send() callback and a commit_nowait()
callback are called with keyword arguments named after Java's parameters, and
each must accept **kwargs:
def on_done(*, metadata, exception, **kwargs): ... # Java's Callback
def on_commit(*, offsets, exception, **kwargs): ... # OffsetCommitCallback
def serializer(*, topic, data, headers=None, **kwargs): ... # Serializer
def deserializer(*, topic, data, headers=None, **kwargs): ... # Deserializer
producer.send(record=r, callback=lambda *, metadata, exception, **_: ...)
Java adds a parameter to such an interface as a default overload, which old
implementations never see; in Python the binding passes it as one more keyword,
which **kwargs takes, so a parameter Java adds later breaks no existing
callable. A callable without **kwargs is rejected where it is given, with
IllegalArgumentError("<param> must accept **kwargs") (callback,
key_serializer, … or the config key value.deserializer, …), and the
Callback, OffsetCommitCallback, Serializer and Deserializer protocols
make mypy reject it too. The parameters may be declared positional-or-keyword
in Java's order (def ser(topic, data, headers=None, **kwargs)), which the
client then calls positionally, a little faster. The ConsumerRebalanceListener
methods, which you override on a subclass, are called positionally, as before.
Code written against the earlier positional callbacks
(lambda md, exc: ..., def deserializer(topic, data, headers)) must be
rewritten in this form.
Producer
send(record=…, callback=cb)returns aKafkaFuturefor the record'sRecordMetadata(.get()waits for it); like Java's, it cannot be cancelled, and a send failure reachesget()asExecutionError. A serializer is called with aNonekey or value as given and decides what null maps to.cb(metadata=…, exception=…)is Java'sCallback: it runs on the producer's background completion thread (KafkaProducer) or on the event loop (AsyncKafkaProducer), one at a time in completion order, before the future completes; a raising callback fails nothing, and the client's core logs its exception once, with Java's message.metadatais neverNone: on failure every field but the topic and partition is -1.close()waits for the records sent before it;close(timeout=…)waits at mosttimeout, then fails what is left. Neither cancels a future.- A
send()that returned belongs to theflush()or transaction call after it (commit_transaction()includes it,abort_transaction()discards it). MockProduceris Java'sMockProducer: sends complete, and callbacks run, on the calling thread, and a raising callback's exception propagates out of the call that completed the record.
Consumer
- Set
group.protocoltoconsumer: this client implements only the KIP-848 consumer group protocol, and Java's default,classic, is rejected by the client's core when the consumer is built, withUnsupportedVersionError("Classic group protocol is not yet supported in this client; set group.protocol=consumer (KIP-848)."). - The share consumer (KIP-932:
ShareConsumer,KafkaShareConsumer,MockShareConsumer) is not generated yet: the C FFI has no entry point for it. - The calls that wait take Java's
Durationoverloads as an optional keyword:commit(timeout=…),position(…, timeout=…),committed(…, timeout=…),partitions_for(…, timeout=…),list_topics(timeout=…),offsets_for_times(…, timeout=…),beginning_offsets(…, timeout=…)andend_offsets(…, timeout=…); left out calls the overload without it (default.api.timeout.msapplies), andNoneis Java's nullDuration(TypeError("timeout must not be None")). A negative timeout raisesIllegalArgumentError. poll(timeout=…)runs the deserializers on the caller's thread. A null key or value is not deserialized: the record's field isNone. A failing one raisesRecordDeserializationError(after the records before it, if any, were returned) and leaves the position at the record:seek(partition=e.topic_partition(), offset=e.offset() + 1)skips it.commit()is Java'scommitSyncand waits;commit_nowait(callback=cb)is Java'scommitAsync.cb(offsets=…, exception=…)is Java'sOffsetCommitCallback;offsetsisNonewhen the commit failed and for an explicit emptyoffsets, as Java passesnull.- The
ConsumerRebalanceListenermethods and thecommit_nowait()callback run on the caller's thread, inside the call that delivers them, and the rebalance does not advance until the listener returns. As in Java, listener methods and background errors are delivered only bypoll()andunsubscribe()(andclose()revokes or loses the group assignment through the listener); thecommit_nowait()callback runs inside a laterpoll(),commit(),commit_nowait()orclose();commit()andcommit_nowait()deliver no listener method. A listener may call back into its consumer (commit(),seek(),position(), …); onAsyncKafkaConsumerthose calls block the event loop for their duration. OnAsyncKafkaConsumera listener method may beasync def; it is awaited on the event loop. A listener'sKafkaErroris raised as it is from the call that delivered it; any other exception is wrapped asKafkaError("User rebalance callback throws an error")with it as the cause. KafkaConsumeris not thread-safe: a call while another thread is inside it raisesConcurrentModificationError,wakeup()andmetrics()excepted, as Java leaves both outsideacquire(): from any thread,wakeup()makes the waiting call raiseWakeupError, andmetrics()answers.close()closes with Java's default timeout;close(option=CloseOptions(timeout=…))bounds it. Java's deprecatedclose(Duration)is not generated.- A deserializer defaults to the
key.deserializer/value.deserializerconfig key, else tobytes_deserializer(); the consumer closes both when it closes. MockConsumeris Java'sMockConsumer:add_record(record=…)takes theConsumerRecordthe test builds andpoll()returns it as is (the mock has no deserializers). Nothing binds its type parameters, so annotate it as Java writes them:c: MockConsumer[str, str] = MockConsumer(offset_reset_strategy="earliest").
Admin
Admin.create(configs={...}) returns a KafkaAdminClient (AsyncAdmin.create an
AsyncKafkaAdminClient); the client is a context manager, and leaving the block
closes it. The package is confluent_kafka.admin: the client, one …Options per
call, one …Result per call, and the value types (NewTopic, TopicDescription, …).
from confluent_kafka import ExecutionError
from confluent_kafka.admin import Admin, NewTopic
from confluent_kafka.common.errors import TopicExistsError
with Admin.create(configs={"bootstrap.servers": "localhost:9092"}) as admin:
result = admin.create_topics(
new_topics=[NewTopic(name="demo", num_partitions=3, replication_factor=1)])
try:
result.all().get() # one future per topic: result.values()
except ExecutionError as e:
if not isinstance(e.__cause__, TopicExistsError):
raise
-
Every call returns its
…Resultat once, as Java's does; the Result holds oneKafkaFutureper key (or one for the whole call) and.get()waits. A failed key raisesExecutionError, whose__cause__is the error as its class. -
The sync client has one daemon pump thread that completes its futures, as Java's admin thread does:
then_applyfunctions andwhen_completeactions run there, so a blocking action blocks the client's other completions. -
On the async peer the calls are plain
deftoo, and the Result holdsAsyncKafkaFutures, whoseget()is awaited; their actions run on the event loop:from confluent_kafka.admin import AsyncAdmin, NewTopic async with AsyncAdmin.create(configs={"bootstrap.servers": "localhost:9092"}) as admin: result = admin.create_topics(new_topics=[NewTopic(name="demo", num_partitions=3, replication_factor=1)]) await result.all().get()
-
Errors are classes:
isinstance(e.__cause__, RetriableError). -
MockAdminClient(andAsyncMockAdminClient) is Java'sMockAdminClient, for tests: no broker, in-memory state,MockAdminClient.create()...build()(MockAdminClient()has oneNode.no_node()broker, as Java's, so topic calls need real brokers). Where Java's mock throws "Not implemented yet", it raisesUnsupportedOperationError(Java'sUnsupportedOperationException, aRuntimeErrorat the package root, not aKafkaError). -
Overloads whose entry point the core lacks (streams and share groups, metadata quorum, …) are not generated; they are listed in the docstring of
confluent_kafka.admin.admin.
Errors
Errors are a typed hierarchy caught by class, not a flat error with a code().
There is no code() / is_retriable() / is_fatal() on the surface —
retriability is except RetriableError, and each Java exception class has a
…Error Python analog in the module of its Java package (generated from the
Java sources). The Java built-in exception classes (IllegalStateError,
IllegalArgumentError, ConcurrentModificationError, TimeoutError,
NoSuchElementError, ExecutionError, UnsupportedOperationError,
IndexOutOfBoundsError) live at the package root. UnsupportedOperationError is Java's UnsupportedOperationException,
which the mocks raise for what Java's mocks do not implement
(MockConsumer.offsets_for_times, MockAdminClient's "Not implemented yet"), and the
client's core for what this client does not support yet; it is not a KafkaError, so
except KafkaError does not catch it, as in Java.
Directory Structure
confluent_kafka/ # The client package, one module per Java package
_confluentkafka.c # Hand-written CPython extension over the C API
tinycthread.{c,h}, c11threads_compat.h # C11 threads shim (macOS)
setup.py, pyproject.toml
grpc_server.py, grpc_server_async.py, grpc_translate.py
# gRPC servers for the multilanguage tests
Dockerfile.grpc, Dockerfile.grpc.async # Their images
examples/ # Runnable producer, consumer and admin examples
test/
├── unit/ # pytest unit tests, no broker needed
├── integration/ # Broker-backed binding tests (testcontainers; skip without Docker)
├── static/ # Source checks: format arity
└── performance/ # Latency-budget and benchmark tests (need a broker)
tools/ # format_arity.py
soak/ # Long-running soak client — see soak/README.md
Makefile # Targets the repository root's Makefile delegates to
Where commands run
Run the commands below from this directory, inside a Python environment
(3.10+). The repository root's make targets use the shared ../venv/,
which make init at the root creates.
Prerequisites
The extension links the Rust library and includes its C header, so build the Rust client first:
make -C ../rust build-all-features # or: cd ../rust && cargo build --all-features --release
This produces ../rust/target/release/libconfluent_kafka.* and
../rust/target/include/confluent_kafka.h. setup.py finds them there;
set CONFLUENT_KAFKA_LIB_DIR to link a library from another directory
(e.g. ../rust/target/debug).
Building
pip install -e . # builds _confluentkafka in place
pip install .[dev] # test and benchmark dependencies
Running Tests
python -m pytest test/unit # unit tests
python -m pytest test/integration # broker-backed tests (Docker)
python -m pytest test/static # static checks of the extension source
python -m pytest soak/test # soak client unit tests
python -m mypy --strict confluent_kafka test/unit/test_typing.py # typecheck
The static checks read source files only, so they need neither the Rust library nor the extension built.
The Python arms of the multilanguage integration suite (__grpc_python,
__grpc_python_async) run the Rust test harness against the gRPC servers
above; make test-integration builds the images and runs them (Linux only,
Docker required).
Make targets
Makefile wraps the commands above. The repository root's Makefile delegates
to it (activating the venv and building the Rust library first); it can also
be run directly:
make build # pip install -e . against ../rust/target/$(PROFILE)
make test # typecheck, unit, integration, static and soak tests, then test-integration
make test-unit # unit tests only
make typecheck # mypy --strict over the package and test/unit/test_typing.py
make check-static # static checks only
make test-integration # gRPC images + the __grpc_python arms (Linux, Docker)
make test-performance # latency-budget tests (idle machine, broker needed)
make consumer-perf-test producer-perf-test # env-driven benchmarks
make grpc-image grpc-image-async
make clean
PROFILE (release by default, or debug) selects which Rust build to link.
CLIENT_VERSION=2 runs the benchmarks against the PyPI librdkafka client in
its own venv (make init-venv-librdkafka at the root): it installs the same
top-level confluent_kafka package as this client, so the two cannot share one.
License
Apache License 2.0. See LICENSE for details.
Metadata
Release files for confluent-kafka 4.4.0b1.dev4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 213.6 MB
Release files / confluent_kafka-4.4.0b1.dev4-cp315-cp315-manylinux_2_28_x86_64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp315-cp315-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 9.3 MB |
| Tags | CPython 3.15 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
27903cc208e4e4efb97ff6aa9b5054b07ed4fa86b0d6153254bb4e1958c259fe
|
|
BLAKE2b-256 checksum How to use checksums |
0732d8a5394d12f7496a2c382ffbd71580bb323121a329740e9417f89155c5aa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp315-cp315-manylinux_2_28_aarch64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp315-cp315-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 8.9 MB |
| Tags | CPython 3.15 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
a28d49c202acec6e4be6415aaf7e5fe4aee155c9780d406f2fdb21c72aeb4e3a
|
|
BLAKE2b-256 checksum How to use checksums |
ffbb6acba740d6df57a89484689d502717c5967211de40752f77333ef77efb30
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp315-cp315-macosx_11_0_x86_64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp315-cp315-macosx_11_0_x86_64.whl |
|---|---|
| Size | 9.1 MB |
| Tags | CPython 3.15 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
8e85e052fb932897b50f8a5cedac768f5b49d75252a717635b18d0425e8023e1
|
|
BLAKE2b-256 checksum How to use checksums |
48f9574723c05849ff1da68a54979fa174e5772eb1f9f9a0083a56ce29af1407
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp315-cp315-macosx_11_0_arm64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp315-cp315-macosx_11_0_arm64.whl |
|---|---|
| Size | 8.4 MB |
| Tags | CPython 3.15 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
721c549293ef283ed3b5fc2b02cf8a163aa4a77e5c95d02d4df251dd6b1d8eda
|
|
BLAKE2b-256 checksum How to use checksums |
fa25e3a618b5292ca618c0c34075ebc1c8f63145568a3555b030f162462e0a1c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp314-cp314-manylinux_2_28_x86_64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp314-cp314-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 9.3 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
e1fd28965ebfca3f03e5683c235f51710307451cff8c66cfeb2109431bcf80a9
|
|
BLAKE2b-256 checksum How to use checksums |
2986ec8a9595009fe870aa9d5c136b730126a2c1aed2468b964e0d9e3e828bac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp314-cp314-manylinux_2_28_aarch64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp314-cp314-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 8.9 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
4c3a41832972598c6ca904e005f072606684c7269df914d49709adccfeb6ea8a
|
|
BLAKE2b-256 checksum How to use checksums |
652b401ebcfcb7fe090319e96d5c6eb4eabfee3681815e82c5d148d5056dec70
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp314-cp314-macosx_11_0_x86_64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp314-cp314-macosx_11_0_x86_64.whl |
|---|---|
| Size | 9.1 MB |
| Tags | CPython 3.14 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
a445049c0ace3e488af6a30cf72dfdc77e3ed50b6b8b2f81a10127b42d909f94
|
|
BLAKE2b-256 checksum How to use checksums |
1b4f69020ecc44f0d20ed41d198261aefd5ccd73161412373cceefa65afbbe13
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 8.4 MB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
0f84ce6543fb0b2f8cda795c6924b7d2caccf8e804c8ee112d4d3f431e0e0a4f
|
|
BLAKE2b-256 checksum How to use checksums |
66f49b23622a55d09c05bb7f4f1444eabb0462bff054ed974f925a2b8ce348ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 9.3 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
f108308702e8808ceba621c952e43b97201d258e71adbed92cbbacf46e031eb8
|
|
BLAKE2b-256 checksum How to use checksums |
b2831ea71a807561b80e12a4dcf73024f5285c87c4e7ef6b92944520f276a091
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp313-cp313-manylinux_2_28_aarch64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp313-cp313-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 8.9 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
a234393fd4ef69d92606da1ab0376b5737dfc75227e9b526528f366c9dcd5c06
|
|
BLAKE2b-256 checksum How to use checksums |
7c3b4417cb2a34a3f406193a3ba746ccc0c0bc3e6de0904d4ee1ccd7001e2fa4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp313-cp313-macosx_11_0_x86_64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp313-cp313-macosx_11_0_x86_64.whl |
|---|---|
| Size | 9.1 MB |
| Tags | CPython 3.13 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
3dff7272ac0d009eb7ba50fdf94cef570d962994dd8d06c04701d9d0d1dbeed5
|
|
BLAKE2b-256 checksum How to use checksums |
405fa0fc9543346440876b944e522ccd3ca43804cf461679ccaa955d95f45bb4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 8.4 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
8ac0902ebedfa061866720c4fe660d80cfb32664786cdfd55b0917cfca939bad
|
|
BLAKE2b-256 checksum How to use checksums |
7f3a4bec67ec935f02426eafc8ef9dd6c45d54e5c5f57a6f14a7a2748a5c162a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 9.3 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
dc3502d348a5509ddc119d978fa858083f1e037a77a6162d64a432b44bd4f90c
|
|
BLAKE2b-256 checksum How to use checksums |
96f24fc43601f760851ed8ff68b22a61f0174737e1ed29e7ea0aa13d87aaa5be
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp312-cp312-manylinux_2_28_aarch64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp312-cp312-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 8.9 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
409d7c5ac9aaf4747982bb87cf9b8843ab77b690d94aa604e7d1c406f7ffd2be
|
|
BLAKE2b-256 checksum How to use checksums |
609b5aee6275ecb61ff881bf5ef95253f8db35c28ac52fc9db3dab50d49ba48d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp312-cp312-macosx_11_0_x86_64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp312-cp312-macosx_11_0_x86_64.whl |
|---|---|
| Size | 9.1 MB |
| Tags | CPython 3.12 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
213b5751289798705c3975c72cc96c98796bddb5c30acf3bfadc685e84c487d4
|
|
BLAKE2b-256 checksum How to use checksums |
e523707d1b0a65095e2d8966474bdf4eb0a01a8b92fea40e33e547cc05e01fbb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 8.4 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
673b18359eabc9cf6cad22f2b8954ecd272b79e9b36f0c819e21e119db28b86c
|
|
BLAKE2b-256 checksum How to use checksums |
f3cf6d26f5fa4dcd28842660ac7aefb6b95d7fd4af0fb02d8a00615b5355f4f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 9.2 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
2babd99a8708c03c028d16d7c05baa450dd2b99fc193f8d773d2199ec3d97acc
|
|
BLAKE2b-256 checksum How to use checksums |
09d2849ffff40785753f86a3e0f078c35afe234cd953645a209d1fc64e654e3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp311-cp311-manylinux_2_28_aarch64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp311-cp311-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 8.9 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
1b56c3c075804ed795207fb27c2c269b407e3d7f25a3d120596b44acaeb6373e
|
|
BLAKE2b-256 checksum How to use checksums |
2e307c4d819204e3961ffda2d687fd8ace14314d5b8a44d715be184316d94635
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp311-cp311-macosx_11_0_x86_64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp311-cp311-macosx_11_0_x86_64.whl |
|---|---|
| Size | 9.1 MB |
| Tags | CPython 3.11 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
86e44b7eaab55aea1ee74fc7f17cd01f0f8c88c977a21c592ec0993448ef2f3d
|
|
BLAKE2b-256 checksum How to use checksums |
7363b09edd6651d16a30ae8ec7b62b1c1bea6da5d1fc86b9ad5ba188181714e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 8.4 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
22dbe65192d3ca6e02f1022e149fb6f9e040266056d9dde85a0e869d531db953
|
|
BLAKE2b-256 checksum How to use checksums |
127cda90cdfa8b9628583757407655e49a9883016f43399cd700631a31044b28
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp310-cp310-manylinux_2_28_x86_64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp310-cp310-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 9.2 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
5852210202d1f3a875dd80754d4f52c1350f0ead97bad799dbaf2761db7db4aa
|
|
BLAKE2b-256 checksum How to use checksums |
174d3b7f585c3698237c21c640bc439c5712845f811b436dd295c245ac665113
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp310-cp310-manylinux_2_28_aarch64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp310-cp310-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 8.9 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
00a9d29ec78afab763e94d957ed5505004864d812f928a531740614d4e23c43a
|
|
BLAKE2b-256 checksum How to use checksums |
60e84006d04c72b68fde03574e95d24a3a7bc81a81c413a5a1e7b86faae31d92
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp310-cp310-macosx_11_0_x86_64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp310-cp310-macosx_11_0_x86_64.whl |
|---|---|
| Size | 9.1 MB |
| Tags | CPython 3.10 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
679942b124f0534987263ecb4de3d1205374909336de00a669976dffc401e110
|
|
BLAKE2b-256 checksum How to use checksums |
aae6f1f384f180f0d380965d15b2b2d9536db09c91b7743d1c4afeb6b48c6794
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Release files / confluent_kafka-4.4.0b1.dev4-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | confluent_kafka-4.4.0b1.dev4-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 8.4 MB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
041f5700a463127cdbd607a18aa02dc12cf30a1a399b2b061fc2eb0247a519fc
|
|
BLAKE2b-256 checksum How to use checksums |
2a0dcee30ac6c3965a0340784cf2ffe20dbd6898644d9e8bfb4d47d0dd50da3a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.22
|
Security for confluent-kafka 4.4.0b1.dev4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.