Skip to main content

python-rheaps

Python rheaps PyPI Documentation Status License: Apache 2.0

Python bindings for rheaps, a Rust library of heap / priority-queue data structures, built with PyO3 and maturin. rheaps is itself a Rust port of JHeaps; this package gives Python the same broad selection of heap algorithms as native, object-oriented classes.

Features

  • 31 heap classes across four families: array-backed, tree-based, DAG-based, and monotone radix heaps.
  • Flexible keys. Every general-purpose heap accepts key_type=int, key_type=float, or the default key_type=object (any Python object, ordered via its own __lt__/__eq__, exactly like heapq). int/float keys use Rust's native comparisons with no per-comparison Python callback.
  • Arbitrary values. Every entry can carry an arbitrary Python object as its value (defaults to None if omitted), independent of the key type.
  • Checked handles. Addressable heaps return a handle from insert() used to inspect, update, decrease, or delete that entry later. A handle is rejected with ValueError if it's stale (its entry was removed, or the heap was cleared) or belongs to a different heap instance.
  • No garbage collection surprises. Heap state lives inside the Rust object; there's no manual cleanup, close(), or context manager to remember.

Installation

Not yet published to PyPI. Build and install from source with maturin:

python3 -m venv .venv
source .venv/bin/activate
pip install maturin
maturin develop          # builds the extension and installs it into the venv
# maturin develop --release   # for an optimized build

Requires a Rust toolchain (stable, edition 2024 support — 1.88+) to build.

Quick start

A plain, value-only heap (like heapq, but with more algorithm choices):

import rheaps

heap = rheaps.BinaryArrayHeap()
heap.push(4)
heap.push(1)
heap.push(3)

assert heap.peek() == 1
assert heap.pop() == 1
assert heap.pop() == 3

An addressable heap, where insert() returns a handle you can use later:

heap = rheaps.PairingHeap()
task = heap.insert(10, "compile report")
heap.insert(5, "answer mail")

heap.decrease_key(task, 1)
assert heap.peek() == (task, 1, "compile report")
assert heap.delete(task) == (1, "compile report")
assert heap.pop() == (5, "answer mail")

Melding combines two heaps of the same class and key_type. The donor is left as a valid, empty heap afterward — Python has no move semantics, so unlike Rust's rheaps (which makes reusing a melded-away heap a compile error), reusing the donor here is well-defined, just empty:

a = rheaps.PairingHeap()
a.insert(3)
a.insert(5)

b = rheaps.PairingHeap()
deadline = b.insert(4)
b.insert(9)

a.meld(b)               # b's entries move into a; handles b issued stay valid
a.decrease_key(deadline, 1)

assert [a.pop()[0] for _ in range(4)] == [1, 3, 5, 9]
assert len(b) == 0      # b is still a usable, empty PairingHeap

Note that insert() (not push()) is the entry point for every addressable heap in the table below — push/peek/pop (no handle) are reserved for the plain, value-only heaps.

Choosing a key type

rheaps.BinaryArrayHeap()                    # key_type=object (default): any comparable Python object
rheaps.BinaryArrayHeap(key_type=int)        # native i64 keys, fastest
rheaps.BinaryArrayHeap(key_type=float)      # native finite f64 keys, fastest

key_type is fixed for the lifetime of the heap (chosen once at construction) and two heaps must share it to meld(). Comparing incompatible objects under key_type=object raises TypeError, the same as it would from plain a < b.

Choosing an implementation

Class Family Addressable Decrease key Meld Notes
BinaryArrayHeap array no – no smallest, cache-friendly default
DaryArrayHeap(degree) array no – no larger degree = cheaper insert, pricier removal
BinaryArrayWeakHeap array no – no relaxed invariant, fewer comparisons
BinaryArrayBulkInsertWeakHeap array no – no weak heap tuned for bulk insertion
MinMaxBinaryArrayDoubleEndedHeap array no – no peek_max()/pop_max() too
BinaryArrayAddressableHeap array yes yes no array-backed with handles
DaryArrayAddressableHeap(degree) array yes yes no as above, d-ary
PairingHeap tree yes yes yes good all-round default for meld + decrease-key
PurePairingHeap tree yes yes yes pairing-heap variant
CostlessMeldPairingHeap tree yes yes yes pairing-heap variant
RankPairingHeap tree yes yes yes pairing-heap variant
LeftistHeap tree yes yes yes classic leftist heap
SkewHeap tree yes yes yes self-adjusting, no extra per-node state
FibonacciHeap tree yes yes yes amortized O(1) decrease-key
SimpleFibonacciHeap tree yes yes yes Fibonacci-heap variant
StrictFibonacciHeap tree yes yes yes worst-case (not just amortized) bounds
BinaryTreeAddressableHeap tree yes yes no node-based binary heap with handles
DaryTreeAddressableHeap(degree) tree yes yes no degree must be a power of two, ≥ 2
ReflectedFibonacciHeap tree yes yes yes double-ended (peek_max/pop_max/increase_key)
ReflectedPairingHeap tree yes yes yes double-ended (peek_max/pop_max/increase_key)
SoftHeap(error_rate) tree no no yes (fallible) corruption-bounded; trades some wrong keys for speed
SoftAddressableHeap(error_rate) tree yes no yes (fallible) can't decrease-key: corruption bound isn't tracked per-entry
HollowHeap dag yes yes yes decrease-key/meld without cutting nodes from a parent
U32RadixHeap(min, max) monotone no – no keys removed in nondecreasing order (e.g. Dijkstra)
U64RadixHeap(min, max) monotone no – no as above, 64-bit keys
F64RadixHeap(min, max) monotone no – no as above, finite float keys
BigUintRadixHeap(min, max) monotone no – no as above, arbitrary-precision non-negative integer keys
U32RadixAddressableHeap(min, max) monotone yes yes no addressable counterpart
U64RadixAddressableHeap(min, max) monotone yes yes no addressable counterpart
F64RadixAddressableHeap(min, max) monotone yes yes no addressable counterpart
BigUintRadixAddressableHeap(min, max) monotone yes yes no addressable counterpart

Every class above except the radix heaps takes key_type=int|float|object (default object); radix heaps have a fixed native key type baked into the class name instead, since their bucket structure depends on it.

API reference

Value-only heaps (Heap-shaped: BinaryArrayHeap, DaryArrayHeap, the weak heaps, MinMaxBinaryArrayDoubleEndedHeap, SoftHeap)

Method Description
push(key) Insert key.
peek() Return the minimum key, or None if empty.
pop() Remove and return the minimum key, or None if empty.
len(heap) Number of entries.
is_empty() Whether the heap has no entries.
clear() Remove every entry.

MinMaxBinaryArrayDoubleEndedHeap additionally has peek_max()/pop_max(). SoftHeap additionally has rank_limit() and a fallible meld(other) (see Soft heaps below).

Addressable heaps (everything else, except radix heaps)

Method Description
insert(key, value=None) Insert an entry, returning a handle.
peek() Return (handle, key, value) for a minimum entry, or None.
pop() Remove and return (key, value) for a minimum entry, or None.
key(handle) The key addressed by handle. Raises ValueError if stale/foreign.
value(handle) The value addressed by handle. Raises ValueError if stale/foreign.
set_value(handle, value) Replace the value addressed by handle.
delete(handle) Remove and return (key, value) for handle.
len(heap) / is_empty() / clear() As above.
decrease_key(handle, key)* Decrease the key addressed by handle. Raises ValueError if key isn't lower, or the handle is invalid.
meld(other)* Absorb other (same class and key_type); other is left empty.
peek_max() / pop_max() / increase_key(handle, key)* Only on double-ended heaps (ReflectedFibonacciHeap, ReflectedPairingHeap).

* Only on classes that support that capability — see the table above (SoftAddressableHeap has no decrease_key; the non-meldable classes have no meld).

Radix heaps (monotone)

Radix heaps enforce that removed keys are nondecreasing: once a key is popped, no smaller key may be inserted or decrease_key'd below it. They also require a fixed inclusive [minimum_key, maximum_key] range at construction. Violating either raises ValueError.

Method Description
Cls(minimum_key, maximum_key) Construct with inclusive key bounds.
try_push(key) (non-addressable) / try_insert(key, value=None) (addressable) Insert, raising ValueError on an out-of-range or non-monotone key.
peek(), pop(), len(heap), is_empty(), clear() As above.
bucket_count() Number of radix buckets the heap allocated.
(addressable only) key(), value(), set_value(), delete(), decrease_key() As above; decrease_key still enforces monotonicity.

Soft heaps

SoftHeap/SoftAddressableHeap implement a Kaplan-Zwick soft heap: in exchange for faster operations, up to error_rate (a fraction between 0 and 1, exclusive) of keys may be corrupted (silently increased) at any time. Use them when an approximately-correct minimum is acceptable — for example, as a building block inside a minimum spanning tree algorithm. Neither supports decrease_key, since corruption means the heap no longer tracks each entry's exact position.

Error handling

Situation Exception
Stale or foreign handle ValueError
decrease_key/increase_key with a key that doesn't strictly move that direction ValueError
Invalid construction parameter (non-power-of-two/too-small degree, out-of-(0,1) error_rate, invalid radix bounds) ValueError
Radix heap key out of range, or lower than the last removed key ValueError
Non-finite (nan/inf) key under key_type=float or in an F64Radix* heap ValueError
Wrong Python type for key_type=int/float (e.g. a string) TypeError
Incomparable objects under key_type=object TypeError (same as the underlying <)
meld() between heaps of different key_type ValueError
Empty heap (peek/pop/pop_max) not an error — returns None

Development

python3 -m venv .venv
source .venv/bin/activate
pip install maturin pytest
maturin develop
pytest

tests/test_large_scale.py ports the large-scale conformance invariants rheaps' own Rust test suite exercises against each implementation (thousands of ascending/random/decreasing-key operations checked against a plain sorted() oracle, arbitrary-order deletion, melding, and — for soft heaps — the weaker "every inserted key eventually comes back out, in some order" invariant that corruption permits) across every parametrized heap class. It runs as part of the same pytest invocation (a few extra seconds), not a separate opt-in suite.

The Rust source lives in src/:

  • key.rs — the int/float/object key representations and conversions.
  • error.rs — rheaps error types → Python exceptions.
  • handles.rs — one #[pyclass] per rheaps handle type.
  • macros.rs — shared codegen: each heap-trait shape (Heap, AddressableHeap + DecreaseKeyHeap, MeldableAddressableHeap, DoubleEndedAddressableHeap, and the radix-heap shapes) gets one macro that a concrete heap module composes.
  • heaps/{array,tree,dag,monotone}.rs — the 31 concrete heap classes, mostly a handful of lines each invoking the shared macros.

Documentation

Full documentation (API reference, tutorials, and an example gallery) is built with Sphinx:

source .venv/bin/activate
pip install -e ".[docs]"     # sphinx, sphinx-rtd-theme, sphinx-gallery, matplotlib, pillow
make -C docs html

The rendered pages land in docs/_build/html/index.html. The source lives in docs/:

  • docs/api/ — introduction.rst (heap inventory by family), heaps.rst and handles.rst (autoclass reference for every heap and handle class).
  • docs/tutorials/ — a walkthrough of the addressable-heap API (insert/peek/decrease_key/delete/meld).
  • docs/install.rst, docs/license.rst, docs/credits.rst.

examples/ holds the sphinx-gallery scripts rendered into that documentation build (addressable/, array/, monotone/, one plain, runnable .py file per example) — run any of them directly with python3 examples/addressable/plot_pairing.py without building the docs.

Relationship to rheaps and JHeaps

This package is a thin PyO3 wrapper: it doesn't reimplement any algorithm, it just exposes the rheaps crate — an idiomatic Rust port of JHeaps — as Python classes. If you use this library, consider citing the paper describing the algorithms and implementation set it's derived from:

D. Michail. JHeaps: An open-source library of priority queues. SoftwareX, 16:100869, 2021. https://doi.org/10.1016/j.softx.2021.100869

License

Copyright 2024-2026 Dimitrios Michail

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this project's files except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0, or see the LICENSE file in this repository.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

SPDX-License-Identifier: Apache-2.0

Metadata

Release files for rheaps 0.16.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 rheaps 0.16.0
File Size Uploaded Provenance Actions
rheaps-0.16.0.tar.gz 44.8 kB Without provenance Details for rheaps-0.16.0.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for rheaps 0.16.0
File Actions
rheaps-0.16.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details for rheaps-0.16.0-cp314-cp314-win_amd64.whl
rheaps-0.16.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 for rheaps-0.16.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
rheaps-0.16.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details for rheaps-0.16.0-cp314-cp314-macosx_11_0_arm64.whl
rheaps-0.16.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details for rheaps-0.16.0-cp313-cp313-win_amd64.whl
rheaps-0.16.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 for rheaps-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
rheaps-0.16.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details for rheaps-0.16.0-cp313-cp313-macosx_11_0_arm64.whl
rheaps-0.16.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for rheaps-0.16.0-cp312-cp312-win_amd64.whl
rheaps-0.16.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 for rheaps-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
rheaps-0.16.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details for rheaps-0.16.0-cp312-cp312-macosx_11_0_arm64.whl
rheaps-0.16.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details for rheaps-0.16.0-cp311-cp311-win_amd64.whl
rheaps-0.16.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 for rheaps-0.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
rheaps-0.16.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details for rheaps-0.16.0-cp311-cp311-macosx_11_0_arm64.whl
rheaps-0.16.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details for rheaps-0.16.0-cp310-cp310-win_amd64.whl
rheaps-0.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details for rheaps-0.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
rheaps-0.16.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details for rheaps-0.16.0-cp310-cp310-macosx_11_0_arm64.whl

Total release size: 8.6 MB

Release files / rheaps-0.16.0.tar.gz

Download URL rheaps-0.16.0.tar.gz
Size 44.8 kB
Tags Source
SHA-256 checksum
How to use checksums
bfc306b5cf8cc734393e5736d31f18c378f22bc7dd7d70baa5874f79f887e472
BLAKE2b-256 checksum
How to use checksums
55b9c13befafa5cc9733e866c9ba5a447ff63921e88cd5d1fbe9b0762f9afad8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / rheaps-0.16.0-cp314-cp314-win_amd64.whl

Download URL rheaps-0.16.0-cp314-cp314-win_amd64.whl
Size 524.5 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
d492e48aaa06ee9468695bff0f3dc5b6a17b64559f02736e054e1f472ce5eee8
BLAKE2b-256 checksum
How to use checksums
e6a1e8ac5f61bff925fea6b0b3108b797c238e8d6c6a989a932f2bb236ee821e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / rheaps-0.16.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL rheaps-0.16.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 626.3 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
666a2e8a1b91c210aca18af93f33ba82b69bdf6635fe68b6ef3e511f5d12ff58
BLAKE2b-256 checksum
How to use checksums
02cf9e26d9f3f786b1d14312d5c4fe2459a4d9e268b32a65b065f0ac42bba900
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / rheaps-0.16.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL rheaps-0.16.0-cp314-cp314-macosx_11_0_arm64.whl
Size 569.3 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b16a108942e5e7cda4d70e5cddf0737af8d6ce83427990073c78d4579cdb3316
BLAKE2b-256 checksum
How to use checksums
e5ca352391c5f0d8be125d3f63dfd99a2023cf7c0a43b57760a68b13217c2eab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / rheaps-0.16.0-cp313-cp313-win_amd64.whl

Download URL rheaps-0.16.0-cp313-cp313-win_amd64.whl
Size 522.3 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
4034ce27c75add7d18c96aae9e1b04fbf392669d80ed1009f45ee5bf137972ba
BLAKE2b-256 checksum
How to use checksums
0ef6026323f45c7a8d18633fefe3b11d8861692063ee3ee7406aaaa803145b27
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / rheaps-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL rheaps-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 624.6 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e76bd99ba742334ff26e32c6fc3efe8a724ab203b0d62585bf7700da77c1f5b6
BLAKE2b-256 checksum
How to use checksums
919c9e385046aa49aeabfd78ee38c63106ceb87d7b5b5c9f700576b3a8cb6634
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / rheaps-0.16.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL rheaps-0.16.0-cp313-cp313-macosx_11_0_arm64.whl
Size 568.5 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5088a0e7179d073a6feb6d67a3e2d27f3ac33808949cfc6ef6f5b5ec64e4835b
BLAKE2b-256 checksum
How to use checksums
736ecf802ed1b0fe8e0b490372dd891c21280e3843f08738fdfb154c025be844
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / rheaps-0.16.0-cp312-cp312-win_amd64.whl

Download URL rheaps-0.16.0-cp312-cp312-win_amd64.whl
Size 523.9 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
a759ca94a9dd85aef207df60298201e072d80d50d5c0be92f22e8bcaeffcddc6
BLAKE2b-256 checksum
How to use checksums
990469a7be01800f7655e33be85dbbbf89d10c4cf30be89a326b242db72c48d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / rheaps-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL rheaps-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 625.8 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
ec27701d01f7780a4c1b331e3b65aaa6af0bf2566f1156bf4cc2ea441084e2c1
BLAKE2b-256 checksum
How to use checksums
38067aaebd1a125381ab48f573828cceaeefc9a46b4e5da9b7316fa5e30a007d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / rheaps-0.16.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL rheaps-0.16.0-cp312-cp312-macosx_11_0_arm64.whl
Size 571.7 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
260e7a2bfd76c34df05db2a7f90c2f4c7e35781ce9a9be7888ffafdd943519bd
BLAKE2b-256 checksum
How to use checksums
e7d3c8341547921d727c41cb57c3be80a7ca566618682dbf849c74fffdd90952
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / rheaps-0.16.0-cp311-cp311-win_amd64.whl

Download URL rheaps-0.16.0-cp311-cp311-win_amd64.whl
Size 529.5 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
24553efcb54ccc6af381a5b42e8e591bd42ce83d75f76ae05b50c1a9788fe55f
BLAKE2b-256 checksum
How to use checksums
ad8f3e0b27aa4d48fe1d63bbd0daff7562cf8d55eb5a9730235c4e0ffda1e0be
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / rheaps-0.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL rheaps-0.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 624.9 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
43576e3281454712a3f285320897bbe9659c283805cb92e3220f3595b2a0388a
BLAKE2b-256 checksum
How to use checksums
17c8e20f24bde7a7c043d95b825a0d6b39aa2db3ecc3befc3b2aa03332ad23d3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / rheaps-0.16.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL rheaps-0.16.0-cp311-cp311-macosx_11_0_arm64.whl
Size 575.9 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1a38f64013c61ecf0e5b02fee78d8ec74504326fb85436906fc8d6f1ebea36bf
BLAKE2b-256 checksum
How to use checksums
8b2278036aad37728e2d3d13b64f6924d17fec28398f6f4fa769f3989de7110e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / rheaps-0.16.0-cp310-cp310-win_amd64.whl

Download URL rheaps-0.16.0-cp310-cp310-win_amd64.whl
Size 516.0 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
62c63b40dced38a4df610c09fbc85c8952567e7bae03e78108b0a50dac1ddaf4
BLAKE2b-256 checksum
How to use checksums
7880c5e105de6535f99bd0e492afd4409e9c715e08ed175412b6d3925cd92ba6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / rheaps-0.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL rheaps-0.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 613.7 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
59820091f2208c28d6f78f14f861f72d2af51c748e278c31b4f64697d9da173c
BLAKE2b-256 checksum
How to use checksums
806e0082f8ea58b22ef3511def59f65d280e6e647fd660184caa3e26f1a3ebb7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / rheaps-0.16.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL rheaps-0.16.0-cp310-cp310-macosx_11_0_arm64.whl
Size 575.5 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ef0bce806712bf150fd8d74172a716f21dac978d1b1091a0cb3ec6ee6cee26fa
BLAKE2b-256 checksum
How to use checksums
4f87aa5f0ad682b83781a6e778f5f228b70916ec3d46de3e9393feba1f10dd9b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for rheaps 0.16.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.16.0 This release

16 release files No provenance

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