This release is a pre-release and may not be stable for production use.
apache-iggy
Apache Iggy is the persistent message streaming platform written in Rust, supporting QUIC, TCP and HTTP transport protocols, capable of processing millions of messages per second.
Installation
Basic Installation
# Using uv in an existing project
uv add apache-iggy
# Using pip
python3 -m venv .venv
source .venv/bin/activate
pip install apache-iggy
Prerequisites
- Python 3.11+
Published wheels include the Rust extension; installing a wheel does not require Rust. Building from source and running the development checks below also requires:
- Rust toolchain:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh uv:curl -LsSf https://astral.sh/uv/install.sh | sh- All checks tooling from CONTRIBUTING.md.
- Docker
Use an SDK release compatible with your server. For unreleased changes, build the SDK and server from the same source checkout.
Local Development
IMPORTANT: All commands are supposed to be ran from foreign/python unless it's specified to run in repository's root folder.
-
Build a project for development
With
uv:# Create a venv uv venv # Sync the environment without updating it uv sync --frozen --all-extras --no-install-project # Build the project -- this builds the rust extension into the venv (debug profile) - re-run after any rust change uv run --no-sync maturin develop
With
pip:# Create a venv python3 -m venv .venv # Activate the venv source .venv/bin/activate # Install the dependencies pip install -e ".[all]" # Build the project -- this builds the rust extension into the venv (debug profile) - re-run after any rust change maturin develop
-
Run the server to be able to run the tests (this blocks the terminal - run steps 3-5 in a separate one).
--freshdeleteslocal_data/on every run - drop it if you have existing data you want to keep.# run from the repository's root directory cargo run --bin iggy-server -- --with-default-root-credentials --fresh
-
Run the tests
uv:uv run --no-sync pytest tests/ -v
pip:pytest tests/ -v # make sure iggy-server is running and the venv is activated
-
To update the stubs, after changing the pyo3 API surface, use
# run from foreign/python cargo run --bin stub_gen
-
Before committing, test the pre-commit and pre-push hooks.
prekonly inspects staged content, so stage your work first:git add -A prek run # runs pre-commit hooks prek run --hook-stage pre-push # if a hook modifies files, re-run `git add -A` and `prek run`.
These are some of the essential commands prek is running, so it's recommended to run them manually before running prek / committing / pushing. This list is not exhaustive and other hook failures are possible.
uv run --no-sync ruff format .
uv run --no-sync ruff check --fix .
cargo fmt --manifest-path Cargo.toml
cargo clippy --manifest-path Cargo.toml --all-targets --all-features -- -D warnings
# run from the repository's root directory ./scripts/ci/markdownlint.sh --fix foreign/python/README.md # read the diff after applying this, sometimes it gives unwanted results, e.g. messing up enumerations
Client Configuration
IggyClient takes a server address, a TcpConfig, a QuicConfig, an
HttpConfig, or a WebSocketConfig:
import asyncio
from datetime import timedelta
from apache_iggy import AutoLogin, IggyClient, TcpConfig, TcpReconnectionConfig
async def main():
client = IggyClient(
TcpConfig(
server_address="127.0.0.1:8090",
auto_login=AutoLogin.username_password("iggy", "iggy"),
reconnection=TcpReconnectionConfig(
enabled=True,
max_retries=10,
interval=timedelta(seconds=2),
reestablish_after=timedelta(seconds=30),
),
heartbeat_interval=timedelta(seconds=5),
# tls_enabled=True,
# tls_domain="localhost",
# tls_ca_file="../../core/certs/iggy_ca_cert.pem",
# tls_validate_certificate=True,
# nodelay=True,
)
)
await client.connect()
asyncio.run(main())
IggyClient(...) also accepts a QuicConfig for the QUIC transport, an
HttpConfig for the HTTP transport, and a WebSocketConfig for the WebSocket
transport. examples/python/getting-started/producer.py shows each swap in
context.
Established binary sessions survive transport loss. Password/PAT changes and PAT expiry do not end these sessions; logout, session lease expiry and account deactivation do. Reconnection binds the retained session before attempting a fresh login.
HttpConfig differs from TCP in two ways. There is no reconnection policy and no
AutoLogin: connect() does not dial over HTTP, but it does start the
heartbeat that heartbeat_interval configures, so call it and then
login_user(...). And HTTP is single-consumer only: the consumer_group(...)
path always fails with Feature is unavailable, at the join by default and at
the returned consumer's first poll if you disable auto_join_consumer_group,
so disabling it is not a workaround. A direct
poll_messages(consumer=Consumer.Group(...)) fails the same way unless you
pass an explicit partition_id, and with one it degrades silently instead: the
consumer kind is not carried on the HTTP wire, so the group is served as an
ordinary consumer named after it, with no membership or partition assignment
behind it. Use Consumer.Single(...) with poll_messages(...). Delivery is
also at-least-once: the default retries=3 replays the full request body, so a
send whose response was lost is applied twice, and only retries=0 opts out.
import asyncio
from apache_iggy import HttpConfig, IggyClient
async def main():
client = IggyClient(HttpConfig(api_url="http://127.0.0.1:3000"))
await client.connect()
await client.login_user("iggy", "iggy")
asyncio.run(main())
Stream, Topic and User Options
create_stream, create_topic and create_user take typed options: StreamOptions, TopicOptions and UserOptions. Updates are patches: update_stream, update_topic and update_user change only the fields you pass, and reset returns keys to their server defaults.
A topic's message_expiry and max_topic_size are the only resettable keys. Settings such as the compression algorithm are fixed at creation and have no update field. describe_options("stream" | "topic" | "user") reports which keys are updatable, resettable, secret or read-only.
The update methods also take options and raw_reset, which send keys and reset names verbatim, so a key newer than this build can be set or reset. The server decides those. A refused option raises OptionError, a RuntimeError whose code and kind name the refusal, for example 4103 and "option_not_updatable", the same on every transport.
Root user rename and status refusals also raise OptionError with code 4108 and kind "cannot_modify_root_user".
import asyncio
import secrets
from datetime import timedelta
from apache_iggy import (
IggyClient,
IggyExpiry,
OptionKey,
StreamOptions,
TopicOptions,
encryption_key_fingerprint,
)
async def main():
client = IggyClient.from_connection_string("iggy+tcp://iggy:iggy@127.0.0.1:8090")
await client.connect()
key = secrets.token_bytes(32)
stream = await client.create_stream("orders", StreamOptions(encryption_key=key))
assert stream.encryption_key_source == "stream"
assert stream.encryption_key_fingerprint == encryption_key_fingerprint(key)
await client.create_topic(
"orders",
"created",
TopicOptions(
partitions_count=3,
compression_algorithm="gzip",
message_expiry=IggyExpiry.ExpireDuration(timedelta(days=7)),
),
)
await client.update_topic(
"orders",
"created",
message_expiry=IggyExpiry.ExpireDuration(timedelta(days=1)),
reset=[OptionKey.MaxTopicSize],
)
await client.update_stream("orders", name="orders-v2")
asyncio.run(main())
A stream encryption key must be 32 random bytes, given as bytes or as their canonical base64 text. The key travels inside the create request over whatever transport the client uses, so protecting it in transit with TLS is your responsibility.
The server never returns the key, only encryption_key_source, encryption_key_fingerprint and encryption_kek_fingerprints. Without a key, a server with encryption enabled generates one for the stream and reports the source "server". An invalid key raises ValueError before anything is sent, and no repr or error message contains it.
High-Level Producer
The Python high-level producer API is a port of the Rust high-level producer API. For detailed producer semantics and configuration guidance, see the Rust high-level SDK documentation.
Use IggyClient.producer() when an application repeatedly publishes to one
stream and topic. Producer creation is asynchronous because it initializes the
destination before returning. By default, it creates a missing stream and topic,
uses balanced partitioning and sends directly in batches of up to 1,000 messages.
The binary driver retries each chunk within one 30-second deadline, preserving
its request identity. The producer adds no retry under a new identity.
The default mode is direct. Pass BackgroundProducerConfig to queue sends on
background workers instead.
import asyncio
from datetime import timedelta
from apache_iggy import DirectProducerConfig, IggyClient, Partitioning, SendMessage
async def main():
client = IggyClient.from_connection_string("iggy+tcp://iggy:iggy@127.0.0.1:8090")
await client.connect()
producer = await client.producer(
"orders",
"created",
partitioning=Partitioning.balanced(),
mode=DirectProducerConfig(
batch_length=500,
linger_time=timedelta(milliseconds=5),
),
create_stream_if_not_exists=True,
create_topic_if_not_exists=True,
topic_partitions_count=3,
topic_message_expiry=None,
topic_max_size=None,
)
async with producer:
await producer.send_one(SendMessage("order-1"))
response = await producer.send([SendMessage("order-2"), SendMessage("order-3")])
print(f"Received {len(response.confirmations)} partition confirmations")
asyncio.run(main())
The producer is bound to the stream and topic passed to producer(). Use
send_with_partitioning(messages, partitioning) to override its partitioning
strategy for one call, or send_to(stream, topic, messages, partitioning) to
send to another existing destination. send_to() does not create or initialize
that destination.
Binary transports retain the original request identity after an uncertain exchange. Persisted sends also provide crash-safe retry receipts; weaker topic policies can lose data and receipts on a crash. HTTP NoAck confirms dispatch only. An application resend creates a new request and can duplicate messages.
Mutation retries belong to the shared client driver. The producer no longer accepts
send_retries or send_retry_interval; passing either raises TypeError. HTTP
keeps its configured HTTP retry policy and does not support operation recovery.
HTTP 503 relay_refused follows that policy; the Rust-backed HTTP retry schedule
does not use the server's Retry-After header.
On a multi-node cluster, an HTTP call often reaches a node that is not the
partition primary. For message sends, polls and consumer offset calls, that
node relays the call to the primary. The relay needs identical http.jwt
secrets or cluster.auth on every node. Without that key material, these calls
answer 503 with code 58. See
HTTP routing and backpressure.
Receipt access follows the server's session and revocation policy. An unresolved operation cannot recover its receipt after its original session ends, even after a new login or account reactivation. A fresh send can duplicate that operation.
Each node counts the messages in its stream, topic and system stats. After a
successful send, a node that is not the partition primary shows the new count
only after the next prepare or commit broadcast. When no other write follows,
this delay is at most cluster.commit_broadcast_interval (500 ms by default).
See metadata freshness and counters.
Every error that the Rust SDK reports reaches Python as IggyError, a RuntimeError subclass. Its code is the numeric Iggy error code, the same code that the other SDKs report, and its message is the SDK's error text, so branch on code rather than on the message. Three codes tell what happened to a request that did not complete:
- 58 (
TransientNotAccepted): the server did not admit the request, so a retry is safe. - 57 (
TransientNotCommitted): the outcome is unknown, and the server possibly applied the write. Read the state before you write it again. - 40 (
Unauthenticated): the request needs a session. Sign in, then retry.
OptionError, PendingOperationError and ProducerSendError are IggyError subclasses. An error that the binding raises itself, such as a ValueError, a TypeError, or a plain RuntimeError for an invalid argument or a shut-down producer, is not an IggyError and carries no code.
PendingOperationError exposes the exact integer operation_id, the numeric
code, and kind ("uncertain", "lane_blocked", or "not_retained"). On the
same live client, await client.resolve_operation(operation_id, timeout=timedelta(seconds=30)) replays the original operation. A committed
business rejection raises its original error and releases the lane; uncertainty
keeps the operation retained. The default timeout is 30 seconds; it must be a
positive timedelta. await client.abandon_operation(operation_id) releases the
lane without establishing whether the operation committed. A session reset
forgets retained operations, so recovery must use the original session.
The client keeps the proved outcomes of its last max_operations replays, also
across a session reset. A later resolve_operation of a proved operation
returns the same outcome without a request.
TcpConfig, QuicConfig, and WebSocketConfig accept pending_operations= PendingOperationsConfig(max_operations=256, max_bytes=64 * 1024 * 1024). These
client-wide defaults bound active and retained mutations across every partition.
Admission waits before allocating a request ID. Queued writer frames keep their
bytes charged until their last reference is released, even after abandonment.
TCP, QUIC and WebSocket connection strings accept max_pending_operations and
max_pending_operation_bytes as positive integers, for example
iggy+tcp://iggy:iggy@localhost:8090?max_pending_operations=256&max_pending_operation_bytes=67108864.
A failed direct send raises ProducerSendError, an IggyError with code 4056 (ProducerSendFailed). Its cause property contains the underlying error text, and its __cause__ is the IggyError that ended the send, a structured PendingOperationError when applicable.
The optional operation_id of a ProducerSendError identifies the retained send to resolve or abandon. Its
committed property contains confirmations from completed chunks, and failed
contains the remaining messages without usable confirmations. For an uncertain
cause, the first uncertain messages of failed form one chunk that may already
have committed. Resolve its operation_id without submitting that chunk as a new
send. A cause with code 57 retains no operation, yet its first uncertain messages may also have committed. For any other cause, uncertain is zero. For lane_blocked,
none of failed was sent: the ID names an earlier operation to resolve before
retrying. Abandonment or a session reset discards retained results, and
not_retained does not prove non-commit. Resubmitting an uncertain chunk can
duplicate messages. Before any safe resubmission, restore payloads changed by
encryption.
Background Mode
A successful background send means the dispatcher accepted the messages. The
worker writes them later, so all four send methods return a
SendMessagesResponse with an empty confirmations list. It does not mean the
server has committed the messages.
from datetime import timedelta
from apache_iggy import (
BackgroundProducerConfig,
BackpressureMode,
ProducerSharding,
SendMessage,
)
producer = await client.producer(
"orders",
"created",
mode=BackgroundProducerConfig(
num_shards=4,
linger_time=timedelta(milliseconds=10),
batch_size=1024 * 1024,
batch_length=100,
max_buffer_size=32 * 1024 * 1024,
failure_mode=BackpressureMode.block_with_timeout(timedelta(seconds=1)),
max_in_flight=4,
sharding=ProducerSharding.ORDERED,
),
)
async with producer:
accepted = await producer.send_one(SendMessage("order-1"))
assert accepted.confirmations == []
Each shard flushes when any configured condition is met: batch_length queued
send calls, batch_size reported bytes, or linger_time since the first send
entered an empty buffer. batch_length counts calls, not individual messages.
Zero disables either batching threshold, while a zero linger flushes as soon as
the worker receives a send.
ProducerSharding.ORDERED hashes the stream/topic destination so its sends use
one sequential worker and retain dispatch order. ProducerSharding.BALANCED
assigns consecutive sends round-robin across the shards for throughput; ordering
for one destination is not guaranteed.
max_buffer_size bounds bytes queued or in flight across the whole producer.
When it is full, BackpressureMode.block() waits indefinitely,
block_with_timeout(duration) waits up to that duration, and
fail_immediately() raises RuntimeError without accepting the batch. A single
batch larger than the whole budget always fails. A zero byte budget is
unlimited. max_in_flight separately bounds concurrent write requests across
all shards; zero uses the runtime maximum.
Binary driver retries and transport reconnection happen inside background workers. The Python API does not currently expose a background error callback, so a write that fails at its operation deadline is logged by the Rust SDK and its messages are dropped from the worker queue. An uncertain chunk remains retained by the client for recovery; it may already have committed.
See the complete runnable
background_producer.py
example for all background configuration fields and deterministic shutdown.
Cleanup is asynchronous and must be explicit. Prefer async with, as above, so
shutdown runs on both successful and exceptional exits. Otherwise, call
await producer.shutdown() in a finally block. Shutdown waits for active
sends, is safe to call more than once, and rejects later sends with
RuntimeError. In background mode it also drains every queue and flushes all
accepted messages before returning. Object destruction does not perform
asynchronous cleanup; dropping a background producer without shutdown() can
lose buffered messages.
Examples
Refer to the examples/python/ directory for usage examples.
Contributing
See CONTRIBUTING.md for contribution guidelines.
License
Licensed under the Apache License 2.0. See LICENSE for details.
Metadata
Release files for apache-iggy 0.9.1.dev2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| apache_iggy-0.9.1.dev2.tar.gz | 1.0 MB | With provenance | Details for apache_iggy-0.9.1.dev2.tar.gz |
Built distributions (wheels)
Total release size: 152.1 MB
Release files / apache_iggy-0.9.1.dev2.tar.gz
| Download URL | apache_iggy-0.9.1.dev2.tar.gz |
|---|---|
| Size | 1.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
711d4b6b361fc28a04ced9ca11cbb88eb3c26fd8a0c2a0cbaba37fc7697e7aca
|
|
BLAKE2b-256 checksum How to use checksums |
e8f443e3392f874c27413b4acdb97c8a9d65e9acf7cb7d7c207ead25ffebef71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp313-cp313-win_amd64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 6.3 MB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
e208d99ef7f3e37ffe7bea3f048f05bbd1c188e2f452956e8f11c21a95b13d35
|
|
BLAKE2b-256 checksum How to use checksums |
fb787a22ca8519464d9ff0d502ae7c9fc74d946f0e26f4f910d41bbfce5dd019
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp313-cp313-musllinux_1_2_x86_64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp313-cp313-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 7.9 MB |
| Tags | CPython 3.13 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
82b3d2e5e5aa8509190fd5a093323d91d0cab6c441ecf58af2a0130560e03f62
|
|
BLAKE2b-256 checksum How to use checksums |
129687bca621caa5220dba30b8dc491e19f762248e8cc497b6fa81b1cb19cac6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp313-cp313-musllinux_1_2_aarch64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp313-cp313-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.13 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
bde69b383e7accfe2e520c9f50d900a095665c5c666e69b1a377f73813d43c85
|
|
BLAKE2b-256 checksum How to use checksums |
17c07c39ddf603c6d50e39f8e7cd4dee2d7f7c917736cb300ccc39838a658850
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp313-cp313-manylinux_2_34_x86_64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp313-cp313-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 7.3 MB |
| Tags | CPython 3.13 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
653207195b333b3cfaf2082842e9d4f67967adcc2b6da9f70127bed1bb8e72a2
|
|
BLAKE2b-256 checksum How to use checksums |
62d75d43451ef491b712490e17ffb0f44a3cf811558e6b0f2c608a61b846f897
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 7.6 MB |
| Tags | CPython 3.13 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
35c96b1f6debb94f96e229ab264acfea7f2faba5aadf6bc1896067209c438ba1
|
|
BLAKE2b-256 checksum How to use checksums |
92a22a4ade66ef6eb4962cf9c81a0745d28e6d1feef6e77353a6190ddc055262
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 6.6 MB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
872f0c0ecbe40aac6e3ec606b6bc29b09c057e470e66fdf5a9b618cab729fd3d
|
|
BLAKE2b-256 checksum How to use checksums |
a8994fdccf19f34d7adcb2f1b59cd06da26d4b3e6caa85e265a75289cc903852
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp313-cp313-macosx_10_12_x86_64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp313-cp313-macosx_10_12_x86_64.whl |
|---|---|
| Size | 6.9 MB |
| Tags | CPython 3.13 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
c25b4112ba4249a17f57cc87bb9b9e8190fca7131b3f1cb0cd02bd70650aaa69
|
|
BLAKE2b-256 checksum How to use checksums |
19e3f0c2222a6eadf957131825f1c69dd14a5e7e853cef2c47c4f66d249a92c4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp312-cp312-win_amd64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 6.3 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
63c09497876b0417ecb38772bf7dbe87de27e407b0d356fe7d4aa57a71a21bd6
|
|
BLAKE2b-256 checksum How to use checksums |
3235f21bc70f36aa59b0c7e41b2fe11c805fa106552237192b5e427444fac462
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp312-cp312-musllinux_1_2_x86_64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp312-cp312-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 7.9 MB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
2a74ef41bafd243a4c6e0a132a3dce8df1861900d2bce43d18e4af598a4560bf
|
|
BLAKE2b-256 checksum How to use checksums |
454b0c0ad5729e33d7cde52935916aa08401b6c201f0ff0d5f44775cd83f40ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp312-cp312-musllinux_1_2_aarch64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp312-cp312-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 7.7 MB |
| Tags | CPython 3.12 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
bc73087fdc69e90a7f072272bfd696b7708996394b223cf8b16e1dcabafc457f
|
|
BLAKE2b-256 checksum How to use checksums |
6f7e8f27f6128ead10d92205dd39ec1a6355974b628d6c240f984f937b37f172
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp312-cp312-manylinux_2_34_x86_64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp312-cp312-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 7.3 MB |
| Tags | CPython 3.12 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
59af3b9e092d89bc0eb8fc4ba39318f2a69f9097098b86b2b830bd0b54b5b54c
|
|
BLAKE2b-256 checksum How to use checksums |
eb29fa3fe62ea2320d4007d5daff4b4c3d7129ddfbe5d8b76e1452eb29adaa26
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 7.6 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
11e22ef43fd4a0827c543507a00dba215b211477fbd453827c3a3767046f8c50
|
|
BLAKE2b-256 checksum How to use checksums |
5598c0b869776782043914a75a272df2d0d6674a15d9be1c572a7081025c4e4e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 6.6 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
70bda69daf436e9bcbc5b99db0fc55f2375b87febd98c13ef58a0db6b75c5c50
|
|
BLAKE2b-256 checksum How to use checksums |
d5ab3d4eaf8b08ac7463c7973d3c915d8402b5e3cc94c84da2def60969d1a2a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp312-cp312-macosx_10_12_x86_64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp312-cp312-macosx_10_12_x86_64.whl |
|---|---|
| Size | 6.9 MB |
| Tags | CPython 3.12 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
bd8fa2c73db9d32042f4ab44d969bb26d4b4e645f130d2b184dcc26fc1bf9b0d
|
|
BLAKE2b-256 checksum How to use checksums |
346f72a3bb2342d223515e499c242d6a4b389d5a3499411e22a60ad5d05d7afb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp311-cp311-win_amd64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 6.3 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
5372a6f90a8d4ea5bce9f59cb8f645b1eeacde463ee1fd52720f8e094fe31b31
|
|
BLAKE2b-256 checksum How to use checksums |
12104f68db9dc530a5be3170e21fd821e718ed6e7afddf96b0fef6ed3239f266
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp311-cp311-musllinux_1_2_x86_64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp311-cp311-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 7.9 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
b7a88e70f2c167502535e0d0f6738d480a608b4e44ea71dff77753a4bf73faff
|
|
BLAKE2b-256 checksum How to use checksums |
8ef9767a2aa987cd4c7e13f25966d413a0967c65538dc480056dbabfde27b8d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp311-cp311-musllinux_1_2_aarch64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp311-cp311-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 7.8 MB |
| Tags | CPython 3.11 Linux musl 1.2+ ARM64 |
|
SHA-256 checksum How to use checksums |
d526bd9fd70dd4bab97f79d62ba594f75086dafa2c84c1427f97babd545adc19
|
|
BLAKE2b-256 checksum How to use checksums |
0135145c0b5623e8d8ea79fb43b18677127c1929e6810cd15e4cc8600d0dc26f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp311-cp311-manylinux_2_34_x86_64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp311-cp311-manylinux_2_34_x86_64.whl |
|---|---|
| Size | 7.3 MB |
| Tags | CPython 3.11 Linux glibc 2.34+ x86-64 |
|
SHA-256 checksum How to use checksums |
07aef2db341a8c558e0d2b290ec73fd824394c3556b1c753b3af0d8b2a8b330f
|
|
BLAKE2b-256 checksum How to use checksums |
22a85db23af9a6823430c030b4ab17fe2ad3ffdffdd30bf5ab363383a3950880
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 7.6 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
db801e24c1921ef121cdce328da4a6b1d4955d67354984f33f9ebcd0d5b318b7
|
|
BLAKE2b-256 checksum How to use checksums |
253f3803cfa72dfa7967e9261cbea51e92d664e35009463ba256f60d42328566
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 6.6 MB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
515945ff82a4fb1651a954d3f8cfc577e1976bce3ae33cd62b811878736034ef
|
|
BLAKE2b-256 checksum How to use checksums |
b84ab12ee22e40a5f783522996a8c068dd880b085964501fe494d388f6751472
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logRelease files / apache_iggy-0.9.1.dev2-cp311-cp311-macosx_10_12_x86_64.whl
| Download URL | apache_iggy-0.9.1.dev2-cp311-cp311-macosx_10_12_x86_64.whl |
|---|---|
| Size | 6.9 MB |
| Tags | CPython 3.11 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
94d020b054408aebd61b75d8e41ab98d6adcf180c2ec8d84c2b572cee02a2a90
|
|
BLAKE2b-256 checksum How to use checksums |
04da3185bb534d76db8b9072a9ae53c8417ddbaa4ca5fe32edddbd218bb91176
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logSecurity for apache-iggy 0.9.1.dev2
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.
Full provenance
All 22 files in this release have been uploaded with provenance metadata.
Attestation for apache_iggy-0.9.1.dev2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.
Transparency logA 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.