Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Apache Iggy

apache-iggy

discord-badge

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.

  1. 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
    
  2. Run the server to be able to run the tests (this blocks the terminal - run steps 3-5 in a separate one). --fresh deletes local_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
    
  3. 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
    
  4. To update the stubs, after changing the pyo3 API surface, use

    # run from foreign/python
    cargo run --bin stub_gen
    
  5. Before committing, test the pre-commit and pre-push hooks. prek only 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)

Source distribution for apache-iggy 0.9.1.dev2
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)

Table of built distributions (wheels) for apache-iggy 0.9.1.dev2
File Actions
apache_iggy-0.9.1.dev2-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for apache_iggy-0.9.1.dev2-cp313-cp313-win_amd64.whl
apache_iggy-0.9.1.dev2-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details for apache_iggy-0.9.1.dev2-cp313-cp313-musllinux_1_2_x86_64.whl
apache_iggy-0.9.1.dev2-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details for apache_iggy-0.9.1.dev2-cp313-cp313-musllinux_1_2_aarch64.whl
apache_iggy-0.9.1.dev2-cp313-cp313-manylinux_2_34_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.34+ x86-64 Details for apache_iggy-0.9.1.dev2-cp313-cp313-manylinux_2_34_x86_64.whl
apache_iggy-0.9.1.dev2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details for apache_iggy-0.9.1.dev2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
apache_iggy-0.9.1.dev2-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for apache_iggy-0.9.1.dev2-cp313-cp313-macosx_11_0_arm64.whl
apache_iggy-0.9.1.dev2-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details for apache_iggy-0.9.1.dev2-cp313-cp313-macosx_10_12_x86_64.whl
apache_iggy-0.9.1.dev2-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for apache_iggy-0.9.1.dev2-cp312-cp312-win_amd64.whl
apache_iggy-0.9.1.dev2-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details for apache_iggy-0.9.1.dev2-cp312-cp312-musllinux_1_2_x86_64.whl
apache_iggy-0.9.1.dev2-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details for apache_iggy-0.9.1.dev2-cp312-cp312-musllinux_1_2_aarch64.whl
apache_iggy-0.9.1.dev2-cp312-cp312-manylinux_2_34_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ x86-64 Details for apache_iggy-0.9.1.dev2-cp312-cp312-manylinux_2_34_x86_64.whl
apache_iggy-0.9.1.dev2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details for apache_iggy-0.9.1.dev2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
apache_iggy-0.9.1.dev2-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for apache_iggy-0.9.1.dev2-cp312-cp312-macosx_11_0_arm64.whl
apache_iggy-0.9.1.dev2-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details for apache_iggy-0.9.1.dev2-cp312-cp312-macosx_10_12_x86_64.whl
apache_iggy-0.9.1.dev2-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for apache_iggy-0.9.1.dev2-cp311-cp311-win_amd64.whl
apache_iggy-0.9.1.dev2-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details for apache_iggy-0.9.1.dev2-cp311-cp311-musllinux_1_2_x86_64.whl
apache_iggy-0.9.1.dev2-cp311-cp311-musllinux_1_2_aarch64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ ARM64 Details for apache_iggy-0.9.1.dev2-cp311-cp311-musllinux_1_2_aarch64.whl
apache_iggy-0.9.1.dev2-cp311-cp311-manylinux_2_34_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.34+ x86-64 Details for apache_iggy-0.9.1.dev2-cp311-cp311-manylinux_2_34_x86_64.whl
apache_iggy-0.9.1.dev2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details for apache_iggy-0.9.1.dev2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
apache_iggy-0.9.1.dev2-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for apache_iggy-0.9.1.dev2-cp311-cp311-macosx_11_0_arm64.whl
apache_iggy-0.9.1.dev2-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details for apache_iggy-0.9.1.dev2-cp311-cp311-macosx_10_12_x86_64.whl

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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Release 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 log

Security 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.

Select from 22 files

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 log

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.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page