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.10, 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

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.1.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.1-cp314-cp314-win_amd64.whl (260.0 kB view details)

Uploaded CPython 3.14Windows x86-64

torann-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (384.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

torann-0.2.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (376.1 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

torann-0.2.1-cp314-cp314-macosx_11_0_arm64.whl (342.9 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

torann-0.2.1-cp314-cp314-macosx_10_12_x86_64.whl (354.8 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

torann-0.2.1-cp313-cp313-win_amd64.whl (260.3 kB view details)

Uploaded CPython 3.13Windows x86-64

torann-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (383.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

torann-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (376.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

torann-0.2.1-cp313-cp313-macosx_11_0_arm64.whl (342.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

torann-0.2.1-cp313-cp313-macosx_10_12_x86_64.whl (354.6 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

torann-0.2.1-cp312-cp312-win_amd64.whl (260.1 kB view details)

Uploaded CPython 3.12Windows x86-64

torann-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (383.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

torann-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (375.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

torann-0.2.1-cp312-cp312-macosx_11_0_arm64.whl (342.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

torann-0.2.1-cp312-cp312-macosx_10_12_x86_64.whl (354.4 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

torann-0.2.1-cp311-cp311-win_amd64.whl (261.8 kB view details)

Uploaded CPython 3.11Windows x86-64

torann-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (383.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

torann-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (378.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

torann-0.2.1-cp311-cp311-macosx_11_0_arm64.whl (345.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

torann-0.2.1-cp311-cp311-macosx_10_12_x86_64.whl (356.7 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

torann-0.2.1-cp310-cp310-win_amd64.whl (261.9 kB view details)

Uploaded CPython 3.10Windows x86-64

torann-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (384.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

torann-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (378.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

torann-0.2.1-cp310-cp310-macosx_11_0_arm64.whl (346.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

torann-0.2.1-cp310-cp310-macosx_10_12_x86_64.whl (356.9 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: torann-0.2.1.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.1.tar.gz
Algorithm Hash digest
SHA256 645ec00d0dddd62455c50c568ed54f21b189da6ad2600f17de23b8f8c32e0811
MD5 993a340a0e40e2b7f1887dddbd089936
BLAKE2b-256 4cc87724eba92883822c43cca0777f5bea9e588a98030fabf8760322a2dcbf8d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: torann-0.2.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 260.0 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.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c4dc55a872dd813e5afb0377dfc5078d7e86205196e666cabcfd48db94e01cb1
MD5 47ed044518ea22c615e3e58f52226231
BLAKE2b-256 dc8f8aee4061445351e91e7eb1cc663c95c7b824cd5cdbdda141b8b386cc803a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2a62cd0ecaca2c44baa6b1ce1b6aa06e8067b82c845dcc865f0836d427a7c70f
MD5 6ee76639351c502176378a75aba5a25d
BLAKE2b-256 b0cb67a148af8b453b9d8a465ce111a7b7a0133bd5eef6354ff941a885a53931

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a996445499de4074bf9400961926c9016c6a20055fbc108052bcc6f42360c317
MD5 f3070eb62ce151de22277341a4c2bf34
BLAKE2b-256 2eb64ec83bb6d4740a1c0aeb17dc09118d1a975841072b20b165f293a2a8a297

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 80c662d1bd5dc83b903d6363de1bf134ec616c2961a0a2b98681e0df05fb2e96
MD5 fdb0391b1c22c435e32c741cfd43694d
BLAKE2b-256 9061a53f4b43fc0a256d05809d6b31ed16eb743fe012197ca02bc45fa4d959a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4141bd9b7bff7d15d09b594e48d50a03e1f7778b49a705ff4d274e1607ae699f
MD5 a418f315b156b727543a33468e092ffc
BLAKE2b-256 98f8701a5559d71f85a0df8baa288e56db3b9f6f4984df8ecf9b91cc71907029

See more details on using hashes here.

File details

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

File metadata

  • Download URL: torann-0.2.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 260.3 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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 94ce77cf2c0b9961a55e02a308817dddda9d6e2009997b5885a22e8cf98d52b7
MD5 d695be8e1bdb0dc8d17d5c6091952c57
BLAKE2b-256 f73c4767ce8a04c78db9d3a66973aac818cf072800d02c528ba60647238bc300

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 060826e10dbd80eecfe1cd522983d0e64f84fe21de6e214aced8a6a31f759b11
MD5 e0d57fef47f62f85c62de448483b06fe
BLAKE2b-256 3eb6ba981970cb2c178d9206765639db6d50e95a2df0a86409d14b8bcc03e356

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 168b3d7083c157906a9d0f2ebfc4c4b69cfa9451d0a01f0095a6c8833d7f58af
MD5 e00eb556f43515b4d2d8a4783d00ad93
BLAKE2b-256 18931664c8195aee56a6d9b9437870b730d7c86089888f3ed55d92d180023f75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 764f496440cabd0d9f268098cbb80d1a8585359e2f75947c3f05059306558546
MD5 ff6c9f2aa525952f1541ec4d119ab898
BLAKE2b-256 e583afdb9b6bccc0f3e600fe8d8a27ec91855613a8b89756fda903cc1656b1a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 9cee653ad7e04b2574b3d9ed57e39834086e5c62ab5469be5e07e5d2e4f7bd8c
MD5 5dbe7f92d48e50c88382c0962943cbdb
BLAKE2b-256 21dee668df886486ada8e04df24016cde582e6debe3e0d54ae9b4d18ddb2b15b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: torann-0.2.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 260.1 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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b9c324b1bee96b9e73284d80425fd992220eea0448a633a380f57343b5753cfc
MD5 3ac198eb58cb5dab494b7733a4cd8063
BLAKE2b-256 e4d364332d6713f0cd76ac10a75b8cbdbba6eb17bc8883de6fc2e026fb5f87f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d374deefe0794fcb9bb968d3b5dd054a5d09a9194396e7a28b335eaa167e6208
MD5 52ea9146d683b7d800072a1572abd1e4
BLAKE2b-256 857a309058f108fc3c138a852e0e8aff1fe96d5589d3b0e46e3cf2d2fd7bc771

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8ae97253c52e1a604201a5ceb447638db74c1266037522e74c2fe6889e96e229
MD5 d4f6cd4bce1014b6e79e0b427354af13
BLAKE2b-256 5cb8bfd005dda5f341cf3981f19f58abb8543db662a67f2c208f3d7507c0a333

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 102889e5205af352a1649543aee32ee92ba220423df7526f9e9e777b7c35feca
MD5 bc400d61bdbe2cbe5bc119b45c991eac
BLAKE2b-256 9ae76e9271da3709590f54ca0f86283007c4a797a83cc95137ccf31a73ec32ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a2ea49ef806eb430159ce61843f983becc9298f9265d0f647cbd5e1d5af17e2a
MD5 f841c78ce3f6a09fc5b7521c41929c49
BLAKE2b-256 4a44b37e420ef766014b72d3de8477ed8e9a969768cb54624db253866b19ba23

See more details on using hashes here.

File details

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

File metadata

  • Download URL: torann-0.2.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 261.8 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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6bae4398261fb91be4cb87216660431bda68a172e3a90ce0ddc9fcb94706de0a
MD5 0747af4e6ff84f62c383bb3ae968896e
BLAKE2b-256 f6ec50bf6a3afb23571dbfb867e60cce84c1064820029dccda9b3e9382bbfd21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 34154195474942098af33e21a230b627d315cb7b54d1e8967722fb8430e093ef
MD5 789a0722e034f5d874165625b079542e
BLAKE2b-256 10ac28ea75715e4942583b403e7db1ea8efa73d7e2d5d8c3955f99ef644af8a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 631cc0efa125233ec37f60b4ec00de322cd96346ce3445967a05fc125c26d818
MD5 56b275d9e66d1f6997b4a9dcbdb90504
BLAKE2b-256 55699391d22459494d4efb062fc1e037a6ed0799a0298d7f39ffed8fa630f46a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1718935a8f516ab9cd5c303963eb6f1014ffcad1e238ac0c83c4adb57b0e365d
MD5 4ddde63f9d77bacb9198b64982b49c22
BLAKE2b-256 110f6ee195aeadaefe051d8e3038214d627733a2f9225166135d875550a90ac5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 aad9fa7c884afbbc24ac7885e7553bf24f879fa53b9d54e91cd42153fefc4eb5
MD5 6107787c6fc4384ea8f02c9562cd9b25
BLAKE2b-256 1210dff2c3a7c05667ce6baf7d554bec6e6660e0d08075f5d6f4373c2580be23

See more details on using hashes here.

File details

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

File metadata

  • Download URL: torann-0.2.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 261.9 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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d4d1e2702d874f42251819a96f20102e300cbca55cbf5c631b8051e9e6541789
MD5 601ab4557f19ea85f01754c795c5a32b
BLAKE2b-256 95a3dc1aedb7ffbc72a9f0b9f706e2b10281eed9b55c84e536cf7a82d6a35490

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9a27ab9227f777273d4d934be36547d278bd616ede27ddae7f0756ee0d8170ad
MD5 4161403e440ca6a131f704ff17688843
BLAKE2b-256 47fd60622da06fb7d7445b97c1c9563fc6cb3729032a7a0994eb31265cf9b0c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d99b58c7eb231b4d28b577719690b4978343fb345c359143621883f95b0cfb2e
MD5 96e839258c2701470d1fbc9c401ae071
BLAKE2b-256 452699e1b9c9ff8b118f316db09a9ea609a47ed33a9374b64ca68b40298dc519

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 988593b13e2fe1bd611a1c3101d431f0935f9b01c680d71005b63de20a546fc2
MD5 916d46e9405d457f6cfb3cdc46defddc
BLAKE2b-256 f49a9d0f03380c1f5a02a4906a8bb3bb9e9b28a4e159a9c69b9a161df8acfedb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for torann-0.2.1-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 51089a56bc2db34eb4063cd805504ebcc56c791767823464f94d77301a614b7b
MD5 c220479b367fe240ec664cb45caf9ee8
BLAKE2b-256 ad84cbff9647b359c7efe2d01c688f09db2965f459445f7d72db356f93689f4b

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

0.2.2

26 files

This release

0.2.1 This release

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