Skip to main content

localqueue

PyPI Python CI codecov License

A persistent, multiprocess-safe local queue for Python, backed by SQLite and Rust.

localqueue gives scripts and workers durable jobs with ACK/NACK, leases, bounded retries, and dead-letter handling—without a server, daemon, or external service.

API stability: localqueue is evolving quickly. Minor releases may include breaking changes to the Python API. Persisted database compatibility is treated separately and documented for each release.

  • Durable: jobs survive process restarts in a local SQLite database.
  • Safe under concurrency: multiple Python threads and processes can share a queue on the same machine.
  • Failure-aware: expired leases and transient failures are retried; exhausted jobs move to a dead-letter state.
  • Fenced: every delivery has a unique receipt, so stale workers cannot acknowledge a newer delivery.
  • Flexible: use multiple named queues, optional job deduplication, automatic worker heartbeats, and custom serializers.
  • Event-driven: optional durable pub/sub with explicit static topology, atomic fan-out, consumer groups, retries, and dead-letter handling.

Installation · Quick start · Worker · Static typing · Dead letters · Event bus · Benchmarks · Guarantees · Backpressure · Diagnostics · API · Storage compatibility · Migrating to 1.3 · Operational envelope · Changelog · Development

Installation

Using uv:

uv add localqueue

Using pip:

python -m pip install localqueue

localqueue requires Python 3.11 or newer.

Upgrading from 0.5.0 requires code and storage changes because 1.x is a backward-incompatible reimplementation. See Migrating from 0.5.0.

Quick start

Save the two labeled blocks as producer.py and worker.py, then run the producer before starting the worker.

# producer.py
from localqueue import DeliveryPolicy, SimpleQueue


delivery = DeliveryPolicy(lease_seconds=30, max_retries=3)
with SimpleQueue("./data", delivery=delivery) as queue:
    queue.put(
        {"task": "send-email", "to": "hello@example.com"},
        job_id="welcome-email-42",
    )

The producer can stop here. put() commits the job to ./data/localqueue.db; it is not an in-memory dictionary.

# worker.py — run this later, in another process
from localqueue import DeliveryPolicy, SimpleQueue

delivery = DeliveryPolicy(lease_seconds=30, max_retries=3)
with SimpleQueue("./data", delivery=delivery) as queue:
    job = queue.get()

    try:
        print(f"Sending email to {job.data['to']}")
    except Exception as error:
        queue.nack(job, last_error=str(error))
    else:
        queue.ack(job)

The path passed to SimpleQueue is a directory. The queue creates and manages localqueue.db inside it. Payloads are JSON-serialized by default. Jobs survive normal process restarts. Select DurabilityMode.DURABLE when the stronger SQLite durability setting documented in Delivery guarantees is required.

Worker

Worker handles the ACK/NACK lifecycle for you. A successful handler is acknowledged, an unexpected exception is retried, and an exception listed in permanent_errors is sent directly to the dead-letter state.

from localqueue import DeliveryPolicy, SimpleQueue, Worker


class InvalidDeployment(Exception):
    pass


def deploy(job):
    print(f"Deploying {job.data['app']}@{job.data['revision']}")


with SimpleQueue(
    "./data",
    delivery=DeliveryPolicy(lease_seconds=30, max_retries=3),
) as queue:
    worker = Worker(
        queue,
        deploy,
        permanent_errors=(InvalidDeployment,),
        heartbeat_interval=10,
    )
    worker.run()

For long-running handlers, heartbeat_interval renews the lease in the background. It must be shorter than lease_seconds; one-third of the lease is recommended. A handler can also renew it explicitly with job.extend_lease(seconds), using a positive duration.

Static typing

Payload types flow through Serializer[PayloadT], SimpleQueue[PayloadT], Job[PayloadT], and Worker[PayloadT]. EventBus class patterns likewise give handlers the concrete event subtype. These are static relationships: the serializer reconstructs queue payloads at runtime, and Pydantic validates EventBus events. JsonSerializer does not reconstruct arbitrary annotated classes.

See the static typing guide for a custom serializer, typed workers, concrete sync/async event handlers, string/wildcard handlers, and installed-wheel verification.

Dead letters

queue.list_failed() returns immutable typed records with stable FailureReason, exact raw_payload bytes, and per-record decode errors. Replay one record with queue.retry_failed(record.id). EventBus exposes the same workflow through bus.subscription("payments").list_failed() and .retry_failed(id) without internal queue names. See the dead-letter guide for at-least-once replay safety.

Event bus

Optional pub/sub on top of the same durable queues (requires the bus extra):

uv add "localqueue[bus]"
import asyncio

from localqueue.bus import (
    BaseEvent,
    CsvRow,
    CsvSource,
    EventBus,
    RetryPolicy,
    event,
)


@event(identity=("import_id", "external_id"))
class UserCreationRequested(BaseEvent):
    event_name = "user.creation-requested"

    import_id: str
    external_id: str
    name: str


bus = EventBus("./data")


@bus.handler(UserCreationRequested)
async def create_user(event: UserCreationRequested, ctx) -> None:
    await api.create_user(
        external_id=event.external_id,
        name=event.name,
        idempotency_key=ctx.event_id,
    )


creator = bus.subscription(UserCreationRequested.event_name)
creator.config.concurrency = 50
creator.config.retry = RetryPolicy.exponential(max_attempts=8)


@bus.source(CsvSource("users.csv"), checkpoint="users:2026-07")
def users(row: CsvRow) -> UserCreationRequested:
    return UserCreationRequested(
        import_id="2026-07",
        external_id=row["external_id"],
        name=row["name"],
    )


users.config.batch_size = 5_000
users.config.max_pending = 100_000


async def main() -> None:
    try:
        result = await bus.execute(users)
        result.raise_for_failures()
        print(result.items_committed, result.deliveries_acknowledged)
    finally:
        bus.close()


asyncio.run(main())

execute() resumes after interruption, starts registered local handlers when needed, and also allows worker processes sharing the database to participate. It waits for this execution's root and descendant deliveries—not global bus idleness. Failed deliveries are terminal and reported in ExecutionResult; raise_for_failures() makes failure explicit. External effects remain at-least-once, so use a stable idempotency key. The caller always owns bus.close().

Lower-level dispatch() plus standalone bus.run() producer/worker deployments remain supported. Each subscription is a durable queue, so local worker processes act as a consumer group. See docs/event-bus.md.

Delivery guarantees

[!IMPORTANT] localqueue provides at-least-once delivery, not exactly-once delivery. A worker can finish an external side effect and crash before ack(), causing the job to be delivered again. Make handlers idempotent when duplicate effects matter.

put() ──> ready ──> leased ──> acked
                     │
                     ├── nack() or expired lease ──> ready
                     │
                     └── fail() or retry limit ────> failed
                                                        │
                                           retry_failed() ──> ready
Behavior Guarantee
Successful put() The job was committed to SQLite and has an internal ID.
Worker crash An unacknowledged job becomes available after its lease expires.
Stale worker ack(), nack(), fail(), and lease extension require the current receipt.
Retries max_retries allows that many retries after the initial delivery; exhaustion moves the job to failed.
Deduplication A job_id is unique within a named queue while its record exists.
Ordering Ready jobs are claimed by insertion ID, but completion order is best effort under concurrency.

DurabilityMode.RELAXED is the default and selects SQLite synchronous=NORMAL, prioritizing throughput. Recent transactions may be lost after abrupt operating-system, host, kernel, or power failure. DurabilityMode.DURABLE selects synchronous=FULL and prioritizes stronger protection for recent commits. Neither mode is an absolute guarantee across every filesystem, kernel, drive cache, controller, or hardware failure.

See Delivery guarantees for the complete durability, lease, retry, fencing, and deduplication contract.

Configuration

from localqueue import DeliveryPolicy, DurabilityMode, SimpleQueue


queue = SimpleQueue(
    "./data",
    name="emails",
    delivery=DeliveryPolicy(
        lease_seconds=60,
        max_retries=3,
    ),
    durability=DurabilityMode.RELAXED,
    serializer=None,
    max_pending_jobs=None,
)
Option Default Description
path required Directory containing the shared localqueue.db file.
name "default" Logical queue name; several queues can share one database.
delivery DeliveryPolicy() Immutable lease duration and retry policy.
durability DurabilityMode.RELAXED Throughput-oriented RELAXED or stronger DURABLE synchronization intent.
serializer JSON Object implementing dumps(obj) -> bytes and loads(bytes) -> obj.
max_pending_jobs None Optional positive limit for ready + processing jobs in this logical queue.

require_subscribers remains a boolean on EventBus: it is one stable dispatch decision, not a group of related invariants. serializer, EventBus topology, and event registry remain explicit strategy objects.

Migrating configuration in v1.3

The old Python constructor parameters are removed without aliases or deprecation shims:

# before
SimpleQueue(path, fsync=True)

# after
SimpleQueue(path, durability=DurabilityMode.DURABLE)

# before
SimpleQueue(path, lease_seconds=30, max_retries=5)

# after
SimpleQueue(
    path,
    delivery=DeliveryPolicy(
        lease_seconds=30,
        max_retries=5,
    ),
)

The same delivery= and durability= arguments apply to EventBus. Public configuration attributes move under the corresponding semantic object:

# before                                  # after
queue.lease_seconds                       queue.delivery.lease_seconds
queue.max_retries                         queue.delivery.max_retries
bus.lease_seconds                         bus.delivery.lease_seconds
bus.max_retries                           bus.delivery.max_retries
bus.fsync                                 bus.durability

The removed attributes have no properties, aliases, or compatibility shims. This is a Python API break only; it does not change the SQLite schema or serialized payload format.

Bounded backlog and backpressure

Limit one logical queue by job count and choose whether producers wait:

from localqueue import Full, SimpleQueue


queue = SimpleQueue("./data", max_pending_jobs=10_000)
try:
    queue.put(payload, block=False)
except Full:
    ...

queue.put(payload, timeout=5.0)

Pending means ready + processing: delayed jobs, active leases, and expired unreclaimed leases count; ACKed and failed jobs do not. The native capacity check, deduplication calculation, and complete insert share one BEGIN IMMEDIATE transaction, so participating processes using the same configured limit cannot oversubscribe it. put_many() is all or nothing, and duplicates that do not create rows consume no new slots, even above the limit. A batch whose deduplicated new-row count exceeds the limit raises Full immediately because it can never fit.

This limits logical backlog, not SQLite/WAL bytes, disk space, or retained terminal records. The setting belongs to each SimpleQueue object and is not persisted: all producers for a logical queue must use the same limit, while an unlimited or direct-SQL client can bypass the contract. EventBus fanout remains unlimited. See the backpressure reference for polling, timeout, transition, multiprocess, and error details.

API overview

Method Purpose
put(data, job_id=None, *, block=True, timeout=None) Enqueue with optional deduplication and capacity waiting.
put_many(items, *, block=True, timeout=None) Atomically enqueue a complete batch, optionally using EnqueueItem for per-item deduplication.
get(block=True, timeout=None) Claim a job and start its lease.
get_nowait() Claim immediately or raise Empty.
ack(job) Confirm successful processing.
nack(job, delay=0, last_error=None) Return a transient failure to the queue, optionally with a non-negative delay.
fail(job, last_error=None) Move a permanent failure to the dead-letter state.
extend_lease(job, seconds) Renew the current delivery lease by a positive duration.
reclaim_expired_leases() Reclaim expired leases explicitly; get() also does this automatically.
stats() Return ready, processing, acked, and failed counts.
diagnostics() Return a typed, immutable, read-only operational snapshot.
check_integrity(*, mode="full", max_errors=100) Run a bounded, typed full or quick SQLite integrity check.
backup(destination_directory) Create a verified online backup in a new exclusive directory.
list_failed(limit=100, offset=0) Inspect dead-letter jobs.
retry_failed(message_id) Non-blockingly move a dead-letter job back to ready, or raise Full.
purge(older_than, include_failed=False) Delete old terminal records.
vacuum() Compact the shared SQLite database. Run during a maintenance window.

Runtime diagnostics

Capture a typed, immutable operational snapshot without opening SQLite directly:

import json

from localqueue import SimpleQueue


queue = SimpleQueue("./data")
report = queue.diagnostics()

print(report)
print(json.dumps(report.to_dict(), indent=2))
queue.close()

Diagnostics schema v2 reports logical counts, configured capacity, pending jobs, available slots, and ages for the selected queue together with effective SQLite settings and best-effort shared database/WAL/SHM sizes. It is read-only and does not reclaim leases, checkpoint WAL, or run an integrity check. See the runtime diagnostics reference for field types, snapshot semantics, clock limitations, and the boundary with integrity/backup maintenance.

Integrity checks and online backups

Run explicit SQLite maintenance without reaching into the native connection:

from localqueue import SimpleQueue


queue = SimpleQueue("./data")
integrity = queue.check_integrity()
if integrity.ok:
    backup = queue.backup("./backups/2026-07-22")
    print(backup.to_dict())
queue.close()

Backups use SQLite's Online Backup API and remain consistent while other connections produce and consume jobs. The destination directory is reserved exclusively and must not already exist. See the maintenance reference for result fields, locking and latency, filesystem requirements, error semantics, independent verification, and recovery steps.

Architecture

The public API is a small Python facade over a native PyO3 extension. Rust owns the transactional state machine, while SQLite WAL mode provides local persistence and coordinates competing writers.

Python application
       │
       ▼
SimpleQueue / Worker       Python API and serialization
       │
       ▼
Rust native extension      leases, receipts, retries, transactions
       │
       ▼
localqueue.db              SQLite WAL, one machine

All queue state lives in one SQLite table. Claims and multi-step transitions use immediate transactions so concurrent processes cannot reserve the same delivery. This is local infrastructure for a shared database on one machine, not a distributed message broker.

Benchmarks

The canonical single-process benchmark is run with the optional benchmark extra:

uv sync --extra benchmark
uv run python -m localqueue.benchmark --profile smoke --output smoke.json
uv run python -m localqueue.benchmark --profile multiprocess-ci --output multiprocess.json

See the benchmark guide for NORMAL/FULL durability and report interpretation. Benchmark output is evidence about a particular host, filesystem, and run; it is not a product performance promise.

Development

Build the extension in a local virtual environment and run the test suite:

uv sync --extra dev
uv run maturin develop
uv run pytest

Run the configured strict type check for the production package:

uv run pyrefly check --progress-bar no

Rust quality checks:

cargo fmt --all --check
cargo clippy --locked --all-targets --all-features -- -D warnings

Build a release wheel:

uv run maturin build --release --locked

License

Licensed under the Apache License 2.0.

Metadata

Release files for localqueue 1.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for localqueue 1.4.0
File Size Uploaded
localqueue-1.4.0.tar.gz 622.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for localqueue 1.4.0
File
localqueue-1.4.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
localqueue-1.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
localqueue-1.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64 Details
localqueue-1.4.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
localqueue-1.4.0-cp314-cp314-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.12+ x86-64 Details
localqueue-1.4.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
localqueue-1.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
localqueue-1.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
localqueue-1.4.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
localqueue-1.4.0-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
localqueue-1.4.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
localqueue-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
localqueue-1.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
localqueue-1.4.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
localqueue-1.4.0-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
localqueue-1.4.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
localqueue-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
localqueue-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
localqueue-1.4.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
localqueue-1.4.0-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details

Total release size: 30.1 MB

Release files / localqueue-1.4.0.tar.gz

Download URL localqueue-1.4.0.tar.gz
Size 622.1 kB
Tags Source
SHA-256 checksum
How to use checksums
fb4e2dcf3d29df29e46454586b2e370fb2fa97f75d20ad5dd888417273d6f9b8
BLAKE2b-256 checksum
How to use checksums
a4e52d2a94eeb67506cf2ee48a595ad6a1542348582e3c0a2765f864198db9b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp314-cp314-win_amd64.whl

Download URL localqueue-1.4.0-cp314-cp314-win_amd64.whl
Size 1.4 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
80a1210d0b1732998acc3fdd393b7aaf7151ec9ea3b2768400a227051ab3a079
BLAKE2b-256 checksum
How to use checksums
3a38630efd08097b4c279eca02a7fac9b309970b192c7e1adb7d312b1b453e73
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL localqueue-1.4.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
3c1ce10eee3f08c865a44705c0e00306a99e4744d5537224e6fcc10c9822d402
BLAKE2b-256 checksum
How to use checksums
20c5f447a3cac47803a380811f65e31e0611ddd7f9e4cd6ce129618d9ab3c98e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL localqueue-1.4.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.5 MB
Tags CPython 3.14 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
54b548987822d84cd8c3f1b01f5f6d3f56485411b6305bb2df88bca3c52e0234
BLAKE2b-256 checksum
How to use checksums
8033cfb279e0ab74729c6f918cb7aae03fef89719db79a1dd52d5202a5026d27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL localqueue-1.4.0-cp314-cp314-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e231d5ec33a0d8fc469f1bae8139b37530c6d64b18bf3d85892396f5e9a36350
BLAKE2b-256 checksum
How to use checksums
37d16a2617e9002d5fbd7d3026388adc8c568bef3c3d3283e9170d0d30a4a887
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp314-cp314-macosx_10_12_x86_64.whl

Download URL localqueue-1.4.0-cp314-cp314-macosx_10_12_x86_64.whl
Size 1.5 MB
Tags CPython 3.14 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
3de272b3d75eb82e84d7979cd688dcdf9741324e0ab8dfb9e6233a8dcee9fbb6
BLAKE2b-256 checksum
How to use checksums
975a93ed29ffdc0225b82bb976e9fba31ca15ceedebef38e02758a4c905fc123
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp313-cp313-win_amd64.whl

Download URL localqueue-1.4.0-cp313-cp313-win_amd64.whl
Size 1.4 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
428e841363fe78dd07559c27729c563e2bdc3ee5ce55ca090b8ee7fb68cedd3b
BLAKE2b-256 checksum
How to use checksums
81bcf21a58d64e78aeef6c97167cd96ad3e4d71e15ce6d991d1f669489a09999
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL localqueue-1.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
fa587d5e1c9592f52a3d87445a0fc4cbae0a4c0a3ed79cd8e1454c5cad91e5d7
BLAKE2b-256 checksum
How to use checksums
978804cfd1e2eda905fd2784c310a50712adcaf2fbe1d963901a25e11aa0ecbf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL localqueue-1.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.5 MB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
0c5f1b95431222e19960846bb2599c4b67be30c67542b6eec1e50d939ccc4fef
BLAKE2b-256 checksum
How to use checksums
a33ea1a1fed52162ceab59369315b3126855f2fef318cfdbdcf48cd8e94157f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL localqueue-1.4.0-cp313-cp313-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
024eccc7f6fa4f68cfc07c111c584249695e642e5562e77f574e0709c66db69f
BLAKE2b-256 checksum
How to use checksums
a156b152ab92d2080fa703787666a2dd1ebc085b65b8e38c0a67b24143320010
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp313-cp313-macosx_10_12_x86_64.whl

Download URL localqueue-1.4.0-cp313-cp313-macosx_10_12_x86_64.whl
Size 1.5 MB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
b1705f7ad12226b41fe02d69d49613b9672a0f60d4c4ea08a584e1744fcc52e7
BLAKE2b-256 checksum
How to use checksums
52fc62e783291d64ddbca6c25ec1e778b2c29004aaf82bfbb3bed54f035b08ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp312-cp312-win_amd64.whl

Download URL localqueue-1.4.0-cp312-cp312-win_amd64.whl
Size 1.4 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
b2b92557b15d71de215859d83e6d4ee13c6a71b2ce250176c1411bbe1163f465
BLAKE2b-256 checksum
How to use checksums
7e3606ea5d4fcb8db831668b96c4aa677d04e965045d41a6f1bb4d5321092ce1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL localqueue-1.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e859f5d285e90cdb6d79fe63d8e7be6656aca074acd760ee6d69a5046976abc1
BLAKE2b-256 checksum
How to use checksums
b35812815d6e744f8fbe4c4a7a238d4423a9645b9440e2247b50e4f13643ee03
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL localqueue-1.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.5 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
80a87f08f837ba587e0ac152ae94ae58ba2a77cdc9a7977cbe6e1325b00b148d
BLAKE2b-256 checksum
How to use checksums
d254579d84be8e499e38e350a20a660ebd8cbd5b1c491efbfd7dc1f5c203faa9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL localqueue-1.4.0-cp312-cp312-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7189fcdd8a8c581adb9cb22c8231f427f6aadfca721a0f86ef2d4f0bad8173b4
BLAKE2b-256 checksum
How to use checksums
173e090fb7c94194ef3c6761d08ca30f026213a25ff92b1b79a32c039794fd52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp312-cp312-macosx_10_12_x86_64.whl

Download URL localqueue-1.4.0-cp312-cp312-macosx_10_12_x86_64.whl
Size 1.5 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
7ba3320a0115790f31319e91d2d8a1ed35b417559a01ad18bbff55ec66b2d2e6
BLAKE2b-256 checksum
How to use checksums
8916052c148a8816f77ff6af0f151e40ae11e03a132f330d9e6243189a8cef44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp311-cp311-win_amd64.whl

Download URL localqueue-1.4.0-cp311-cp311-win_amd64.whl
Size 1.4 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
6e86a7013af25083cf7f560abfc19997370a8ead9007d4684fe53cd5a73715fb
BLAKE2b-256 checksum
How to use checksums
db99b86ac419b1e83567f99da2637ef50fa7f18a1b184448cf8719b2049dc1d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL localqueue-1.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 1.6 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
36d730a360af62041cf36d31316c3d3c08aac626ad97c994ac27171d5e61fb03
BLAKE2b-256 checksum
How to use checksums
877ab5f06fdf061306a375d27331122325d3de7cbb95aa2bce8c734f5af997bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL localqueue-1.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 1.5 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
1f1cf2da3a5e4ad8b4f5c0eb4e747c037fb59736a47e90cc2622848c009ab73f
BLAKE2b-256 checksum
How to use checksums
5d4989cd21b60a78532a82dce18bb120d9e718f1642ff889d41ef21945a83974
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL localqueue-1.4.0-cp311-cp311-macosx_11_0_arm64.whl
Size 1.5 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
2275c18106afee853be41d5e7fb05dd00325df8658ea9d0b6dfd06b7b0d496f0
BLAKE2b-256 checksum
How to use checksums
1a6ac92237d8121841a332fbf14032a96e374a91b448cfe4a47a84beed691de1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / localqueue-1.4.0-cp311-cp311-macosx_10_12_x86_64.whl

Download URL localqueue-1.4.0-cp311-cp311-macosx_10_12_x86_64.whl
Size 1.5 MB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
03ced6e40e96362ea049ea30bb964d1cc9533ea91d6e330269ebdaf2c5433575
BLAKE2b-256 checksum
How to use checksums
4486350123579b1e40bc88720ce0ca27884008b654c4bcd573acf1a0e3343f2b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

1.4.1

21 release files

This release

1.4.0 This release

21 release files

1.3.0

26 release files

1.2.0

26 release files

1.1.2

32 release files

1.1.1

32 release files

1.1.0

32 release files

1.0.1

32 release files

1.0.0

32 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

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