Skip to main content

Rust implementations of Elastic Hashing and Funnel Hashing with Python bindings

Project description

opthash

Crates.io PyPI MSRV Python CI CodSpeed License

Rust implementations of Elastic Hashing and Funnel Hashing from Optimal Bounds for Open Addressing Without Reordering (Farach-Colton, Krapivin, Kuszmaul, 2025) — see References 1.

Both are open-addressing hash maps that achieve optimal expected probe complexity without reordering elements after insertion.

Data Structures

Both maps share a common core: a single-Arena allocation per map indexed by per-level descriptors, 7-bit fingerprint control bytes, SIMD control-byte scans for occupancy + lookup, and tombstone accounting 2 3 4. Per-level salt re-randomization 5 decorrelates probe paths across levels. The default BuildHasher is foldhash 6. The two maps differ in how they probe within a level:

  • ElasticHashMap<K, V> — Levels with geometrically halving capacities, each probed by a SwissTable-style triangular sequence ((idx + delta) & mask); inserts follow a per-level probe budget.
  • FunnelHashMap<K, V> — Bucketed levels (paper §5): a key maps to one bucket per level; overflow spills to the next level, not other buckets. Plus a split special array: primary (odd-step group probe) and fallback (two-choice buckets).

Both maps mirror the std::collections::HashMap API. Each starts with zero allocation (new()) and grows on demand; the reserve_fraction headroom knob is exposed via dedicated constructors.

Usage

Rust

cargo add opthash
use opthash::{ElasticHashMap, FunnelHashMap};

let mut map = ElasticHashMap::new();
map.insert("key", 42);
assert_eq!(map.get("key"), Some(&42));

let mut map = ElasticHashMap::with_capacity_and_reserve_fraction(1024, 0.10);
map.insert("key", 42);
assert_eq!(map.get("key"), Some(&42));

let mut map = FunnelHashMap::with_capacity_and_reserve_fraction(1024, 0.10);
map.insert("key", 42);
assert_eq!(map.get("key"), Some(&42));

Python

pip install opthash
from opthash import ElasticHashMap, FunnelHashMap

m = ElasticHashMap()
m["key"] = 42
assert m["key"] == 42
assert "key" in m and len(m) == 1

m = ElasticHashMap.with_options(capacity=1024, reserve_fraction=0.10)

m = FunnelHashMap.with_options(capacity=1024, reserve_fraction=0.10)

Layout Sketch

Arena (one allocation per map)
==============================

  fp = fingerprint (7-bit control byte)   kv = key-value entry
  __ = empty (CTRL_EMPTY 0x00)            xx = tombstone (CTRL_TOMBSTONE 0x80)
  a tombstoned kv may still sit in its slot physically, but is logically uninit

  Control bytes pack first, then alignment padding so the slot region starts
  at align_of::<SlotEntry<K, V>>(), then the slots:

  arena::ptr ► [fp fp xx __ ... ][fp xx fp __ ...][fp fp ...][  pad  ][kv kv kv ...][kv ... ]
               └─── ctrl L0 ────┘└─── ctrl L1 ───┘└── ... ──┘         └─ slots L0 ─┘└─ ... ─┘
               ▲ each level descriptor caches ctrl_ptr + data_ptr into the arena.

  All slot/ctrl/SIMD ops live on the ArenaSlots trait (src/common/arena.rs).


ElasticHashMap — geometrically halving levels
=============================================

  Box<[Level]> over the arena; each level ~half the previous, probed by a
  SwissTable triangular sequence (idx → idx+1 → idx+3 ... & mask). A full
  level sends the key down to the next:

    L0  [################################]  ~half of all slots
    L1  [################]
    L2  [########]
    L3  [####]
    ...


FunnelHashMap — fixed-width buckets, overflow down the funnel
=============================================================

  Box<[BucketLevel]>; each level is a grid of β-wide buckets. A key hashes
  to one bucket per level (levels salt independently); a full bucket spills
  the key to the next level. β is fixed, so levels differ only in bucket count:

    key
     │  hashed independently to one β-wide bucket per level
     ▼
    L0  [b0][b1][b2][b3][b4][b5] ┐ bucket full?
    L1  [b0][b1][b2]             ▼ rehash to next level
    L2  [b0]
    special ─► primary (group-probed · paper B) → fallback (two-choice · paper C)

  within one level (buckets sit side by side in the ctrl/slot regions):

    ctrl  fp xx fp __ ... fp fp xx __ ...
    slot  kv kv kv __ ... kv kv kv __ ...
          └── bucket 0 ──┘└── bucket 1 ──┘

Benchmarks

See benches/README.md for comparison charts.

References

  1. Martín Farach-Colton, Andrew Krapivin, William Kuszmaul. Optimal Bounds for Open Addressing Without Reordering (2025). arXiv: https://arxiv.org/abs/2501.02305. Establishes the elastic and funnel hashing schemes implemented in src/elastic.rs and src/funnel.rs; the funnel "special array" split into primary (group-probed, paper B) and fallback (two-choice, paper C) follows the paper's construction directly.

  2. Abseil. SwissTable design notes. https://abseil.io/about/design/swisstables. Source of the 7-bit fingerprint control-byte layout + SIMD group scans used by the shared ArenaSlots trait (see src/common/arena.rs, src/common/control.rs, src/common/simd.rs) and the triangular (idx + delta) & mask probe sequence used in Level::triangular_group_start.

  3. Matt Kulukundis. Designing a Fast, Efficient, Cache-friendly Hash Table, Step by Step (CppCon 2017). https://www.youtube.com/watch?v=ncHmEUmJZf4. Talk introducing the SwissTable design referenced above.

  4. hashbrown — Rust port of SwissTable. https://github.com/rust-lang/hashbrown. Used as the absolute throughput ceiling in the Criterion benches (see benches/README.md).

  5. J. Lawrence Carter, Mark N. Wegman. Universal Classes of Hash Functions (STOC 1977 / JCSS 1979). DOI: https://doi.org/10.1016/0022-0000(79)90044-8. Foundational hash-based probing model the FKK bounds rely on; the per-level salt re-randomization in Level/BucketLevel (see level_salt in src/common/math.rs) follows the universal-hashing assumption.

  6. foldhash crate. https://crates.io/crates/foldhash. Default BuildHasher (foldhash::fast::RandomState) wired up in src/common/mod.rs.

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

opthash-0.10.3.tar.gz (206.7 kB view details)

Uploaded Source

Built Distributions

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

opthash-0.10.3-cp314-cp314t-win_arm64.whl (294.3 kB view details)

Uploaded CPython 3.14tWindows ARM64

opthash-0.10.3-cp314-cp314t-win_amd64.whl (310.5 kB view details)

Uploaded CPython 3.14tWindows x86-64

opthash-0.10.3-cp314-cp314t-win32.whl (279.2 kB view details)

Uploaded CPython 3.14tWindows x86

opthash-0.10.3-cp314-cp314t-musllinux_1_2_x86_64.whl (669.4 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

opthash-0.10.3-cp314-cp314t-musllinux_1_2_i686.whl (705.2 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ i686

opthash-0.10.3-cp314-cp314t-musllinux_1_2_armv7l.whl (732.2 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARMv7l

opthash-0.10.3-cp314-cp314t-musllinux_1_2_aarch64.whl (629.0 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

opthash-0.10.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (459.8 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

opthash-0.10.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl (482.7 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ s390x

opthash-0.10.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (588.8 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ppc64le

opthash-0.10.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (458.1 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARMv7l

opthash-0.10.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (453.1 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

opthash-0.10.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl (494.8 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.5+ i686

opthash-0.10.3-cp314-cp314t-macosx_11_0_arm64.whl (427.7 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

opthash-0.10.3-cp314-cp314t-macosx_10_12_x86_64.whl (444.0 kB view details)

Uploaded CPython 3.14tmacOS 10.12+ x86-64

opthash-0.10.3-cp310-abi3-win_arm64.whl (302.5 kB view details)

Uploaded CPython 3.10+Windows ARM64

opthash-0.10.3-cp310-abi3-win_amd64.whl (318.0 kB view details)

Uploaded CPython 3.10+Windows x86-64

opthash-0.10.3-cp310-abi3-win32.whl (286.2 kB view details)

Uploaded CPython 3.10+Windows x86

opthash-0.10.3-cp310-abi3-musllinux_1_2_x86_64.whl (672.9 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ x86-64

opthash-0.10.3-cp310-abi3-musllinux_1_2_i686.whl (711.7 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ i686

opthash-0.10.3-cp310-abi3-musllinux_1_2_armv7l.whl (736.9 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARMv7l

opthash-0.10.3-cp310-abi3-musllinux_1_2_aarch64.whl (635.5 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

opthash-0.10.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (464.8 kB view details)

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

opthash-0.10.3-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (486.0 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ s390x

opthash-0.10.3-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (593.2 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ppc64le

opthash-0.10.3-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (462.7 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARMv7l

opthash-0.10.3-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (459.4 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

opthash-0.10.3-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl (502.0 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.5+ i686

opthash-0.10.3-cp310-abi3-macosx_11_0_arm64.whl (428.8 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

opthash-0.10.3-cp310-abi3-macosx_10_12_x86_64.whl (431.2 kB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file opthash-0.10.3.tar.gz.

File metadata

  • Download URL: opthash-0.10.3.tar.gz
  • Upload date:
  • Size: 206.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for opthash-0.10.3.tar.gz
Algorithm Hash digest
SHA256 ccc0b28669567363cfa449ce75f22c631b805a8fde17a257b87acd716a584e1e
MD5 c72486198e06335c36cb6e96f0c80abe
BLAKE2b-256 d171cce081521b0865c94e2470ce7a1580e24930b3320313b85f132540d2f2f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3.tar.gz:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp314-cp314t-win_arm64.whl.

File metadata

  • Download URL: opthash-0.10.3-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 294.3 kB
  • Tags: CPython 3.14t, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for opthash-0.10.3-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 e1cb72af7b486b76d40dfef47513cf4cb2baf17a31bd613a8420186d1892f7c5
MD5 0f21f144c9774ce27e10b60bf24df750
BLAKE2b-256 cbc9541b228194fef49a0a78ca0d678d581666265456aa13d37db59b4e3d2cd2

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp314-cp314t-win_arm64.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: opthash-0.10.3-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 310.5 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for opthash-0.10.3-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 c52a8e3f4eda108d1659aa6596dd6fbe75e4bce37b174f038d2e60e5718cde32
MD5 b97ea0bde0f8eaf53ebdbd3ccb11dd91
BLAKE2b-256 d00bff88cf658f470d37feb49f8c6be18c1b982d375fedfbcb4b5187a321e0f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp314-cp314t-win_amd64.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp314-cp314t-win32.whl.

File metadata

  • Download URL: opthash-0.10.3-cp314-cp314t-win32.whl
  • Upload date:
  • Size: 279.2 kB
  • Tags: CPython 3.14t, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for opthash-0.10.3-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 faaa892b84d8a8dbba835fcbd748b3c61549f16e663051c1c522259f0939e6ba
MD5 a4912cb29af5bf1e21d5c1c9d9a41c71
BLAKE2b-256 959d01fd7e0b2349280aa2a615063cf01d769a5c5bc54e5d58e52f708b5b86ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp314-cp314t-win32.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6086b440fe1da6bbfa44a73f7e2aadf55b3f6ed27218432e1dff6254e3ac0664
MD5 c836b8415ec8e1a3e4663d4d840650ae
BLAKE2b-256 bba0370c88e4b559b82ae135d85e20ff37ea798fbe4462f8d6604d76eefa0cae

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp314-cp314t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp314-cp314t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 e6d02a36073180239e4096601ee31a3ce1ff8a69548ae4a942d2201fd47092ef
MD5 c72fbbbcd9e16d365777a592497c44c3
BLAKE2b-256 f9c56428e2f072e0656bd8cc034fcf2373a6ab543efa234c4384418a37a47816

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp314-cp314t-musllinux_1_2_i686.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp314-cp314t-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp314-cp314t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 423ae8fc37ab32361f053ba5ba17b683c24a74461d4657d0a9ec9e5b8f9a4195
MD5 0edb4f8809d3c4284574117f80ed1853
BLAKE2b-256 443f4f48e7878fc3d3db4215ad3e22d03d8aa75904b7f15c3b8b09462792a24f

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp314-cp314t-musllinux_1_2_armv7l.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 43a84a58a3bb792e28b262d43e91038e607b024597d44f7e14b436f321f4debe
MD5 88880618feeac3e3c02a36d42741eff1
BLAKE2b-256 67a31dc3e08a2289973a115b3873bc7f86292021dee6aa8301ab7f1f80ee4374

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp314-cp314t-musllinux_1_2_aarch64.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5d685cd1398cedafedbd7157cafaff8f3ad86c70467165fecbdc2f2c0cea2c70
MD5 b2e5dd804b6ee17d89aa506e2e3edbd7
BLAKE2b-256 9ea6aea5838280390ddfb5e63870cdb94e212d3b6f6a9eed05a8b8b06fba789b

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 8a891c3361cc50922f4f513f1956ee8541c2e93f897af5367dc47c1bd15756b8
MD5 f85f67d387c751c6d4e8c0bc752dd18c
BLAKE2b-256 28579932c71f60866197c010a6e229f536f629f3d36909082a1767391b9f5e81

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 0f9bd4bd6f4dfe025705e84cba535842bd8659fb63ac6a57ef7157c2320b0c4d
MD5 2f59f9d7d07ebac04f2fc11ff051cdb2
BLAKE2b-256 18ad047ff024b67ee3485a3deef4f535c82570543b82d24b8e7df47d64581e94

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 1fc14ddce42dabaa9ffef7714d25ade372a2e6ffeac07a9521d848ede1f87fd1
MD5 8dd6112eeb658cac091bdcbd45712677
BLAKE2b-256 297d42c37c634ad57a7f9e0fcb35df952a7fea423d681cfec5472d12c1e767d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 32ebfcb1a2a9d5eba163de8bb24aec89059f5c8d8a91d9d779bf3e96446d1abd
MD5 47e89c6ca6dd9e89cad77b776e3a3959
BLAKE2b-256 a6a3ed0db519d9eb84ccf87afa6d9a21d7e1be461873c806809709c40185e0c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 7fd34ea35fb5c82697d87048d5619c3e425eb099959460570b906db48905263b
MD5 90d0ade131862534b21eacc8584ae37e
BLAKE2b-256 bcc191e1a95a5e1eaa172f9db99c5118ce4a0ca9a4d21bffa0a07631281cd460

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ffd69f25f6051573abcc8ab367a89383d8afd4a8e3242716c62536bd62a3a6b9
MD5 09b1bd31b3049ba1225403f70de726bf
BLAKE2b-256 c93b8766432e50751a97ff455babcf2018ee52fb2d0077a787b9a0faf973a176

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp314-cp314t-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5657b29f0707a47b44a51b326e82215a5f4270ad52440476ca50da8339a0d581
MD5 07ac09348bd22d42f3f83ca2b1316187
BLAKE2b-256 c070467cb3a14d28017134be4701a248d8e5ac5bab4802614572f9fb614aa9cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp314-cp314t-macosx_10_12_x86_64.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp310-abi3-win_arm64.whl.

File metadata

  • Download URL: opthash-0.10.3-cp310-abi3-win_arm64.whl
  • Upload date:
  • Size: 302.5 kB
  • Tags: CPython 3.10+, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for opthash-0.10.3-cp310-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 621ccfbe760bedd68bd12af5b57d180b9b0a47ac2c4526794dcaa5ae57f150e6
MD5 eceaa47024e58ab7f308ac5e6124b5c1
BLAKE2b-256 6efa9e3d45b89b83163304f61b9e2202dc8ab937d19dbad2501a2f04a6e99ccb

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp310-abi3-win_arm64.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: opthash-0.10.3-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 318.0 kB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for opthash-0.10.3-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 29dc15e3cc3415d764af6e445761c23e74230642d1ae0f899e3372663ff1a6e2
MD5 daaceb74c98f7c13b3502e17ed610780
BLAKE2b-256 eddae3ee7e85d013e99011d2f64cf9a28f2aa408779a8d32b8f5afcb9f3ec3e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp310-abi3-win_amd64.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp310-abi3-win32.whl.

File metadata

  • Download URL: opthash-0.10.3-cp310-abi3-win32.whl
  • Upload date:
  • Size: 286.2 kB
  • Tags: CPython 3.10+, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for opthash-0.10.3-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 60859458f0f61515dba12470e319000450be9d6ce3d2e15f00c2e355c935cf6e
MD5 9d3e05deaae6c7dce2d09bb059106ccd
BLAKE2b-256 69481799b771182765d5203dbc3ad36b88b70d6dacb577df9d013c4447d63890

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp310-abi3-win32.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3d30f80641d91580c5c6daf893c5839646c8674cffc61f18ca2d249d21ae6cb0
MD5 ae133bf668606ebdbed177bff9fc2b1b
BLAKE2b-256 dc80d14aefa70945ac1fc99b22afbcc462f9d02f5a359df413b7e48eafb334b2

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp310-abi3-musllinux_1_2_x86_64.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp310-abi3-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp310-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f08a976f4601e81add3f536050f8b90e1d2d2f66c3383732b921b6915055e04d
MD5 15003740f81bfbca44724529bb558929
BLAKE2b-256 848167be62320ac24a20be230e30a642885e05257281154853ec39d878d0a62b

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp310-abi3-musllinux_1_2_i686.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp310-abi3-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp310-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 8307e6e9c44ff5d21072f1e3388f319344f4a31843a0a7b6e892275209e947d1
MD5 1eed350b8dfad3140a65ca1eff66c026
BLAKE2b-256 633a4f549f1753cefd72fd9153b5d2e978874f20f7ca5fe6b3cf8f91d5045504

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp310-abi3-musllinux_1_2_armv7l.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 a086b45252cd36ef04fd38c638284123d785d3462cbbf897f4d73df64c3ce986
MD5 016d202e22d91f20ef4f9cc0fd5cb377
BLAKE2b-256 bcdca2abfe1f70cc038069b30de62645980c7291adb9199953ea4b6aa6e8b361

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp310-abi3-musllinux_1_2_aarch64.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 25277b0638f2a5f1ea8e3d0accab03fbc83750a7d65e31f077a072d852451556
MD5 fae6318ebdee560f4d9c2d4f53fadf8d
BLAKE2b-256 3bcd25a40f9deb04b750c7e1bcf7b387e4ca8e93500a1562704fbcc987f630e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 83c3a5905c1f8ab239957c82f6e6605a1c205f604df0db2832209cbda4e635a6
MD5 98ca1e059651e8f75e001d8459c7e939
BLAKE2b-256 53937e855b2696661ac6b4e81cbc1e2ce2ba852714c62095ecb2f9e2a5af9422

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 8020db58f32e4ea61f08e4935495850f66d0b70ee10a5d892443704a1c39df1f
MD5 a298f870460eec36843b3b051ad57f75
BLAKE2b-256 ff868365dc6fce85b44e9141ca0914b461587519d067e2a62e392dbfea7cc315

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 b2afa37ea0496c716e15b0f8d3c5d4f543bb80a41ed8d03761ed8a00b4d461c6
MD5 ade8b815f4995a9c798d3e51f4d59f09
BLAKE2b-256 905b9c6c0e83ce68d1b9196a3791d23e9588c4c02daa1e8cfcdca7fe868a76c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7434ff362eae5b0ed4a1b8478243646b60cb4bf97ee824ae41eb09ceb657f175
MD5 cf7718c19f355ab3f3712b046daec81f
BLAKE2b-256 43d008e207b676799de4cd3f93bc9eb2df573fafa50c8b84c6e7a6d419f3ba45

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 fa0ab83b74546dda7a345edfa90a4878b52183d3cb4b13b007720cb4ebecd2b8
MD5 d1c3b1274411cdbc71c8e629f3d72385
BLAKE2b-256 89eb659a4214313389f110e8931d12abd086e64bcc6cbfeacdf7457404034024

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee801331f8ec426210c244222912eb74f2c692972c94a23c874228a71a7ba8c1
MD5 bedaa08214ef0cd53aab17982c00f03f
BLAKE2b-256 7dabe736fd05a3ca1fd8f8d09c5396b122e07ffa03b9df8fbd6632e56687ba0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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

File details

Details for the file opthash-0.10.3-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for opthash-0.10.3-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5d6bb715fe1e780c545276cd3bbb87a39169751938cdc8576ac21c6399f0f4e0
MD5 32b232f331deb3d35010adf992cb4a1b
BLAKE2b-256 5f5114bde1ad8f7e1d44efcd2715905d7a3e402b991a717a896f31b08b925a80

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.3-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: python-release.yml on aaron-ang/opthash-rs

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