Skip to main content

logo torann

TORoidal Approximate Nearest Neighbours

PyPI - Version PyPI - Python Version GitHub License GitHub Actions Workflow Status GitHub last commit

torann is exact + approximate k-NN and range search on the unit torus $[0,1)^d$ under toroidal L1 — a metric mainstream ANN libraries do not offer, chosen deliberately: L1 degrades more gracefully than L2/cosine in high dimensions, and on the torus the LSH guarantee is exact. Built for ESS-style epoch workloads: static anchors, a moving candidate tier, selective updates, batch promotion.

Features

  • The metric is the contract: toroidal L1, exact distances everywhere — the LSH only filters candidates, never approximates a distance.
  • An LSH family that is exactly L1-sensitive on the torus: randomly rotated integer grids with a closed-form, seam-free collision law (see How it works).
  • ESS-shaped lifecycle: two tiers (anchors + candidates), selective update() that re-places only points whose hash cell changed, promote() as a linear merge — never a re-sort, exact after every step.
  • No brute-force fallback: under-filled queries widen buckets by prefix relaxation (contiguous sorted-key ranges), so k results are structurally guaranteed.
  • Self-tuning: fit(..., k=...) or radius=... derives the hash parameters (B, K, L) from the workload; explicit arguments always win.
  • Three interchangeable implementations of one interface (torann/base.py): exact NumPy brute force, a pure-Python LSH reference, and a Rust core (PyO3 + rayon) that produces byte-identical hash tables at 60–120× the speed. Without the compiled module — or on a CPU below the AVX2 floor — the package still runs, on the reference implementation.
  • No unsafe: the SIMD kernel is wide, a safe stable-Rust wrapper. Hand-written core::arch intrinsics were measured at 21% faster and declined; that trade is deliberate and stays open.

Installation

From PyPI

pip install torann

From source

The project is a maturin mixed Rust/Python package — a Rust toolchain is required to build the native core:

python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install .

Requirements: Python ≥ 3.12, numpy.

CPU: published x86-64 wheels are built with an AVX2 + FMA floor — Intel Haswell (2013) and AMD Excavator (2015) onward. That is not gratuitous: the distance kernel is built on wide::f32x8, which without AVX has no 256-bit register to lower to and falls back to two f32x4, costing 25% (406 ms → 542 ms on the reference shape). AVX-512 buys nothing beyond AVX2 and is not used. On a CPU without AVX2 the compiled backend is not loaded and the pure-Python implementation is used instead, with a warning; installing from the sdist builds a native module for whatever the machine has. arm64 needs no floor — NEON is baseline there.

Quick Start

import numpy as np
from torann import ToroidalNN

d = 16
static = np.random.rand(15_000, d)      # anchors: never move
batch = np.random.rand(3_000, d)        # candidates: move each epoch

nn = ToroidalNN(seed=42)
nn.fit(static, batch, k=2*d)            # build + tune from zero

for epoch in range(32):
    idx, dist = nn.query()              # each candidate vs everything
    new = force_step(nn.candidates, idx, dist)   # your physics here
    nn.update(new)                      # selective refresh

nn.promote(next_batch)                  # candidates freeze into anchors

nn.query_radius(0.25)                   # range query as a post-filter
nn.query(k=8, queries=Q)                # arbitrary external queries

Knobs (all optional — tuning fills them in): num_tables, resolution, dims_per_table, target_bucket_size, probes, brute_threshold, backend ("auto" prefers the fastest installed of rust, python).

How it works

The metric

On the torus, distance wraps: per dimension it is $\min(|a_i-b_i|,, 1-|a_i-b_i|)$, and the metric is the sum. Near an edge the nearest region of a query is not where a seam-blind index looks — it wraps around every boundary it touches. The teal points are the true 12-NN of the star:

the toroidal nearest region

The region follows the query around the torus:

the nearest region wraps

At d=16, distance concentration makes wrapping the common case: almost every true neighbour pair wraps in at least one dimension, which is why a seam-blind exact search misses ~74 % of the true toroidal neighbours (examples/compare_faiss.py).

The hash

One hashed dimension, with integer resolution $B \ge 2$ and a random offset $u \sim U[0,1)$:

$$c(x) = \lfloor B,((x+u) \bmod 1) \rfloor \qquad P[c(x){=}c(y)] = \max(0,, 1 - B\delta)$$

Because $B$ is an integer, the $B$ arcs tile the circle exactly — the grid has no seam, and the collision law is exact, not approximate (dots are measured frequencies):

the offset integer grid the collision law is exact

A table concatenates $K$ sampled dimensions into a base-$B$ key, so collisions decay as $\prod_j \max(0, 1-B\delta_j) \approx e^{-B \cdot L1}$ — inherently an L1 guarantee, which is why L1 is the public contract and no other metric is offered. A uniformly random pair collides per dimension with probability exactly $1/B$ (closed-form bucket load $n/B^K$), and a point that moves by $s$ changes its cell with probability $B s$ — churn is proportional to movement, which is what makes selective updates cheap. The rejected alternatives (p-stable projections cannot wrap; integer projections alias far points onto near ones) are measured in exploration/.

The index

index representation

Sorted key arrays make a bucket a contiguous range (an $O(1)$ direct-address offset table serves the static tier), keys are digit concatenations so prefix relaxation — dropping low-order digits — widens a bucket into a wider contiguous range without any distance scan, and every gathered candidate is refined with the exact toroidal L1 before the top-k. Full details: torann/lsh.py — the reference implementation, normative for the L1 hash.

Benchmarks

Measured on an AMD Ryzen AI 7 PRO 350 (16 threads), d=16, k=32, on a build carrying the AVX2 floor described under Installation — which is what the published wheels now ship, so these are numbers you get rather than numbers only the developer got. Regenerate the full grids, crossover and complexity tables with python examples/benchmark.py:

queries vs n

On the workload this library exists for — the ESS main loop, simulated end to end (examples/ess_sim.py) — torann is 1.7× faster than FAISS Flat rebuilt per epoch and correct, where FAISS's exact seam-blind L1 delivers 0.25–0.28 recall against the true toroidal neighbours:

the ESS main loop

Queries run 11–148 µs at 16 threads across n ∈ [20k, 1M] on torus data — 60–120× the NumPy pipeline — with 0.9–2.1 ms selective updates and ~1 s builds at n = 1M (HNSW: 24–32 s). On wrap-free data (FAISS's best case) torann sits within 1.06–1.56× of FAISS's exact SIMD Flat scan at equal ≈ 1.0 recall. Python and Rust implementations produce byte-identical hash tables, so their recall is identical by construction.

Running Unit Tests

The conformance suite runs once per installed backend and checks byte-identical tables plus equivalent query results across the whole lifecycle, using the standard unittest framework:

python -m unittest discover -s test

Documentation

The library uses Google-style docstrings; the API documentation is generated with pdoc by a GitHub Action and published here. To preview locally:

pip install pdoc
pdoc --math -d google torann torann.wrapper torann.base torann.brute torann.lsh torann.rust

Development

The checks in CI also run at commit time:

pip install pre-commit
pre-commit install

That gates each commit on ruff, basedpyright, vulture, the unit tests, and -- because the native core is held to the same standard -- cargo fmt --check and cargo clippy --release -- -D warnings. pre-commit run --all-files checks the tree without committing.

python examples/ess_sim.py             # the ESS main loop end to end, vs FAISS
python examples/bench_backends.py      # per-op grid over (n, d, backend)
python examples/crossover.py           # brute vs LSH crossover n*(d, backend)
python examples/compare_faiss_flat.py  # non-toroidal throughput vs FAISS
python examples/figures.py             # regenerate the README method figures
python examples/plot_benchmarks.py     # regenerate the benchmark figures
python exploration/exp_1d.py           # regenerate the concept experiments

maturin build --release produces the complete wheel (Cargo.toml + src/lib.rs are the native core; torann/ is the Python package). The C contender from the phase-6 bake-off is preserved at tag archive/backend-c.

Authors

License

This project is licensed under the MIT License - see the LICENSE file for details.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

torann-0.2.2.tar.gz (2.8 MB view details)

Uploaded Source

Built Distributions

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

torann-0.2.2-cp314-cp314-win_amd64.whl (262.3 kB view details)

Uploaded CPython 3.14Windows x86-64

torann-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (386.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

torann-0.2.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (379.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

torann-0.2.2-cp314-cp314-macosx_11_0_arm64.whl (345.4 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

torann-0.2.2-cp314-cp314-macosx_10_12_x86_64.whl (357.1 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

torann-0.2.2-cp313-cp313-win_amd64.whl (262.6 kB view details)

Uploaded CPython 3.13Windows x86-64

torann-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (386.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

torann-0.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (378.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

torann-0.2.2-cp313-cp313-macosx_11_0_arm64.whl (345.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

torann-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl (357.0 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

torann-0.2.2-cp312-cp312-win_amd64.whl (262.4 kB view details)

Uploaded CPython 3.12Windows x86-64

torann-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (385.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

torann-0.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (378.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

torann-0.2.2-cp312-cp312-macosx_11_0_arm64.whl (345.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

torann-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl (356.7 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

torann-0.2.2-cp311-cp311-win_amd64.whl (264.1 kB view details)

Uploaded CPython 3.11Windows x86-64

torann-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (386.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

torann-0.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (381.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

torann-0.2.2-cp311-cp311-macosx_11_0_arm64.whl (348.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

torann-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl (359.2 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

torann-0.2.2-cp310-cp310-win_amd64.whl (264.3 kB view details)

Uploaded CPython 3.10Windows x86-64

torann-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (386.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

torann-0.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (381.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

torann-0.2.2-cp310-cp310-macosx_11_0_arm64.whl (348.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

torann-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl (359.4 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file torann-0.2.2.tar.gz.

File metadata

  • Download URL: torann-0.2.2.tar.gz
  • Upload date:
  • Size: 2.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for torann-0.2.2.tar.gz
Algorithm Hash digest
SHA256 5cc2ee5e0e05fd9953ca4eb720f6081da3765868348174993cd01e1512254808
MD5 0def9cde20b74ce2d105fe20937874cd
BLAKE2b-256 bc24783ab76e31ad7e043fe3de431960f3af2cb5162b82125ff5249d7b575ec6

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: torann-0.2.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 262.3 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for torann-0.2.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 a2d8788be99a2d88cff77c6db4ae418f50a5ebe283b80285952b965e93fb3bd8
MD5 9aec522fdb71ca8eca2cbd78208a5630
BLAKE2b-256 ae3d064149378224943902ebadf9348dd54eee02eface8bf7e4c413e01279b51

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3e0570d977e03168daad5bf88c2c00f3c6e9c9524dead2a10a6f06b1af771afd
MD5 ab129bd603d3b4b15136e0745c78cc93
BLAKE2b-256 5b6d2804812f6371051d68096ae5781a8c151cc418eab85ae617217d9a6849a1

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7d9fb1b4a3a2cd69841b0c1bab871c6e34f5a587fcd67ad17a70cd7f80f9876f
MD5 4d72d63e41c1b635bd7ae854491f0568
BLAKE2b-256 2b36e69bc1c4a0a022a1799683e0a905424246208a3b122055c92d0d015d8024

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4e50c12cb4087d394c2b82ad428e8f7ece249e3b344df78d5850715a7dc460d2
MD5 4e3d8e4d3d3d5f1ba45f0f714258a9bc
BLAKE2b-256 432188ce2daf14d55e12c93153c2d03569b1864585974f485bd2f3543ae67981

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6cecf11850c6708f07d512d8667dd33757e7433d1b6b6b07e391f2534c35a68c
MD5 ad6ccbf52db97bffcbe8489da3d1ec2e
BLAKE2b-256 720860adb98fa0c3cd39e41bd9939244459dc380415d7f293f8897fc9d789bc7

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: torann-0.2.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 262.6 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for torann-0.2.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a2835426757128ee384eb155213dd6b2ab69ced292b1a70b6a0004e8bdbdcf17
MD5 ebeba0d135ed6a2b804978b642bef420
BLAKE2b-256 73f80b3872553d2c0e4043a590b4164d9f4c068c938909eb2acf2263e3a31626

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 077875287e346a371428f106534c762d930fe502bfc09dd24ad788e21bc71bb8
MD5 e5b759a5d06f5fa5a228cda3057eb64a
BLAKE2b-256 3dc35fa5b55a9915095d8fe18320189a4903a6452a0dcc1213dd7ca33e157060

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c75f7111ff6cb0b00779f068e73648073cc2c7cd2fbcdfa58674c5352081944f
MD5 0902f46208d166a7ef6675a9d6e7b910
BLAKE2b-256 071ecb0ec82f05e57bb80a3a6821d675993ecc0e82e0fb4cc6bde5f722469ee6

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c533bc38aafd9a48a1d2078e63d82fc2e0071a1ebea32d0061b34ef7eb3bb19e
MD5 d2dbafedd217156b1bdbe3e9d3f81385
BLAKE2b-256 a1f4b2f79cc53d0b62e28af80d593c8b076ea73a2b184ee73ef9c33c79f17842

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5ce037d5842bfaf29f66142eb404543b3900cc42fa1c6997fe5e14f3e3676389
MD5 e0ff2fb9a79ac73932c7d858caef3fe8
BLAKE2b-256 91caae3a3c5d6929f1dd61b26508ed5a9c4a3d65f958b0e56c11ceb94f95c227

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: torann-0.2.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 262.4 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for torann-0.2.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1471028a909d6bfd82d141b58374437a6ae724c776341d118af26dde39f51e9b
MD5 6e1c9dc73eaae9a80f2ed90d9c2603ed
BLAKE2b-256 8dfbeaeeeaaeef8dd290f3f69180daf83a907abeb5b16208036659aea5c047ad

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1d155f2302f568d59dcf14e9248ba2339085242a767a4a8f7cca3bb08a0381d9
MD5 6df55827f1d70d69a45c2ba33793f5c3
BLAKE2b-256 ad74fdda947136d9213b79462d1bf332d12231d0aa50565b401f51eec1d636fc

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c8d34ffc8614db216d4ac130217139f6cc2b988563fa026592ff8369e3882cb7
MD5 6f06524a5945875c14daf3f7a3117ef0
BLAKE2b-256 cdb4a8e9fb7800eeb3fc9fcab70df07d7959f0f99c18076b783302793f6d4724

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aeab0c9e24121f44b2be76012645e6e0c85693cab8e2fccae7c6b585bc7354d2
MD5 1fd2d718133d010a56fa024265747c1a
BLAKE2b-256 59112e6e5e52913d145326b3665809cfaaccd770afdee276d4014778b3b61d4c

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 677087a1791e81e1555f795c18e0a8d450d71edf4e084a00cd6c7743cfbdb7cd
MD5 311f41f321837e91c08b8908334ea5e4
BLAKE2b-256 4fbe3a3be334479242fc3cdc14013a009b2abd21622a4b244ea1cc68241aa16f

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: torann-0.2.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 264.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for torann-0.2.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a64434c0729026aebb5ecdbd75ee2cb3ec6f59e0f515866c81293198436c4f3a
MD5 534c94bd59c72b80763577ec5ec7763f
BLAKE2b-256 99270fb5f9254e4994702275b20d677782e0ce60ecfa02470201f45a0790f21d

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c44001e19bdfee15bf0ac282f3bb0a7b911cca5b20032c1792d671b1cdc4f9c7
MD5 e685d83babb2ca6e9750306dc042a2b7
BLAKE2b-256 24615b517a6b43537f67ccf59ff3d9a8e1df1c1da0684beebf34c53b26ba5a39

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d76f9255d194bddfe21e74f110dc225301df9a9c3b0550000af722ab8fd01cef
MD5 e5956e34d64c221791902dfe26111d26
BLAKE2b-256 66c699a886c2b429bcd7e9a1f78c60a137455a5d6c4f87a81190927845414ed0

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 791956ab5e7a5cc24b3eccdd9e1b4e7dfd07bf151d8b1c98754fed8f36944e86
MD5 7dee2202cb48c35bd542e41dd64a99c4
BLAKE2b-256 bebee38f6558089e555e786c00474d9501811c7c02121b0f6e1167ec07a5d51a

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2853ca73f05bf8c86da1f2b7d604738af8567e309b61a58f13fe52b6ed577d8a
MD5 06597e945edbc213a40343044dd1fbe4
BLAKE2b-256 53c00e10e46168359b1693d50d291ecaddbbfc051101f3b22ce39b79c8dee7c9

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: torann-0.2.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 264.3 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for torann-0.2.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1611080351b45df6f2b3d4d6541645b0ab12be5faebba4cf00e99096f3e15d8d
MD5 76bed963da0155db2c939d45799e8e62
BLAKE2b-256 e3d518cd21e14b1c04f8c9be40ade83d6d8011f7673a1c12f98cdc7f1a4ae735

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5592d3cd610026f5e68e6372dd6c681bebac2d077a6747670c1ef76ebab72111
MD5 e3fdfc43c475b342d0c28fa0adb0fe41
BLAKE2b-256 6e9659f19def2360bfe4411bc35eefd526cd17624922bbd3ffe6525e4d9341cc

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f282a416258cc42b2f330baca547e7aa54685eb1e61a18065a86d1defef03952
MD5 195b75a329e7c1983e0849a15613dc33
BLAKE2b-256 82ce73093c8868b3c1e1483e749b1d071edc3a69aee8420b4505b1b7ddac5f8c

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0fe481253793329a9e1f5efeab78716bb4198e6a3815c1393def7acfaf3de134
MD5 f37c5a1de88346d11f2b2701e50c229b
BLAKE2b-256 49aa3ceb8ffce5873f96ccbbdedeb0c1f63106fb3a9239df5f8c608ae744b889

See more details on using hashes here.

File details

Details for the file torann-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for torann-0.2.2-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 61a4a15e9d978217f0638ed73295ad67de404c297fca11131fbb0457a42d5185
MD5 6d11a9cc2201fa5de0085962cafb1aff
BLAKE2b-256 e2fbc21b7124c94a99e99d169b0f305ef8baa6bfc8ccfac2e8c1fc56561bd3f8

See more details on using hashes here.

Release history Release notifications | RSS feed

0.5.1

6 files

0.5.0

6 files

0.4.0

16 files

0.3.0

16 files

This release

0.2.2 This release

26 files

0.2.1

26 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page