Skip to main content

Distributed task queue and workflow orchestration on S3

Project description

buquet - S3-Only Task Queue for Python

A distributed task queue that uses S3 as the only backend. No Redis, no Postgres, no RabbitMQ - just S3.

Installation

uv add buquet

Quick Start

Submit a Task

import asyncio
from buquet import connect

async def main():
    queue = await connect()

    task = await queue.submit("send_email", {
        "to": "user@example.com",
        "subject": "Hello!",
        "body": "Welcome to buquet!"
    })

    print(f"Submitted task: {task.id}")

asyncio.run(main())

Run a Worker

import asyncio
from buquet import connect, Worker, WorkerRunOptions

async def main():
    queue = await connect()
    worker = Worker(queue, "worker-1", ["0", "1", "2", "3"])

    @worker.task("send_email")
    async def handle_email(input):
        print(f"Sending email to {input['to']}")
        # Your email logic here
        return {"sent": True, "to": input["to"]}

    await worker.run()

asyncio.run(main())

Custom run options:

opts = WorkerRunOptions(
    poll_interval_ms=500,
    with_monitor=True,
    monitor_check_interval_s=15,
)
await worker.run(opts)

By default, run() starts an embedded timeout monitor. If you run a separate buquet monitor process, disable it with WorkerRunOptions(with_monitor=False).

Configuration

buquet reads configuration from environment variables:

Variable Required Description
S3_ENDPOINT No S3-compatible endpoint URL (for LocalStack, MinIO, etc.)
S3_BUCKET Yes Bucket name for task storage
S3_REGION Yes AWS region
AWS_ACCESS_KEY_ID Yes S3 access key
AWS_SECRET_ACCESS_KEY Yes S3 secret key

You can also pass configuration directly:

queue = await connect(
    endpoint="http://localhost:4566",  # LocalStack
    bucket="buquet-dev",
    region="us-east-1"
)

API Reference

connect(endpoint=None, bucket=None, region=None) -> Queue

Creates a connection to the task queue.

Queue

Task methods:

  • submit(task_type, input, timeout_seconds=300, max_retries=3, retry_policy=None, schedule_at=None) -> Task
  • get(task_id) -> Task | None
  • list(shard, status=None, limit=100) -> list[Task]
  • list_ready(shard, limit=100) -> list[str]
  • get_history(task_id) -> list[Task]
  • now() -> str # RFC 3339 server time

Schedule methods:

  • create_schedule(id, task_type, input, cron, timeout_seconds=None, max_retries=None) -> Schedule
  • get_schedule(id) -> Schedule | None
  • list_schedules() -> list[Schedule]
  • delete_schedule(id)
  • enable_schedule(id)
  • disable_schedule(id)
  • trigger_schedule(id) -> Task
  • get_schedule_last_run(id) -> ScheduleLastRun | None

Worker

  • Worker(queue, worker_id, shards)
  • @worker.task(task_type) - Decorator to register a task handler
  • run(options=None) - Run the worker loop (monitor enabled by default). Customize via WorkerRunOptions.

Task

Properties:

  • id - Unique task identifier (UUID)
  • task_type - Type of task (e.g., "send_email")
  • status - Current status (pending, running, completed, failed)
  • input - Input data (dict)
  • output - Output data after completion (dict or None)
  • created_at - Creation timestamp
  • retry_count - Number of retries so far
  • last_error - Last error message (if any)

Note: time-dependent checks require an authoritative time. Use queue.now() and the Task.*_at() helpers.

Example:

now = await queue.now()
if task.is_available_at(now):
    ...

TaskStatus

Enum with values:

  • TaskStatus.Pending
  • TaskStatus.Running
  • TaskStatus.Completed
  • TaskStatus.Failed
  • TaskStatus.Archived

Schedule

A recurring schedule definition. Properties:

  • id - Unique schedule identifier
  • task_type - Type of task to submit
  • input - Input data for tasks (dict)
  • cron - Cron expression (5-field format)
  • enabled - Whether the schedule is active
  • timeout_seconds - Task timeout (optional)
  • max_retries - Task max retries (optional)
  • created_at - Creation timestamp
  • updated_at - Last update timestamp

ScheduleLastRun

Last run information for a schedule. Properties:

  • schedule_id - The schedule ID
  • last_run_at - When the schedule was last triggered
  • last_task_id - Task ID of the last submitted task
  • next_run_at - Next scheduled run time

RetryPolicy

Configure exponential backoff:

from buquet import RetryPolicy

policy = RetryPolicy(
    initial_interval_ms=1000,  # Start with 1s delay
    max_interval_ms=60000,     # Cap at 60s
    multiplier=2.0,            # Double each time
    jitter_percent=0.25        # Add 25% randomness
)

task = await queue.submit("task", data, retry_policy=policy)

Scheduling

buquet supports scheduling tasks to run at a future time.

One-Shot Scheduling

from datetime import datetime, timedelta

# Schedule a task to run in 1 hour
task = await queue.submit(
    "send_reminder",
    {"user_id": "123"},
    schedule_at=datetime.now() + timedelta(hours=1),
)
print(f"Task {task.id} scheduled for {task.available_at}")

# Schedule for a specific time
task = await queue.submit(
    "generate_report",
    {"type": "daily"},
    schedule_at=datetime(2026, 1, 28, 9, 0, 0),
)

The task won't be picked up by workers until the scheduled time.

Recurring Schedules

Create and manage cron-based recurring schedules:

# Create a schedule (runs every day at 9am)
schedule = await queue.create_schedule(
    "daily-report",
    "generate_report",
    {"type": "daily"},
    "0 9 * * *"
)

# List all schedules
schedules = await queue.list_schedules()
for s in schedules:
    print(f"{s.id}: {s.cron} (enabled={s.enabled})")

# Get a specific schedule
schedule = await queue.get_schedule("daily-report")

# Enable/disable
await queue.disable_schedule("daily-report")
await queue.enable_schedule("daily-report")

# Trigger immediately (outside normal schedule)
task = await queue.trigger_schedule("daily-report")

# Delete
await queue.delete_schedule("daily-report")

Run the scheduler daemon via CLI:

buquet schedule run --interval 60

Error Handling

Raise RetryableError to retry a task:

from buquet import RetryableError, PermanentError

@worker.task("fetch_data")
async def fetch_data(input):
    try:
        response = await http_client.get(input["url"])
        return {"data": response.json()}
    except ConnectionError as e:
        # Will be retried
        raise RetryableError(f"Connection failed: {e}")
    except ValueError as e:
        # Will NOT be retried
        raise PermanentError(f"Invalid data: {e}")

Local Development

See the examples directory for complete working examples.

Quick Start with Docker

# Start LocalStack (S3-compatible storage)
docker compose up -d

# Run Python commands from the buquet crate directory
cd crates/buquet

# Run the example worker
source examples/.env.example
uv run python examples/worker.py

# In another terminal, submit tasks
uv run python examples/producer.py

Architecture

┌─────────────────┐     ┌─────────────────┐
│    Producer     │     │     Worker      │
│  (your app)     │     │  (your app)     │
└────────┬────────┘     └────────┬────────┘
         │                       │
         │  submit()             │  poll/claim/complete
         │                       │
         ▼                       ▼
┌─────────────────────────────────────────┐
│                   S3                     │
│  (AWS S3 / LocalStack / MinIO / R2)     │
└─────────────────────────────────────────┘

Tasks are stored as JSON objects in S3 with conditional writes (ETags) for consistency.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

buquet-0.1.0.tar.gz (462.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

buquet-0.1.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl (15.0 MB view details)

Uploaded PyPymusllinux: musl 1.2+ x86-64

buquet-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.5 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

buquet-0.1.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.6 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

buquet-0.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl (15.0 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

buquet-0.1.0-cp313-cp313-win_amd64.whl (12.0 MB view details)

Uploaded CPython 3.13Windows x86-64

buquet-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl (15.0 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

buquet-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

buquet-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

buquet-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (12.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

buquet-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl (13.7 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

buquet-0.1.0-cp312-cp312-win_amd64.whl (12.0 MB view details)

Uploaded CPython 3.12Windows x86-64

buquet-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (15.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

buquet-0.1.0-cp312-cp312-musllinux_1_2_aarch64.whl (15.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

buquet-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

buquet-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

buquet-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (12.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

buquet-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl (13.7 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

buquet-0.1.0-cp311-cp311-win_amd64.whl (12.0 MB view details)

Uploaded CPython 3.11Windows x86-64

buquet-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (15.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

buquet-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (14.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

buquet-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

buquet-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (12.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

buquet-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl (13.6 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

Details for the file buquet-0.1.0.tar.gz.

File metadata

  • Download URL: buquet-0.1.0.tar.gz
  • Upload date:
  • Size: 462.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for buquet-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3b73706169774850a9e62fbfa7f2213d188322baf5fa8ce25efc7ef4c0f099b7
MD5 06f03309a39d076e530a720c6a7ba875
BLAKE2b-256 0b2f053ace8912e64487a21f9488d84604587c1c7703b0e28f31ed5481ae929a

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0.tar.gz:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4cdbcddd58b6ca20a33fef575597b23e0f31b7d6f44f62a10e8c7fa831e498a1
MD5 3ea645d65acc7c669c02e1dc29942af9
BLAKE2b-256 cd324533c851a3bccd5a13117cc499878bb81afa224cccde8662c7b4d1a40b49

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6ecfee8542abef6e5e687b2c868e90fa7189d2b40d55fd08d5a77bd0749e23f8
MD5 1c8d775d838978c6f70dd6fb839b37d5
BLAKE2b-256 6ade434e79c8fb797d217e0e7a40cee99ff8430b60bdd3deb04754a7e6442733

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a1a4e027135cc28232f07e6ba63ef78341e621930be2f0a460387d5fd6385637
MD5 f6166183c78f7dde8587ac082b1be94d
BLAKE2b-256 d163ba9e961f2064ad2164ca4cba625cd5f464c8d02be9232b58772d0ea18045

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2b1336a1c377670194a1cec28f1ec90baa0106c69681629ad2dbffc6c209362e
MD5 0f982cfdbfb48932906dd6cde596a689
BLAKE2b-256 ee0731ab709102019ec4eb7d472edd46a8dcd51cdc4420ab6bfe0d7aa0d2935b

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: buquet-0.1.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 12.0 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for buquet-0.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 af423693ec231900b904e4ca2fcaea24c9df5f58d71e93c56987c53ae4778ed2
MD5 99670a6c0c0fdd9abf05d7c0d1ea8b70
BLAKE2b-256 1b25eeea3025ca8828188e89976de64a6c0294de8a525f40b425a4b0381bc362

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c2829f69dca29bf1fce3b7839b87d64f6e285a5c2666d7808678f4bb801a3d7c
MD5 3a7e222bdbf1ddd7ef7f2236918c50a7
BLAKE2b-256 7724a9ba0129ef16d3ed95a367c2f113c4582a97bda3cd33a27b241edfb14dbc

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a628538e51c9feaaff9937656918b1ee1ba69b9dc167380c513b519af061f0e4
MD5 7940e04ee2480befe3f58244a8c164db
BLAKE2b-256 e6c83f5bad8dc554b3d3713ed3cefa791ab2fc9f75c1055e02a4f84013cda1cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a4974fea2272217f32cf3daf7eada49797ca9be6a6e6bb12564282e96a98a40a
MD5 fb5d58aeef0eb32332f77fad55fbfecc
BLAKE2b-256 a3c43260315aa54f818f8b1d09dc8cf585061bae91e1056a7979986209ea1082

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c7fd05f4e8384778720d15161ce7cef1506505ee879cd779c82ad6c5aa4f3196
MD5 ecdbb2f86e131743e78a8f5210502a0d
BLAKE2b-256 d9e9c88d29338eb0a53dad1f956944f3670f90b247165f16352a89b11466185c

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 cd0ce53c835f49a26487b23d17e72586b1bdcd26e5874da7aaeff438f42855b9
MD5 6d8df38dd3538c445e2972f8f91a7ad1
BLAKE2b-256 5a71f840ba1470b45f18ccaac548b3bb6e0b9943115d84f2b888e472c45ab495

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: buquet-0.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 12.0 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for buquet-0.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6870ba5a6df044ca16e4eeaebb738f99cbc4e54bdc848869c3ef9ff4a0fc6b92
MD5 6b71726a29e02f3bdf5118d243eef7ce
BLAKE2b-256 a69c5df696e3fb16c53878b3cfd90957a2cc9b886e44a15cdedd0b1e4ceb9411

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1874e85f9ce5d72787bb5f53e9379bfe2d0765d9dd64d5cb37b1e377376c5672
MD5 2e57249e0938da1c9a3939eee6c63cc5
BLAKE2b-256 9e86a4b40dbf55f701101fc350318e21f43d6dfc81ec545844b2f99ad079d6b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ff392cf6b1d8aa53346d82ba29be420acf857b454c3c3235b485bec4e69a7011
MD5 1ad2539cabdc165318181fa08f55fa33
BLAKE2b-256 d38ee938aed6e3677327ab4e1a17936db4dd63b4bafc5bb90b57ff60ba0cf707

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 65d6199167104aeccbc9ffda29222b50fd9d9a27e5f0212ec8da1a29b9072a28
MD5 505ba0f139696214ddb0378982db4a5a
BLAKE2b-256 3691b2a03f8754eadf8102f793795418b98a991a0695e4bb69e6abbdb1f750d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1feeb7775deeda807fcf71c8b66f04bb65fa5e8af741b84bf256ef4ee756fdb2
MD5 2d39ad084a642e79d906ccac3115bd5a
BLAKE2b-256 14bee2167b8d5d3d5cd11df103301077b247ca5d12b32bf3e6bbd2f5b7ae7f58

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e19b6f7b6d015cbd79eb88afce6ed9af2d1256a56a9238346c166d9b8e56c872
MD5 31595af3ced2d35809c9dfc4bc51d780
BLAKE2b-256 6b1799802d547b4260333d964af9a78d8d305933b3a156742f323815d4ef0e04

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 58f61f801640dece22f6f2f5887eba5e992f6c2a63c5001b311f9b1abd78d86a
MD5 04292609b475591da29b5f558284ebc8
BLAKE2b-256 ea8a2c0db980b0e492bfda182e385d44cc3f9521fba17001ba6de15e7e66c6d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: buquet-0.1.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 12.0 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for buquet-0.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 16daf9b4235f31cc3a55c69b084af0d2c673df0e3c179b39233914f71ded0c68
MD5 ce2c3188fb64d6e26290acbf30b25ea2
BLAKE2b-256 e2922f0e24eeeaa2c03ed2fa11b6975e25888890032668a538a9a364a99b6b8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bfc357bf8620dbcd16839fa4d6378700e101e5b1e3fb5b3683861b46691e848a
MD5 42211d521df1c835730aa11ce1f48884
BLAKE2b-256 3919025f6b4f515ffb9502f05019d270bb58b5ff54f26647f57b674837e34ba2

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2fbf92f75edba512a4ca6a386dfb09d448f0b6fb27f2f83a78411f34731de4a6
MD5 695a09ef85d5ebf5514815d3ae6c1235
BLAKE2b-256 f4630007beed0b4f34e4375c99d31000a6bbd12e7b8c16fb802ab39111ec91ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 70b0f83d36d3ed537f61a8e87ff6e74ba98a872c3ca998702693c87649e3a1db
MD5 e97e31668f4697e3598889ab697a1279
BLAKE2b-256 01644393ae9de7e63d872b61570e846020869b4c9ba0002722fa8e49f8d9bfc5

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bfd77754fbdb46c4d89e28219dfbfe05a8064224e9f923de86d5ecf7bb165d5e
MD5 da2ccec8861667b211cfeebf0ea8cf5d
BLAKE2b-256 0852a9097182a82af911b2309659d5ceaba5d9921bbe260a3ad437f0b0cd50cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file buquet-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for buquet-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c80cb999be74f7c0ff5cbbcefae6d2760ab43508cd547d0036ccbec961f60965
MD5 5b5cf96e5dfc3640308a6640aa84eee9
BLAKE2b-256 3785480362752f3d076c8f46b2e95af5b28df1a131c0b0118a793e8fd1e8e262

See more details on using hashes here.

Provenance

The following attestation bundles were made for buquet-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: publish.yml on h0rv/buquet

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page