Skip to main content

High-performance async queue backed by a Cython ring buffer

Project description

ringq

CI PyPI Python License: MIT

High-performance async queue backed by a Cython ring buffer. Drop-in replacement for asyncio.Queue with optional eviction, deduplication, and JSON validation.

Why ringq?

  • Faster than asyncio.Queue — Cython ring buffer with power-of-2 bitmask indexing, zero Python overhead in the hot path. 10–50% faster depending on configuration.
  • Eviction policies — bounded queues that never block: discard the oldest item or silently reject the newest.
  • Built-in deduplication — drop or replace duplicates by value or custom key, without maintaining a separate set.
  • JSON validation — catch non-serializable data at enqueue time, not when you try to send it downstream.
  • Drop-in compatible — same interface as asyncio.Queue, including shutdown() (Python 3.13+), task_done(), and join().
  • Zero runtime dependencies — optional orjson for faster full validation.

Install

pip install ringq

Optional: install orjson for faster validate="full" mode:

pip install ringq orjson

Quick start

import asyncio
from ringq import Queue

async def main():
    # Basic FIFO (same as asyncio.Queue)
    q = Queue()
    await q.put("hello")
    print(await q.get())  # "hello"

    # Bounded with eviction (discard oldest when full)
    q = Queue(maxsize=100, eviction=True)

    # Deduplication — drop new duplicates
    q = Queue(maxsize=100, dedup=True)

    # Deduplication — replace existing with new value
    q = Queue(maxsize=100, dedup="replace", key=lambda x: x["id"])

    # JSON validation
    q = Queue(validate=True)
    q.put_nowait({"key": "value"})  # OK
    # q.put_nowait(set())           # raises TypeError

asyncio.run(main())

Features

Eviction policies

Control what happens when a bounded queue is full.

# Default: raise QueueFull (same as asyncio.Queue)
q = Queue(maxsize=100)

# Discard oldest item to make room for the new one
q = Queue(maxsize=100, eviction=True)   # or eviction="old"

# Silently reject the new item, never blocks
q = Queue(maxsize=100, eviction="new")

With eviction="old", put() and put_nowait() never block or raise QueueFull — the oldest item is evicted automatically. With eviction="new", the new item is silently dropped and put_nowait() returns False.

Deduplication

Prevent duplicate items from accumulating in the queue.

# Drop duplicates — keep the original, reject the new one
q = Queue(dedup=True)         # or dedup="drop"
q.put_nowait("a")             # True
q.put_nowait("a")             # False (duplicate dropped)

# Replace duplicates — update the value in-place
q = Queue(dedup="replace")
q.put_nowait("old_value")     # True
q.put_nowait("old_value")     # True (original replaced)

# Custom key function — deduplicate by a specific field
q = Queue(dedup="replace", key=lambda x: x["id"])
q.put_nowait({"id": 1, "status": "pending"})
q.put_nowait({"id": 1, "status": "done"})     # replaces previous
print(q.get_nowait())  # {"id": 1, "status": "done"}

put_nowait() returns True if the item was inserted, False if it was dropped as a duplicate.

JSON validation

Catch non-JSON-serializable data at enqueue time.

# Fast mode (Cython, type checks only — no serialization)
q = Queue(validate=True)      # or validate="fast"
q.put_nowait({"key": [1, 2]}) # OK
q.put_nowait({1: "value"})    # TypeError — dict keys must be strings

# Full mode (actual JSON serialization via orjson or stdlib json)
q = Queue(validate="full")
q.put_nowait({"key": "value"}) # OK
q.put_nowait(set())            # TypeError

Fast mode checks basic types recursively via Cython (None, bool, int, float, str, list, tuple, dict with string keys). Full mode performs an actual serialization round-trip and accepts anything that json.dumps (or orjson.dumps) accepts.

Combining features

All features compose freely:

# Bounded queue with eviction, dedup by key, and JSON validation
q = Queue(
    maxsize=1000,
    eviction=True,
    dedup="replace",
    key=lambda x: x["id"],
    validate=True,
)

Shutdown

Gracefully shut down a queue, compatible with Python 3.13+ asyncio.Queue.shutdown().

# Graceful — allow consumers to drain remaining items
q.shutdown()
# q.put_nowait(item)  # raises QueueShutDown
await q.get()          # returns remaining items, then raises QueueShutDown

# Immediate — discard all items, cancel all waiters
q.shutdown(immediate=True)

Statistics

Track eviction and deduplication counters:

q = Queue(maxsize=2, eviction=True, dedup=True)
q.put_nowait("a")
q.put_nowait("b")
q.put_nowait("c")  # evicts "a"
q.put_nowait("c")  # duplicate dropped

print(q.stats())
# {
#     "evictions": 1,
#     "dedup_drops": 1,
#     "dedup_replacements": 0,
#     "invalidated_skips": 0,
#     "maxsize": 2,
# }

API reference

Constructor

Queue(
    maxsize=0,
    *,
    eviction=False,     # False | True | "old" | "new"
    dedup=False,        # False | True | "drop" | "replace"
    key=None,           # callable(item) -> hashable key
    validate=False,     # False | True | "fast" | "full"
)
Parameter Type Default Description
maxsize int 0 Maximum number of items. 0 = unbounded.
eviction bool | str False True/"old": evict oldest. "new": reject newest.
dedup bool | str False True/"drop": drop duplicates. "replace": update in-place.
key callable None Extract dedup key from items. Requires dedup to be enabled.
validate bool | str False True/"fast": Cython basic type check. "full": actual JSON serialization round-trip.

Methods

Method Returns Raises Description
put_nowait(item) bool QueueFull, QueueShutDown Insert item. Returns True if inserted, False if dropped.
get_nowait() item QueueEmpty, QueueShutDown Remove and return next item.
await put(item) bool QueueShutDown Async put. Waits if bounded and full (unless eviction enabled).
await get() item QueueShutDown Async get. Waits if empty.
peek_nowait() item QueueEmpty Return next item without removing it.
task_done() None ValueError Mark a retrieved item as processed.
await join() None Wait until all items have been processed (task_done() called for each).
clear() None Remove all items and reset unfinished task counter.
shutdown(immediate=False) None Shut down the queue. Idempotent.
stats() dict Return {"evictions", "dedup_drops", "dedup_replacements", "invalidated_skips", "maxsize"}.
qsize() / len(q) int Number of items currently in the queue.
empty() bool True if the queue is empty.
full() bool True if bounded and at capacity. Always False for unbounded queues.
maxsize (property) int The queue's capacity (from constructor).

Exceptions

Exception When raised
QueueEmpty get_nowait() on an empty queue
QueueFull put_nowait() on a full bounded queue (without eviction)
QueueShutDown put()/get() after shutdown()

All exceptions are importable from ringq:

from ringq import Queue, QueueEmpty, QueueFull, QueueShutDown

Migrating from asyncio.Queue

ringq is a drop-in replacement. Change one import:

-from asyncio import Queue
+from ringq import Queue

Existing code continues to work. To take advantage of new features, add keyword arguments:

# Before (asyncio.Queue)
q = asyncio.Queue(maxsize=100)

# After (ringq — same behavior, faster)
q = Queue(maxsize=100)

# After (ringq — with features)
q = Queue(maxsize=100, eviction=True, dedup="replace", key=lambda x: x["id"])

Behavioral difference: put_nowait() returns bool (always True for standard FIFO usage) instead of None.

Benchmarks

1,000,000 put_nowait + 1,000,000 get_nowait operations, Python 3.14, Linux x86_64:

Configuration asyncio.Queue ringq Speedup
Unbounded 5.2M ops/s 8.3M ops/s 1.6x
Bounded (maxsize=1000) 4.7M ops/s 9.0M ops/s 1.9x
Eviction old (maxsize=1000) 7.6M ops/s
Eviction new (maxsize=1000) 9.5M ops/s
Dedup drop (maxsize=1000) 7.0M ops/s
Dedup replace (maxsize=1000) 5.0M ops/s
Validate fast 3.7M ops/s
Validate full 2.4M ops/s

Run benchmarks yourself:

uv run python benchmarks/run.py

Development

Setup

git clone https://github.com/cutient/ringq.git
cd ringq
uv sync --extra dev

Test

uv run pytest tests/ -v

Benchmark

uv run python benchmarks/run.py

License

MIT

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

ringq-0.1.0.tar.gz (174.4 kB view details)

Uploaded Source

Built Distributions

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

ringq-0.1.0-cp313-cp313-win_amd64.whl (203.6 kB view details)

Uploaded CPython 3.13Windows x86-64

ringq-0.1.0-cp313-cp313-win32.whl (198.5 kB view details)

Uploaded CPython 3.13Windows x86

ringq-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl (444.8 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

ringq-0.1.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (425.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

ringq-0.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (407.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

ringq-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (206.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

ringq-0.1.0-cp312-cp312-win_amd64.whl (204.3 kB view details)

Uploaded CPython 3.12Windows x86-64

ringq-0.1.0-cp312-cp312-win32.whl (199.1 kB view details)

Uploaded CPython 3.12Windows x86

ringq-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (452.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

ringq-0.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (435.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

ringq-0.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (418.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

ringq-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (207.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

ringq-0.1.0-cp311-cp311-win_amd64.whl (203.6 kB view details)

Uploaded CPython 3.11Windows x86-64

ringq-0.1.0-cp311-cp311-win32.whl (199.3 kB view details)

Uploaded CPython 3.11Windows x86

ringq-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (443.6 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

ringq-0.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (419.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

ringq-0.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (405.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

ringq-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (207.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

ringq-0.1.0-cp310-cp310-win_amd64.whl (203.3 kB view details)

Uploaded CPython 3.10Windows x86-64

ringq-0.1.0-cp310-cp310-win32.whl (199.4 kB view details)

Uploaded CPython 3.10Windows x86

ringq-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl (427.8 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

ringq-0.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (404.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.5+ x86-64

ringq-0.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (393.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

ringq-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (207.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for ringq-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e0a3f3ac10226c939fa2edaea68ff8c9fb6f2c350a687a1f5b1f6fbaa5f87cd9
MD5 a642770d8c316115975b5f81d50e66f6
BLAKE2b-256 8840488af17079a054af0f080526a39f481a3070855f72fca882ed49cf830c53

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on cutient/ringq

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

File details

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

File metadata

  • Download URL: ringq-0.1.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 203.6 kB
  • 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 ringq-0.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8d04b6c20188b6f4264d4c8aab5931cdb195863acc945bb6146fa2264dba5b15
MD5 e05991091b3498130ebd3d8cd075625d
BLAKE2b-256 2b64778c11ce16f522db9fb93524694b291b62178484262ffc241d5e64e4803b

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on cutient/ringq

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

File details

Details for the file ringq-0.1.0-cp313-cp313-win32.whl.

File metadata

  • Download URL: ringq-0.1.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 198.5 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ringq-0.1.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 cdaf48d3e4952278c2eac8cd9d5912c5ade9096d317d99a7fb4d7a668d1151a6
MD5 5a26532154e4d279d632a1b35542222f
BLAKE2b-256 2125e06b5ceb03cdb9ce5c3d4151aa6c01de4ca2655b33aea22de2ca2bfcb9a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for ringq-0.1.0-cp313-cp313-win32.whl:

Publisher: publish.yml on cutient/ringq

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

File details

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

File metadata

File hashes

Hashes for ringq-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3b441cbd09a6cb2f03297a0ee53d7da4caa4b1436211bd987a283aa99677101b
MD5 9580ae7119ecee158b57df9c340da737
BLAKE2b-256 0fa0e9e9a0ab789b368458e540f493d7e97b31d348df9916204ffc6d5ec99c98

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on cutient/ringq

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

File details

Details for the file ringq-0.1.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ringq-0.1.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1db83d026ba5c18a459e7fe9bd80bea1fc9a6f7f7428de073ddd1235b745a7ef
MD5 7fb217a3c8993ff814ea7642be7a7a17
BLAKE2b-256 28d720429c2a0743b15d11a01c97fb0bb81e9ba5a2a0f243a88decd5d730dff5

See more details on using hashes here.

Provenance

The following attestation bundles were made for ringq-0.1.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on cutient/ringq

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

File details

Details for the file ringq-0.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ringq-0.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 1ea175889e7d86c9263a206b17315c355bee8789c61a684e7ef4062f189a64d0
MD5 4d137a981d147f60856d1e6e18b16e6c
BLAKE2b-256 bf76e86ec82d7c995178d473e0129066b87f107998b6fac943aaa2bfc4349dbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for ringq-0.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish.yml on cutient/ringq

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

File details

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

File metadata

File hashes

Hashes for ringq-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aa457784f1be7eb3f60edfe27180e5534438dc97f49e813c2f3e89638343992f
MD5 3bc1d4c23b9c9ff7930eb89e9063e4a8
BLAKE2b-256 c06bf771319dea58e0a1ec98d313f2129c83229b6a332434c6aa1880e4379ac0

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on cutient/ringq

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

File details

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

File metadata

  • Download URL: ringq-0.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 204.3 kB
  • 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 ringq-0.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 72cac9e7ce4ff9222e36e44a0dea81b080b4657e759111682658ad16a34e7209
MD5 9b5fd0abe15fc9d6b9d5820ee94a5ea5
BLAKE2b-256 5a92b56676c5246d78e9cca13145d80a46d3538873328db91df2e8e91ce5f486

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on cutient/ringq

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

File details

Details for the file ringq-0.1.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: ringq-0.1.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 199.1 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ringq-0.1.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 f42d95508208bfd7e2a88199a9f52f0cb031177bb7ed9060f0d4a2f7ecee02a6
MD5 95d3220b05316570285ff50a12454c30
BLAKE2b-256 86b34a346a71f74ee751e0358a78b63bf372af05eeb830e35f5f587ada77305f

See more details on using hashes here.

Provenance

The following attestation bundles were made for ringq-0.1.0-cp312-cp312-win32.whl:

Publisher: publish.yml on cutient/ringq

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

File details

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

File metadata

File hashes

Hashes for ringq-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5f6ae6b78d0dc60030715ed5e2721c740136958f03043c71c7c106e6983eca23
MD5 3d8fcb037d300fb70bbeaab48dbd2847
BLAKE2b-256 59735efc091322f913802c6a14ad4fc1b0be2c4bcf78bf44a0e003275f24d29b

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on cutient/ringq

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

File details

Details for the file ringq-0.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ringq-0.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b7427820d02c1792a12fe69e7bdda0f3a5f959bb4f6329d4d8b74f847c2115d5
MD5 96f0119f3a303dc2898abe765ab25c14
BLAKE2b-256 6f0275d7cbcc3d4845f2f3de3b46e84cb353e6561a72c807919d8a01aa9bfdd6

See more details on using hashes here.

Provenance

The following attestation bundles were made for ringq-0.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on cutient/ringq

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

File details

Details for the file ringq-0.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ringq-0.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a474b7c30e9791231f1e7ab9f79331283afbd93f63afb95c27b1e496f72af17f
MD5 be61502fed0ea7a5bf90ba8a1c3eff0d
BLAKE2b-256 15047db453854efabe36f9ba33563a2a57a46a012d29456b60457e592d5bb8bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for ringq-0.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish.yml on cutient/ringq

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

File details

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

File metadata

File hashes

Hashes for ringq-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 98741ecee46d819f1493a36e575cc656bb7c6c1c1b4596279987434df4a76970
MD5 caaf0e718330e63fe64035d0cc48f385
BLAKE2b-256 401bee97d86cba035e7fd74dad008588f618065ff71d3d06bbfc3e8438d5e0fc

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on cutient/ringq

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

File details

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

File metadata

  • Download URL: ringq-0.1.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 203.6 kB
  • 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 ringq-0.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ac7797ad7c20547d36279583cc21798219375184a91023094a7edd6f4c1b9058
MD5 c82d5a798e04cb36b943f558e08e89c9
BLAKE2b-256 51e43d12cedcf28920942f2895876b69711e89047eb3a60bbdcd5ff7a55b558c

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on cutient/ringq

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

File details

Details for the file ringq-0.1.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: ringq-0.1.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 199.3 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ringq-0.1.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 607fdfa0ad378b0bc197be7e42f5d44b0d0307a0204847c1a06c8d9fd4b26995
MD5 e938cf99cfe514397df10dc49a696588
BLAKE2b-256 f2bf3f30f5cbfbc1f69b944d02237776f0621af13daf4263890c673bf5c96c42

See more details on using hashes here.

Provenance

The following attestation bundles were made for ringq-0.1.0-cp311-cp311-win32.whl:

Publisher: publish.yml on cutient/ringq

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

File details

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

File metadata

File hashes

Hashes for ringq-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 82c7ece3718b874dcaa6312c3791691b269ed64bf283eafa450da31cef06b82b
MD5 0e9916fc3ac0f3805f12319b2d7016ed
BLAKE2b-256 2a120ff41198bd6e5468440a5dc7c67f3874249879e1753f1866139481871846

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on cutient/ringq

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

File details

Details for the file ringq-0.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ringq-0.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1344c51fa129417c3f004a33227df7f041d8947e01dbc846542475106a1b864e
MD5 fa178f301f62f98d92b947759e626ad4
BLAKE2b-256 3f45aa4cf377a103ea1d5682484a704a97c7a6c3a4614a56b30161019cdff8b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for ringq-0.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on cutient/ringq

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

File details

Details for the file ringq-0.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ringq-0.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fb00e058329cec4546d426e3eb13241653dccb8402fdb104f19182c5dadabeb9
MD5 e658a6d6cccb45aae013b788b580bcb4
BLAKE2b-256 ebab8a9abeaa092b3d326f014403915b0a5ab06376132a7e2a1f04083e204b2f

See more details on using hashes here.

Provenance

The following attestation bundles were made for ringq-0.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish.yml on cutient/ringq

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

File details

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

File metadata

File hashes

Hashes for ringq-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8a2366b6818fa5123dc6dc1332ba04a6b4550539b083e15d518e28762d4f05f0
MD5 59c034ea9f43758fdf665ca480ee1b87
BLAKE2b-256 1eb985ecc4311a949e7a3b3bd8b342262ce8d578168775d1f28fba04932f85ac

See more details on using hashes here.

Provenance

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

Publisher: publish.yml on cutient/ringq

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

File details

Details for the file ringq-0.1.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: ringq-0.1.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 203.3 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ringq-0.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e721cd5e42e666db94f0c7c4f48ab097c57814d15ce8ab29cbe96b051f8f2b62
MD5 ac69e548c2e6622ba60eedfee59c2fbf
BLAKE2b-256 fbf0840d85b1f34115cf0967cd73ac282df63e8307ba4d8ba3ce05ac020ee0e9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ringq-0.1.0-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on cutient/ringq

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

File details

Details for the file ringq-0.1.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: ringq-0.1.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 199.4 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ringq-0.1.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 1de3cfef23db09f0907eac1d52ff7641f5c823b6719aa35916615d44cf8f34dd
MD5 d71adee541939374eb38177138d0a06d
BLAKE2b-256 86f1ea34a2223b26bee7e8b733a256810782d8eea38d466ffc6f3550aab4e8af

See more details on using hashes here.

Provenance

The following attestation bundles were made for ringq-0.1.0-cp310-cp310-win32.whl:

Publisher: publish.yml on cutient/ringq

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

File details

Details for the file ringq-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for ringq-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 07e918b9dafba4129dcc52102ec1bcd2870e8f6ab6abc180a8db0e565d4be24f
MD5 ad24505f77f2d47826ab68b3d3f132a2
BLAKE2b-256 b8e0e8e8a419b60b6e6a205260da20a80fb2ea11dd4e7448c041bb28138e848c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ringq-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: publish.yml on cutient/ringq

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

File details

Details for the file ringq-0.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ringq-0.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b4478ef8fecda9ff03c6551ee6150bc42aad56dae2af2d3c0dbc08a4388c1d0a
MD5 27170212c71ad1d66bf20df8de5c43bc
BLAKE2b-256 d4d6f7c1c5ee488ee325a406a5c401c374444ae5c9c0f2642ef4762fecdd4e41

See more details on using hashes here.

Provenance

The following attestation bundles were made for ringq-0.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on cutient/ringq

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

File details

Details for the file ringq-0.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for ringq-0.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 23e4d235d45bb1de896542199f55a31bf928fa45d89e81c7411c46f2d45fc0d3
MD5 9861fa2248ee46bad5169ab8cebf6576
BLAKE2b-256 2b63958d0869440bac0ab295fa48146ba2248c6f88fe71088b4c79e385c50dd1

See more details on using hashes here.

Provenance

The following attestation bundles were made for ringq-0.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: publish.yml on cutient/ringq

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

File details

Details for the file ringq-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ringq-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 07c3ebc16d0a6658f968dc9fa8c36cba73ae238b92be8969c85511334e66808f
MD5 fef9f3f12300c854011b5747a261d687
BLAKE2b-256 2600c16ff6866a5755cb736ca6b102397c27e061975c04414fabb80a4d9db116

See more details on using hashes here.

Provenance

The following attestation bundles were made for ringq-0.1.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on cutient/ringq

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