Skip to main content

Rust implementations of Elastic Hashing and Funnel Hashing with Python bindings

Project description

opthash

Crates.io PyPI MSRV Python CI Python Release Rust Release 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: RawTable-backed multi-level layouts, 7-bit fingerprint control bytes, SIMD control-byte scans for occupancy + lookup, tombstone accounting, and SwissTable-style triangular probing within every level 2 3 4. Per-level salt re-randomization 5 decorrelates probe paths across levels. The default BuildHasher is foldhash 6.

  • ElasticHashMap<K, V> — Flat RawTable per level with geometrically halving capacities; insertion uses per-level probe budgets.
  • FunnelHashMap<K, V> — Bucketed levels plus a split special array: primary (group-probed) 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 grow dynamically on demand. Advanced tuning is available through ElasticOptions, FunnelOptions, and with_options(...).

Usage

Rust

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

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

let mut map = ElasticHashMap::with_options(ElasticOptions {
    capacity: 1024,
    reserve_fraction: 0.10,
    probe_scale: 12.0,
});
map.insert("key", 42);
assert_eq!(map.get("key"), Some(&42));

let mut map = FunnelHashMap::with_options(FunnelOptions {
    capacity: 1024,
    reserve_fraction: 0.10,
    primary_probe_limit: Some(8),
});
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, probe_scale=12.0
)

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

Layout Sketch

RawTable (shared by both maps)
==============================

  fp = fingerprint (7-bit control byte)
  kv = key-value entry, __ = empty, xx = tombstone

  Single allocation, slots first, controls at the end:

  data_ptr ► [kv][kv][  ][kv][  ][kv]... [pad] [fp][fp][__][xx][__][fp]...
             └──── slots (T-aligned) ────┘     └─ controls (16-aligned) ──┘
                                               ▲ ctrl_ptr

  Occupancy is derived from SIMD scans of the control bytes.


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

  levels: Vec<Level>

    Level 0    RawTable  (largest, ~half of total capacity)
    Level 1    RawTable  (geometrically halved)
    Level 2    ...

    per-level  len, tombstones, half_reserve_slot_threshold,
               limited_probe_budgets, salt, group_count_mask

  table-wide   len, capacity, max_insertions, reserve_fraction,
               probe_scale, batch_plan, current_batch_index,
               batch_remaining, max_populated_level, hash_builder


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

  levels: Vec<BucketLevel>

    Level 0
      slots:     kv kv __ __ ... kv kv __ __ ... kv ...
      controls:  fp fp __ __ ... fp fp __ __ ... fp ...
                 └── bucket 0 ──┘└── bucket 1 ──┘

    Level 1    (same layout, smaller buckets)
    ...

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

  special: SpecialArray

    primary    RawTable, group-probed (like elastic)
    (paper B)  len, group_count_mask, group_summaries, group_tombstones

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

  table-wide   len, capacity, max_insertions, reserve_fraction,
               primary_probe_limit, max_populated_level, hash_builder

Benchmarks

See benches/README.md for bench target layout, charts, CLI flags, chart regeneration, and flamegraph profiling.

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 RawTable (see src/common/control.rs, src/common/simd.rs) and the triangular (idx + delta) & mask probe sequence used in ElasticHashMap::triangular_group_start and FunnelHashMap::special_primary_triangular_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.8.0.tar.gz (197.9 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.8.0-cp314-cp314t-win_arm64.whl (235.2 kB view details)

Uploaded CPython 3.14tWindows ARM64

opthash-0.8.0-cp314-cp314t-win_amd64.whl (248.1 kB view details)

Uploaded CPython 3.14tWindows x86-64

opthash-0.8.0-cp314-cp314t-win32.whl (222.2 kB view details)

Uploaded CPython 3.14tWindows x86

opthash-0.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl (603.9 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

opthash-0.8.0-cp314-cp314t-musllinux_1_2_i686.whl (629.3 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ i686

opthash-0.8.0-cp314-cp314t-musllinux_1_2_armv7l.whl (666.9 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARMv7l

opthash-0.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl (564.9 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

opthash-0.8.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (398.2 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

opthash-0.8.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl (418.7 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ s390x

opthash-0.8.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (510.8 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ppc64le

opthash-0.8.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (392.0 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARMv7l

opthash-0.8.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (389.6 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

opthash-0.8.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl (415.9 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.5+ i686

opthash-0.8.0-cp314-cp314t-macosx_11_0_arm64.whl (364.8 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

opthash-0.8.0-cp314-cp314t-macosx_10_12_x86_64.whl (376.1 kB view details)

Uploaded CPython 3.14tmacOS 10.12+ x86-64

opthash-0.8.0-cp310-abi3-win_arm64.whl (238.8 kB view details)

Uploaded CPython 3.10+Windows ARM64

opthash-0.8.0-cp310-abi3-win_amd64.whl (252.5 kB view details)

Uploaded CPython 3.10+Windows x86-64

opthash-0.8.0-cp310-abi3-win32.whl (227.4 kB view details)

Uploaded CPython 3.10+Windows x86

opthash-0.8.0-cp310-abi3-musllinux_1_2_x86_64.whl (607.1 kB view details)

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

opthash-0.8.0-cp310-abi3-musllinux_1_2_i686.whl (631.7 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ i686

opthash-0.8.0-cp310-abi3-musllinux_1_2_armv7l.whl (668.8 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARMv7l

opthash-0.8.0-cp310-abi3-musllinux_1_2_aarch64.whl (570.2 kB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

opthash-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (401.6 kB view details)

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

opthash-0.8.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (422.0 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ s390x

opthash-0.8.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (513.3 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ppc64le

opthash-0.8.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (393.5 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARMv7l

opthash-0.8.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (393.7 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

opthash-0.8.0-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl (419.7 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.5+ i686

opthash-0.8.0-cp310-abi3-macosx_11_0_arm64.whl (365.1 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

opthash-0.8.0-cp310-abi3-macosx_10_12_x86_64.whl (377.4 kB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for opthash-0.8.0.tar.gz
Algorithm Hash digest
SHA256 e7d836c6d92d3c2e7b951260d935b2bbe4b6215e1d35efb5ed245a9475e2d2c7
MD5 987e409ebacb10268d77730768e3df5b
BLAKE2b-256 ec24d5bc075cb17b83ebd9f8b26f580f5ffe630b9a20de6b186b9212cada84cd

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: opthash-0.8.0-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 235.2 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.8.0-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 9e6c61827c94b16b25f34e3b707117607fed47d11db1cd7679d73168cea67d18
MD5 7190a5b66883ba93b62f18d537a98168
BLAKE2b-256 5efdbe334af639a8919ecaa78a5abf0bdbb841495fdc0ec35ddc537730743716

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: opthash-0.8.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 248.1 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.8.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 e2b6b9ee4e0d85f177e35307ca454de1e33c2e16a326ca9fcfce846cafc71389
MD5 11bc0206342548e05e5a9841a80fad5d
BLAKE2b-256 f1554eb362df81e3aad0bbc3e717344cff55968e28745406a73da08121194099

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: opthash-0.8.0-cp314-cp314t-win32.whl
  • Upload date:
  • Size: 222.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.8.0-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 1e5cd262db95449122638158ff1558fc2f9dddcddff8c007bc658d9427ae7d08
MD5 770ef4053a626c22d6d8882de12b806a
BLAKE2b-256 2d75b9e207eee63a5e6d80d9dcb75352492b56f84c1fedc511ac3f896ebb5917

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f4ff5fab1e34f508b03c361b2d110822ea9aeed67d59be95e314ef4fe026ce44
MD5 6e3781f5653d5b69eeff4d488a84681c
BLAKE2b-256 ba956c6ae0c4cdfb26e005801bd09cd9a7080dddac2c2423578935a1de672742

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp314-cp314t-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 cfeaebc920ffc1599fe50d63cee03813c1a5d42f018898f272f422648df7539a
MD5 a10d71638c4da7e29c85ce13c43db66a
BLAKE2b-256 646e514c59d6c65b93d015683257627b0d3ef5d31a2198b0dc9678ee7f27bdeb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp314-cp314t-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 2fb448dc95c3a380851df2e3bdd68fba27ce092967ed8a45bc48310aa8a9162f
MD5 f76728438f72a02f8a8acca6f83d4d18
BLAKE2b-256 c0dc0c364d43c5161e9b9fbf3fbbdec4753fff8e171c5f26e532cda5a0b335af

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 19fadc4b39c0bae6ae5b4c12e86413238d351d90923b4e9766bcd56947bcf480
MD5 fc1645b7799f66102d509494c17f6cd6
BLAKE2b-256 6e15487538dbfd9e747d8ccf189cd61c0e3ca98709b9a30638e43ff7e01eaa2b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9af2b29799b0cf6804d76351f0d563ec59f04d432f24025ee83266ec768c52b7
MD5 b9962d82ea323adfcd045510f7d87443
BLAKE2b-256 90c54ff3760900b41bfd0b6401ce1e1ef871bf2cdfb04c8177517c3d9ce32272

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 dceb8f9117814aaf71f5c3fa19f3bc5f9ed27be0fcfc0070f7034ce6737a40d6
MD5 746f9e958f8a63fedfaf90ed2eb60e3a
BLAKE2b-256 0f21d50afebfa4bcde973cfdba913c76e601697df83f32faf8dfaf8d99598623

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 8355dd89d3a7977b68cafe60e73a028e6f336cfa3ef3ece60365707e0b4bb72a
MD5 4d45cf82dfc7bdee06f77898bf8894ad
BLAKE2b-256 04e7126e26db6c381250ef36de8e776ebb1e6ae98193115d3cc8e562194160e8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 9ad2e633de06ef1b73c89112453a1248807c89f6a5615929e6f9b564a600d260
MD5 c85349af3e685964579474af8f344941
BLAKE2b-256 db9ad9c6e9c0ee06c1538fa8ec68e15013d589021273ace148917bd7639e64b2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 34a42e289a022945571d5b58886d8d57f42328a8fc98d2442c5ca734cb2b82cf
MD5 e10ec6f793cef4e39721065631b5df85
BLAKE2b-256 078bbc62ba91a88c3a4723a006532868d69be5ab46c1732904ad7c58adae0820

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 483a9026d2610886de0e72190c47fd32068ba1981c7235db0f01a4daccc5baaa
MD5 6fb666f4f1daedfd974adda8800c3c9d
BLAKE2b-256 b58a0357b81b906d98fdebefddf44ba8c292fee941bf987e248d07411daa951c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4b88ed86fe1be5c8796a20c0abd264fb442abd52fdfa615e108c7807b816506a
MD5 15866774ab5cdb2179c4bf4278d42d33
BLAKE2b-256 ce653d9e927945ed6ea47d1485baffb68a4316c2ddf4ae6d42b1ebf4e68a69be

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp314-cp314t-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c1ea49346564d7d051dcd48ab5f4afdfa8de95a2db7a9839c6fd4a96aaf513b8
MD5 c0fd72039b928774d593dc093c8826de
BLAKE2b-256 c4457aa4d9958b1c857cc022fee70694085a3329b4ae1263285b9fc9918ffeb5

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: opthash-0.8.0-cp310-abi3-win_arm64.whl
  • Upload date:
  • Size: 238.8 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.8.0-cp310-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 4f8ac8e766188917c2bb22fa0cc367695e586744f0cce8c2d54b98b7188645a2
MD5 096d865d975a873264398398d05c5735
BLAKE2b-256 0da63930a0dc97fedf3a5904b2c6f8f2b6be98bfe046c4a77bdd06847d60ef1a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: opthash-0.8.0-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 252.5 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.8.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 b4f7c4ddd702a31611c4b69e30710b8b6e4e7c805a7cd7fceda4c176e917e915
MD5 7554832351fa5a63af9c90199ae7ac48
BLAKE2b-256 04bd0b3550647056290645550e1ddd201fd96d8a2668e891f6f2a27641b01778

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: opthash-0.8.0-cp310-abi3-win32.whl
  • Upload date:
  • Size: 227.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.8.0-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 971de1a5a48d443effdb85656655117072e98e3fb8a35be93cc4aeb94ae470fa
MD5 86d4864c3f17746aaa7933e76cf4c783
BLAKE2b-256 aeb2222b11841261d1b9651fc84dbc8bbd1657a841c5320051e6d1a4119ae8ae

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 958218c228950fa33e44ec204d92ca58cfd95a7b6cae854dd7d51d1d2914b689
MD5 ba8a22e99d5c2a120892fa3435dc4acf
BLAKE2b-256 7b64a4333ace5a8322137053c864c11bed4f0336bef0902f969f1ccd17085d84

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp310-abi3-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 a5739aabaf18500dfb22a8c1ff0e82efeebcec8f83fcb53bf8fa3a5af029c534
MD5 eea37da283bf8bd3bda5c796c6b69b48
BLAKE2b-256 0a2b2837c32817da1739519e8a1046ad393d611e5a4df67f19a402e335f609d5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp310-abi3-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 865802a8f251907abafb467c17e696ffa598490915d5a1a9db8546207050ecc2
MD5 9eaab432de04dd60787b1e9b7f02649c
BLAKE2b-256 ed200121a6d809eb107bfac1c6efe8653beb020c4f1c9df25e8a8c182d98f39f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 446c8991fa373824465d25376e929f25f5715af194b1e87e247acd8f59f04f1d
MD5 17826b80e31ec212d9a443a57691c839
BLAKE2b-256 571c883b02a7d9d1fd6c3f17dd79bd7b69668092c75523f1d71fa568b8628503

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9e0dcc83d956e06112789b23c10278692c2a0a87698a43f56d9f52aa276233d3
MD5 ea146f76076c06d1c46b217337601692
BLAKE2b-256 aaba64d7b8da2bc5f036088648385e93cbbaca7f4ed3fde0227bf85bfa87083b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
Algorithm Hash digest
SHA256 030536dc3baafa9200aa382ed85f8bfc8da7d5ba410fb720358ea19c9cac5c53
MD5 a567a09c327cc3347c1f3027fc5f0d34
BLAKE2b-256 6772e0ac5ddde20b5a59488fac865305261d45c0e887d53f1e9eaeed5659bab7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 c7005af4db642104488d09af821e2e8a09b674abe3701a7096fa36898ba8273e
MD5 7da14e1080f8f6ba89292b0b653823aa
BLAKE2b-256 62973ba2631b28aec303f445fe8112e362bc9a1c134c5642edb8e2204b9dc81c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 aaaf954997523abbe12bb34444f3477602ee73aa06037f041567a2268185ea4e
MD5 d205de9e346365ada666bfcfa7e6d1ef
BLAKE2b-256 f5562e71975114f8346614f60df2dc75e799b50d183195d62e9ac7579fa854e2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 43e97628475dcce308969376e1ef83ffe19db95fc45ce28affda879704f450a7
MD5 9bc81a2e0d500503f7cddc3c427afdfe
BLAKE2b-256 8c7e52fa6f81c0d4a39080682427d88cdcaf325caae59ed7387d5b421dbc3161

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 cca81d4fa8c89db6dd9eade2e60d6f0bc3792c2389056115c1f226e4c4ce37f4
MD5 f251d181eff0aba5ce85fa53e201bc67
BLAKE2b-256 ecb76fca74ec3924355622bb3cd65bf49c5078ca5bcf08617f0dcd8e57f90ada

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f3b86fcdeeb1da083812162b6a0e095d27393b8b40ca12c2aa2470dd07d6646
MD5 3f468ee8dfad8974ac022268fd9aafb3
BLAKE2b-256 29d3917340e1e425099f2f9559d79b21475b9aca86f45d39cfb0c58085a64855

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for opthash-0.8.0-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 66a26d70051634a1ddd560e1e53a19ab81a98133cba72308d90668cb577de3be
MD5 80c523b5e7cc791bb32d25d776af6cf3
BLAKE2b-256 252233a05dff0d21cdf4039f29d46cd9966efb4152763ceeee7a97703cecd6df

See more details on using hashes here.

Provenance

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