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 std::collections::HashMap's API and support the same operations. Each map starts with zero allocation (new()) and grows dynamically 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)

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

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

  Each descriptor stores cached `ctrl_ptr`, `data_ptr`, capacity, plus
  per-shape metadata (salt, mask, etc). All slot/ctrl/SIMD ops live on
  the `ArenaSlots` trait (`src/common/arena.rs`).


ElasticHashMap
==============

  levels: Box<[Level]> (descriptors only)

    Level 0    ctrl_ptr, data_ptr, capacity (~half of total slots)
    Level 1    geometrically halved
    Level 2    ...

    per-level  group_count, group_count_mask, salt, len, tombstones,
               half_reserve_slot_threshold, budget_cap

  arena:       Arena (the single allocation backing every level above)

  map-wide     len, total_slots, max_insertions, reserve_fraction,
               batch_plan, current_batch_index, batch_remaining,
               max_populated_level, hash_builder, alloc


FunnelHashMap
=============

  levels: Box<[BucketLevel]> (descriptors)

    Level 0
      ctrl region   fp xx fp __ ... fp fp xx __ ... fp ...
      slot region   kv kv kv __ ... kv kv kv __ ... kv ...
                    └── bucket 0 ──┘└── bucket 1 ──┘
      (xx in ctrl marks a removed slot; the slot bytes may still hold
       the stale kv physically, but are logically uninit — never read.)

    Level 1    (same layout, smaller buckets)

    per-level  bucket_count_mask, bucket_size_log2, salt, len, tombstones

  special: SpecialArray

    primary    group-probed (paper B)
               group_count_mask, len, tombstones

    fallback   two-choice bucketed (paper C)
               bucket_count, bucket_size_log2, len, tombstones

  arena:       Arena (covers every level + both special regions)

  map-wide     len, total_slots, max_insertions, reserve_fraction,
               primary_probe_limit, max_populated_level, hash_builder, alloc

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.1.tar.gz (190.4 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.1-cp314-cp314t-win_arm64.whl (286.1 kB view details)

Uploaded CPython 3.14tWindows ARM64

opthash-0.10.1-cp314-cp314t-win_amd64.whl (309.3 kB view details)

Uploaded CPython 3.14tWindows x86-64

opthash-0.10.1-cp314-cp314t-win32.whl (278.0 kB view details)

Uploaded CPython 3.14tWindows x86

opthash-0.10.1-cp314-cp314t-musllinux_1_2_x86_64.whl (664.4 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

opthash-0.10.1-cp314-cp314t-musllinux_1_2_i686.whl (699.0 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ i686

opthash-0.10.1-cp314-cp314t-musllinux_1_2_armv7l.whl (731.1 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARMv7l

opthash-0.10.1-cp314-cp314t-musllinux_1_2_aarch64.whl (624.8 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

opthash-0.10.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (455.7 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

opthash-0.10.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl (484.9 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ s390x

opthash-0.10.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (582.6 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ppc64le

opthash-0.10.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (457.3 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARMv7l

opthash-0.10.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (448.2 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

opthash-0.10.1-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl (490.2 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.5+ i686

opthash-0.10.1-cp314-cp314t-macosx_11_0_arm64.whl (425.5 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

opthash-0.10.1-cp314-cp314t-macosx_10_12_x86_64.whl (444.9 kB view details)

Uploaded CPython 3.14tmacOS 10.12+ x86-64

opthash-0.10.1-cp310-abi3-win_arm64.whl (293.3 kB view details)

Uploaded CPython 3.10+Windows ARM64

opthash-0.10.1-cp310-abi3-win_amd64.whl (314.8 kB view details)

Uploaded CPython 3.10+Windows x86-64

opthash-0.10.1-cp310-abi3-win32.whl (286.4 kB view details)

Uploaded CPython 3.10+Windows x86

opthash-0.10.1-cp310-abi3-musllinux_1_2_x86_64.whl (666.3 kB view details)

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

opthash-0.10.1-cp310-abi3-musllinux_1_2_i686.whl (702.2 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ i686

opthash-0.10.1-cp310-abi3-musllinux_1_2_armv7l.whl (735.2 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARMv7l

opthash-0.10.1-cp310-abi3-musllinux_1_2_aarch64.whl (628.4 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

opthash-0.10.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (458.4 kB view details)

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

opthash-0.10.1-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (487.0 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ s390x

opthash-0.10.1-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (583.7 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ppc64le

opthash-0.10.1-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (460.9 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARMv7l

opthash-0.10.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (452.7 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

opthash-0.10.1-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl (494.9 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.5+ i686

opthash-0.10.1-cp310-abi3-macosx_11_0_arm64.whl (424.7 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

opthash-0.10.1-cp310-abi3-macosx_10_12_x86_64.whl (442.8 kB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: opthash-0.10.1.tar.gz
  • Upload date:
  • Size: 190.4 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.1.tar.gz
Algorithm Hash digest
SHA256 542ef1b235272484ff40cd15b83c97e039cbccc614ca9e39f6fc22e1a5bfeafe
MD5 5a182fe4bcc9f54c798ac8d07271f69a
BLAKE2b-256 b2b98f19094b70dd1ed435deddeaa3a44f883f9fd520f3af4f62de4f6bb054e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1.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.1-cp314-cp314t-win_arm64.whl.

File metadata

  • Download URL: opthash-0.10.1-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 286.1 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.1-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 3ee4afc28cbc922f88532275d2f75e6d7f31a7462e428aac06a3c1e7d1864d77
MD5 37b01ae3296a96a1093738483c785770
BLAKE2b-256 55141d9d90219aca5d9018a7c8e6aa8ca1e9661dee2295d01a1ef277d79e207b

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: opthash-0.10.1-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 309.3 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.1-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 db0164c66dfd2b0f7f85a8774b529602e8a88124a6ac834790338c3b5c119116
MD5 23bbb408f3ea466e9446cd69058b0b3d
BLAKE2b-256 fc5f3043e794656a1311a20bfbb9202ff67ebd31b6b6941d654e3e00325648d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp314-cp314t-win32.whl.

File metadata

  • Download URL: opthash-0.10.1-cp314-cp314t-win32.whl
  • Upload date:
  • Size: 278.0 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.1-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 2b650ff10026d6be73206091839223c1a76de06a516f21257878bc235ac5e587
MD5 57e7ac544d25643ced36095bb611feee
BLAKE2b-256 5a160377c9ffd86801330fb686985257558b741d2dcd16d13e9a3cf575a0fe40

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fcba7d2fa903d38b2242719edc0d0b640f0b4433688e721e151c94d706f335db
MD5 13ff9dd7150914666b2ca74e1678a483
BLAKE2b-256 6f5775c44265a4b2dd9424b85a5084aa64580baf2ed466587775f1be75d37f2c

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp314-cp314t-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp314-cp314t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 43c9ac0aedd4fa85c3459d0c64866cc3c63b9a3735db4b5a30cba7bd22375976
MD5 990ca701cbb37605771feef8a4c6a1dd
BLAKE2b-256 9df41c25749ac2c26d848708e749194415c5d8fb0bd67bf95e8dfb47372d90d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp314-cp314t-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp314-cp314t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 400218ca81a74331d9813657b36cfcc90d2b429453d0867aee7545a7c60996b6
MD5 ff6467da68df2e58575061e3fdfa9771
BLAKE2b-256 6b8ec557d12b9bc9bf99e9eb0c7af38e775aff5fffc05d6f707c99ea833df1e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c02f0dafe9a15272d0f545e59a82374f59b9364ac2f7831f3044026e05d3b6cc
MD5 ef0e07d7b5f58da1e739152dc53886ec
BLAKE2b-256 db7fb4e384feda5d481b7e15328acaea8746f67754e07c9f70f8660af29b0590

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 db5a4b48739b7c5365b108e37262162114083f2b679bcfe7a979594ec25f08b7
MD5 132360d2795920e6f83d8a7fa80acc61
BLAKE2b-256 87c1c482281994d930b310b3d5451218d50c5cce6ffdfd900ac2d4a41d6c6b98

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 f722862843de76b7d84c00abc3858290314d208781dcd7c6898afe89242cc71f
MD5 2ef4cb66ac4c90ca5a9ab2bbdb7a9846
BLAKE2b-256 fbbd42e3d54c635f5a181b3946e07b1953991ac53498339b26602a204d0c53e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 7ca1ee068eb81e7fc39ee21e535f50df93bf34827ec65a26e04d052b5f752565
MD5 8858f0493533b8d3db8e19fbb6208bb9
BLAKE2b-256 adb56147542a0c6fff807b3d7d48eb0f896f96a8cf692ff44630c615c87a86df

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 c50f18312f097966cbe135ae2c01951130d775439db30b14521450d94dd1500d
MD5 30d9c3231e54eb18ba5a537bb1c892a8
BLAKE2b-256 b4b592a47416805e67c8cbd005b61452c9345044268e80dcfbb6cadbf8184a53

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 766520841c4b30a912836247a5fa41fd836b025d533e29c005f17ac3bcd0b284
MD5 8acbceee911886c2e61fb7f96080b82f
BLAKE2b-256 629e163dd5ea24fdf73064d40881d548aea418207f2d36ff0fced8f4d2e9ee10

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 a27be7c56780beb1e319a99586e004622ec09537c20e59133b902a60ae3e9fe9
MD5 597f2e50d39e6ffe2eff91c08f3ddce0
BLAKE2b-256 9b118bf6c263cf4b1c137358e1119604c380ce1eaec5e29c86ab161667b3b208

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d93b7cc4ca2bdbaca0f91316a6b0f8505f8e0417ada1cbf0cfc5a93bcc8f1e55
MD5 da184373068695ea079f3be9b30ed291
BLAKE2b-256 85a4d4b26a9c5a5f3c4793d6c55c689fb14a55ca387aa0515bbe07878322167a

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp314-cp314t-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 95c30634f3e09d7e8fe0eecc259ce32d9e2a7d996fcbac376d43e16532a03ced
MD5 e0f3b6486d2c48c7e2df611257726b69
BLAKE2b-256 6f776aba681e3df968d4d58c67dab67950d7cf99bd4d0525891417a3f0e0e320

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp310-abi3-win_arm64.whl.

File metadata

  • Download URL: opthash-0.10.1-cp310-abi3-win_arm64.whl
  • Upload date:
  • Size: 293.3 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.1-cp310-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 2fd7d1de6c1f7b2aac75726c9f161b7b0b14bffbd9b61b2ed9101183dfe2270b
MD5 bc815eb04bd22a004ad62d308d55ffeb
BLAKE2b-256 eaa85a17b32a0abcd7b8ee38a0cceb301d4ee06bbf59a2918ebc0af34b03b796

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: opthash-0.10.1-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 314.8 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.1-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 55273f1b4781a6f9c2f7e815b350f5839cb4f308f4311850301d7d45c656462e
MD5 e5864b48ab06371f64dfb4d6831237b6
BLAKE2b-256 5a48cbea3e1ddfda877bd3ad7bab25c63e8e2acbc673469c79ca0e5368d18eb6

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp310-abi3-win32.whl.

File metadata

  • Download URL: opthash-0.10.1-cp310-abi3-win32.whl
  • Upload date:
  • Size: 286.4 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.1-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 b2533370188811d8d894a8f78c2488df2dcaeaba924fe3596615dfb9b8df8224
MD5 0588f99ab3caab036a4db0c5c8002984
BLAKE2b-256 b918a9916f18bcd695ab741f2c43eea9ed3a92235738814f07536a953ac99eda

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 656e6a946e5d35003de69d98d80fb03bb940782caac0ee148cb3a99f3e3c323c
MD5 5bf8377b25236f22b5cc803ad0c755d8
BLAKE2b-256 82fa736bf833e5c6523b6f65145117fa529548ca1076738d21164564920385d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp310-abi3-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp310-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 3d75b3d61af363e2dede9e87531d003de2fe124ddc1424d151f75b049e87d7ed
MD5 17c735ef3402472eb2494bc2fb69bb2f
BLAKE2b-256 793c08c751123a3ad81920947215f3a4d7912d88819da9de0aebcefea9b69651

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp310-abi3-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp310-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 74b599e6a26ad0fe87a7b117c2f8adcd6461fd31825779d7f446b870ce19026e
MD5 5241ca82afd0224470297f3dad5285e8
BLAKE2b-256 fb09e05342499667383896c09d2b320913a3bb190e641a5d315523d07fd64e4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ee6ef1c99937aca920ac378ce2dc07d1d64b827d8faa504a64bb8777855a0f55
MD5 e7ad8f325ce961b221efd3ef015a4923
BLAKE2b-256 d837f91fc1eb51ec856c9030e5be0ba25e291b9c0f31f0c18a2da90bab08c980

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 225571e4f89ce928cb5c66b483a37ce9be343260b49815a374fd19e3acb533cc
MD5 b610e125477944cf54d492262003b2dd
BLAKE2b-256 08b3530355368094555195b0a233854d95b17cd34e26caa5428370cf04577439

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 fcb486acd0c0df48570cab9fd203df6743d3ef6985ada6b3ae833ccbda613082
MD5 d203e4f931e2c70a56200306cebcd762
BLAKE2b-256 c290f2f311ea432ea99297f24217c72d401cf3ae8d7510d4091a889fa1e020ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 84e1c748f9c9f3493c189ef0774cd95dd701fc0989fa039155c57accef366cac
MD5 524f0d1c71db98ac5db09525343b969a
BLAKE2b-256 fc290ca05d99a6c0b4fe56599e04f9bd6f26dd381ca050bdeecea0713f479199

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 236136c9fda91f43ef67b8681f91e8bcabc6f8f5cf7cb8e6ffd601cc287173bb
MD5 ed33ce577b2deb1a7ebe04172d3efb04
BLAKE2b-256 e0a0551df3019e7fd0003423678edee654bda318386c8656087bcf8f758c7a5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e6bcb2ed20c548790ac13c76d90fabed5797844c8a422cc67dd1be0ccd7c8eb5
MD5 1cddcfd8686f5cfbba05a08e19b84dc1
BLAKE2b-256 3e7fcf22d686ed44a8b8377d4ab4bb925e68d706d856d467cfc7a2d246483bf6

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 a844b2354c41fc36485e75a74cb84e94a8ede8b590c1633b595cf6b16277e895
MD5 92875d65df45f5a2d9a694ebd2cf3524
BLAKE2b-256 7dea37908c9f17445059a666651c672423de694627c7e2a6dc05854917a28cbb

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b28436f1d18c5abbf5f83a38a47949323137fbf80cbddfbae25ef6685867d797
MD5 ade7562dd50e8876947bd8654e79fcea
BLAKE2b-256 4f8994e1ea7795b3ccf1c594b2139db79523566b25b2fcd719798d7545a2d9c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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.1-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for opthash-0.10.1-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e686e159f16c7788c27fccf3937d011129170dbdffe3bfdb4d780a519aa52e9f
MD5 ea8e620a8abbfd6aae9c15c15ac4ae33
BLAKE2b-256 45844ce85f73c6a5277f8fbc9b396b926685f0ee67cf45a879678c00a69decec

See more details on using hashes here.

Provenance

The following attestation bundles were made for opthash-0.10.1-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