Approximate all-nearest-neighbor search using neighborhood graphs, implemented in Rust with Python bindings.
Project description
AANN
Approximate All Nearest-Neighbor ("aann") search using neighborhood graphs. Implemented in Rust with Python bindings. Based on Soudani & Karami (2018).
It is optimised for many nearest-neighbour joins that reuse the same clouds — build each cloud's index once, then query it again and again (e.g. an all-by-all join). See Usage.
Problem
Given two point clouds Q and P, for each point q in Q find its nearest neighbor p among the points in P.
Solution
- Calculate neighborhood (e.g. Delaunay) graphs for both point clouds.
- Start with a random vertex
qinQand traversePusing an A* search to find its nearest neighborp. - Move to a vertex adjacent to
qand searchPfor its nearest neighbor usingpas the start. Since we start the search where we have already established spatial proximity the A* search should finish quickly. - Rinse-repeat until we found nearest neighbors for all points in
Q.
Limitations
We currently only support 3D point clouds and Euclidean distances but may extend this to N-dimensions and other metrics in the future.
Install
We provide prebuilt wheels for Linux, macOS, and Windows on PyPI:
pip install aann
Usage
aann is built for repeated nearest-neighbour queries against prepared
indices. Building an AANN index does the expensive work up front — triangulate
the cloud into a neighbourhood graph, SIMD-pack its coordinates, and (by default)
reorder them for cache locality — so that every subsequent .query is cheap. The
payoff grows the more you reuse an index; for a single one-off search the build
cost dominates and a plain KD-tree is simpler.
Build an index once, query it many times
import aann
import numpy as np
target = np.random.rand(10_000, 3)
index = aann.AANN(target) # pay the build cost once...
for query in query_clouds: # ...then amortise it over many queries
distances, indices = index.query(query)
# k nearest neighbours per point -> (N, k) arrays, rows sorted by distance
# (k>1 is approximate; raise `ef` to trade search breadth for recall):
distances, indices = index.query(query, k=4)
# Ignore matches beyond a cutoff (scipy convention: misses get
# distance=inf and neighbour index=len(target)):
distances, indices = index.query(query, distance_upper_bound=0.05)
The query cloud can be a raw (N, 3) array, a scipy/shull Delaunay, or
another AANN — passing a prepared AANN skips re-triangulating it (the fast
path the all-by-all below uses). k counts returned neighbours (as in
scipy.spatial.cKDTree.query); the degree of the optional graph="knn"
neighbourhood graph is graph_k.
All-by-all: every cloud against every other
This is where aann pulls ahead. Build one index per cloud with prepare_many
(parallel), then join them with all_by_all: every index is built and packed
once and reused across every pair it appears in, and the Rust search releases
the GIL so the pairs run concurrently across cores.
indexes = aann.prepare_many(clouds) # list[AANN], built in parallel
results = aann.all_by_all(indexes) # every ordered i != j pair
results = aann.all_by_all(indexes, pairs=[(0, 1)]) # ...or a specific subset
# results[m] is the (distances, indices) for pairs[m] (query = i, target = j)
Because a cloud that appears in many pairs is triangulated and packed only once,
a full all-by-all over n clouds does O(n) index builds rather than O(n²) —
the reason aann suits workloads like NBLAST neuron-vs-neuron matrices.
aann vs a KD-tree
Unlike a KD-tree, aann is a cloud-vs-cloud method: the query points are
themselves triangulated into a graph, so the warm-started descent starts each
query near the previous answer. That is what makes it fast on coherent clouds
(neurons, meshes, space-filling data) — but pass a whole cloud, not a handful of
scattered points, and expect approximate results for k>1 (k=1 is exact on a
Delaunay graph).
Benchmark
bench.py contrasts aann with scipy.spatial.KDTree on uniform random 3D
clouds, single-threaded (so it compares the algorithms, not the thread pools).
It makes the trade-off concrete — an aann index is expensive to build but cheap
to query, so it only pays off once reused. Representative run (N = 5000
points/cloud, float64; numbers are indicative and machine-dependent):
| build | query | |
|---|---|---|
| scipy KDTree | 0.6 ms | 2.5 ms |
| aann index | 19 ms | 0.5 ms |
The index costs ~30× more to build but answers each query ~5× faster, so it
breaks even after ~9 reuses. In a full all-by-all — where every cloud's index is
built once and reused across all its pairs — aann's total wall-clock
(build + every pair) overtakes scipy at roughly a dozen clouds and keeps
pulling ahead (≈1.6× faster at n = 20). Recall vs the exact KDTree is 100% on
this uniform data. Reproduce with python bench.py.
TODOs
- use SIMD (singe instruction multiple data) for distance calculations
- implement k-all-nearest neighbors (
k>1uses an approximate best-first search; recall tunable viaef) - benchmarks
- [-] test various neighborhood graphs
- [-] see if we can immplement additional parameters (done:
distance_upper_bound; maybe adistance_lower_boundif that's useful) - implement
query_radius(analagous toscipy.spatial.cKDTree.query_ball_tree) - implement alternative distance metrics (currently only Euclidean)
- generalize to N-dimensions (currently only 3D)
Build
Requires Python ≥ 3.10. The extension is built against the stable ABI
(abi3-py310), so a single wheel works across all supported CPython versions.
cdinto directory- Activate virtual environment:
source .venv/bin/activate - Run
maturin build --releaseto build a wheel or usematurin developto compile and install in development mode
SIMD
aann makes use of core::simd module which means:
-
You need to use the nightly build:
# Install and update nightly rustup install nightly rustup update nightly # Make sure you are in project directory cd aann # Tell the project to use nightly rustup override set nightly
-
By default, only the oldest SIMD extension
ssse2is enabled during compilation. It is very likely that your processor supports newer extensions such asavx2or evenavx512f. To check what's supported run:$ cargo install cargo-simd-detect --force $ cargo simd-detect extension width available enabled sse2 128-bit/16-bytes true true avx2 256-bit/32-bytes true false avx512f 512-bit/64-bytes true false
You can tell the compiler to use newer extensions by setting rust flags:
# To activate a specific extension export RUSTFLAGS="-C target-feature=+avx2" # Alternatively to activate all available extensions export RUSTFLAGS="-C target-cpu=native"
Test
First make sure pytest and pandas are installed:
pip install pytest -U
Then run the test-suite like so:
pytest --verbose -s
Note that unless you compiled with maturin develop --release the timings will
be much slower (up to 10x) than in a release build.
References
Soudani, N. M., & Karami, A. (2018). All nearest neighbor calculation based on Delaunay graphs (Version 1). arXiv. https://doi.org/10.48550/ARXIV.1802.09594
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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aann-0.1.0.tar.gz.
File metadata
- Download URL: aann-0.1.0.tar.gz
- Upload date:
- Size: 150.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36e9fbd64b84af1b24a82259212dda433dc2d1d4cb1e145093bad12e359d4212
|
|
| MD5 |
1e4f3947880cb5b78280223f1bfc50d5
|
|
| BLAKE2b-256 |
f7358c0c003e8b83dea1ae16f3ae1900a27dad0e80d7ef2163218ebfaf9a19f3
|
File details
Details for the file aann-0.1.0-cp314-cp314t-win_arm64.whl.
File metadata
- Download URL: aann-0.1.0-cp314-cp314t-win_arm64.whl
- Upload date:
- Size: 193.8 kB
- Tags: CPython 3.14t, Windows ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7d226affad0f70469c1132541ad57be769841999b72bef46393318b42eb5ae2
|
|
| MD5 |
662116635ab1dde4a67b2d4c3a28f697
|
|
| BLAKE2b-256 |
78f5eadacedc00e990e92958f02394828544288b3eb8dca5c35d5b46576051e6
|
File details
Details for the file aann-0.1.0-cp314-cp314t-win_amd64.whl.
File metadata
- Download URL: aann-0.1.0-cp314-cp314t-win_amd64.whl
- Upload date:
- Size: 201.1 kB
- Tags: CPython 3.14t, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87a9d84a8b3166a1ab5bf485a9c7468ffe5c684013de1ed4df1c597d6d1d2dad
|
|
| MD5 |
7a28ea6122def0f99e05a3fc22886998
|
|
| BLAKE2b-256 |
c4506d54ace56188c149b9633ef9d22c8f48eb3d378492e82cfe04ca1b7309cf
|
File details
Details for the file aann-0.1.0-cp314-cp314t-win32.whl.
File metadata
- Download URL: aann-0.1.0-cp314-cp314t-win32.whl
- Upload date:
- Size: 184.8 kB
- Tags: CPython 3.14t, Windows x86
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ac36b84c3e78649fcb2bca0856d568e6457006da1a333558304d6f09ad8f41b
|
|
| MD5 |
3d4a3eb493f71b769a2dc4055c831a52
|
|
| BLAKE2b-256 |
70a39cf83627008f6f6813c9b8c115580c07fc30dd284d8b8585d6b5112046ee
|
File details
Details for the file aann-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: aann-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 522.4 kB
- Tags: CPython 3.14t, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06e22b745ec2cb81938ce4f258e766145022f48a67ea9741e82bf884620ea244
|
|
| MD5 |
124314430152470542c63b05b4e7f03f
|
|
| BLAKE2b-256 |
db0c62301afb40e8a6c548f9746385298201eefa78c8d96712172ffe02ebe000
|
File details
Details for the file aann-0.1.0-cp314-cp314t-musllinux_1_2_i686.whl.
File metadata
- Download URL: aann-0.1.0-cp314-cp314t-musllinux_1_2_i686.whl
- Upload date:
- Size: 547.1 kB
- Tags: CPython 3.14t, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
985f2fb32eed26122ce40143083e785ef53ece853af0d307ca7128f49b21f9e5
|
|
| MD5 |
6a8d278e80bfa26e20bf39a0583e32f2
|
|
| BLAKE2b-256 |
aa73d5c26a4c1355171dc30761a3374a917d77366c5dd5ae7a0ae737cb2b80bf
|
File details
Details for the file aann-0.1.0-cp314-cp314t-musllinux_1_2_armv7l.whl.
File metadata
- Download URL: aann-0.1.0-cp314-cp314t-musllinux_1_2_armv7l.whl
- Upload date:
- Size: 596.0 kB
- Tags: CPython 3.14t, musllinux: musl 1.2+ ARMv7l
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b54168ebee05fbb2f0f8158703a4f25dd9d123cd5ef7cb62a5602cc4527a10d2
|
|
| MD5 |
9feca6a2c5c615e8015a65c82af6f474
|
|
| BLAKE2b-256 |
c4b9d808a29d682cc2edbabb7284c5f26dd5dde1580554b2983704e51c30595c
|
File details
Details for the file aann-0.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: aann-0.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 484.3 kB
- Tags: CPython 3.14t, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3132b6dbabd5b31991d3f350e6e36b3b74fef3c951bc5bad7c314146c27f3440
|
|
| MD5 |
9a7b65145298a028e12bf998227a2a5d
|
|
| BLAKE2b-256 |
874bc5e55678d78b216597ef740629770d6658408aef37484c9028e4b2399d0c
|
File details
Details for the file aann-0.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: aann-0.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 310.3 kB
- Tags: CPython 3.14t, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08f5797182bab5225ab2c0183b0ad2f8debc989432a9f7b8d04e87b30339a085
|
|
| MD5 |
20d8f05fd2c6f517ff64faaa8f03ed2f
|
|
| BLAKE2b-256 |
151c12089f965a0a9ef5ab5f7144827b0a10cb9d29995d9f04e37a1a7322cd77
|
File details
Details for the file aann-0.1.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl.
File metadata
- Download URL: aann-0.1.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl
- Upload date:
- Size: 341.1 kB
- Tags: CPython 3.14t, manylinux: glibc 2.17+ s390x
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b602b3180b9fd0532b0f3090d33cd7a436767be5128eabce1d151ca8a4caa10
|
|
| MD5 |
dff684270686e543c4a35db3c79ce280
|
|
| BLAKE2b-256 |
da0f8aecb6144fab5667d0157b01a4f9362cd02fa18a3fff4b53e16e4f1b6381
|
File details
Details for the file aann-0.1.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.
File metadata
- Download URL: aann-0.1.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
- Upload date:
- Size: 341.9 kB
- Tags: CPython 3.14t, manylinux: glibc 2.17+ ppc64le
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19442f3530a6cd53c2270c139a3139e158e88464a05c8dafecbade35b6e7fe39
|
|
| MD5 |
6f37c81501d5717f0d0ce0ea4096f507
|
|
| BLAKE2b-256 |
6a513525fc4e625f44e0945df4013d41dfaa39be7dd7b09f75bf90d2f609bb4c
|
File details
Details for the file aann-0.1.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.
File metadata
- Download URL: aann-0.1.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
- Upload date:
- Size: 318.6 kB
- Tags: CPython 3.14t, manylinux: glibc 2.17+ ARMv7l
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa43c7eca114eba6e5241f4fd20ed5aa1919b92a588b99ca248cb6182576c7e3
|
|
| MD5 |
f987da47857a31feaf017340a75a1842
|
|
| BLAKE2b-256 |
b28d836a67a611393a3f57f79da946725c7aed377011216817f515ed941e92cf
|
File details
Details for the file aann-0.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: aann-0.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 307.1 kB
- Tags: CPython 3.14t, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b4a230c8d5383392a067a4e2f75f6b73c614973e3ee4d05a5a95dd5c2d25d5b
|
|
| MD5 |
121bd9332e2ee20874f216652dc7f0a0
|
|
| BLAKE2b-256 |
c535605919d3ffc87d9ed9efef1c398ea0fd5cd0f550c4a7e80b4fb75e3af724
|
File details
Details for the file aann-0.1.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl.
File metadata
- Download URL: aann-0.1.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl
- Upload date:
- Size: 328.8 kB
- Tags: CPython 3.14t, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
adf250d7612b10fcc5801b6622b28a652e58f7d776fe512171862144250243c1
|
|
| MD5 |
6d6859d79b1aae3dd37c3c79b876723a
|
|
| BLAKE2b-256 |
76a16f5dc48f32f9758b39bc9b7db9cf4b5a439145be9409a2a192b4c76c8563
|
File details
Details for the file aann-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl.
File metadata
- Download URL: aann-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl
- Upload date:
- Size: 284.6 kB
- Tags: CPython 3.14t, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50ca66f65a7f6b614dbfc42bbbfe432be8baaa586ddd4f3785f9ccced4f7de5a
|
|
| MD5 |
c554588aa4ecf87c9041b7f371203953
|
|
| BLAKE2b-256 |
e88bf29084b03aea7739e718797aa51c7af455a7bdcbef5a6d13cd52f3e0e222
|
File details
Details for the file aann-0.1.0-cp314-cp314t-macosx_10_12_x86_64.whl.
File metadata
- Download URL: aann-0.1.0-cp314-cp314t-macosx_10_12_x86_64.whl
- Upload date:
- Size: 294.8 kB
- Tags: CPython 3.14t, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
715ea6a2bed11de37b869dfab4e1f0d7f9c457a289b166ec69ec852e91217b78
|
|
| MD5 |
a1102651cad1f219332fb06beed002ba
|
|
| BLAKE2b-256 |
165b675bb5259e3be0311c56acc5bf4751ea5c1929a262e70c877d4316cc8c1b
|
File details
Details for the file aann-0.1.0-cp310-abi3-win_arm64.whl.
File metadata
- Download URL: aann-0.1.0-cp310-abi3-win_arm64.whl
- Upload date:
- Size: 199.3 kB
- Tags: CPython 3.10+, Windows ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a479927b3ce974f1a5351bac4992393226510256e58b2b67d73084466de29f5
|
|
| MD5 |
2ac70e5cf3de1f4bcb5a85cece118f14
|
|
| BLAKE2b-256 |
6022106efdda3f926345ba2f245189b3a694534c545d9f4a3dd25171688a7dbb
|
File details
Details for the file aann-0.1.0-cp310-abi3-win_amd64.whl.
File metadata
- Download URL: aann-0.1.0-cp310-abi3-win_amd64.whl
- Upload date:
- Size: 207.2 kB
- Tags: CPython 3.10+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84423d2d0bdfbc09f068b489ae8727eebc9cd7a0fb69516657e0bb26e07c7648
|
|
| MD5 |
981f7ebb053457ec3455580155fc6214
|
|
| BLAKE2b-256 |
d5640fda376e9759879ba4edc74eb36bf33478b4e8a4bc2a1c76fd828fe7ad50
|
File details
Details for the file aann-0.1.0-cp310-abi3-win32.whl.
File metadata
- Download URL: aann-0.1.0-cp310-abi3-win32.whl
- Upload date:
- Size: 191.3 kB
- Tags: CPython 3.10+, Windows x86
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7ce0ae1548c1d101a98f6a1274ee3e49f9d81994e2f1e213b54c7f4b7bbac888
|
|
| MD5 |
618af9634c8fd860937e1d2b6324e01d
|
|
| BLAKE2b-256 |
7abc62317df3b83193ae81eb219b96aa291a8a44f77680e27d3a208c3f38b317
|
File details
Details for the file aann-0.1.0-cp310-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: aann-0.1.0-cp310-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 527.6 kB
- Tags: CPython 3.10+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e632e2f8b6a27e87b1f33b8e1998a2961b7505c673677b0c844ebf073f97b0d
|
|
| MD5 |
8ee2cbd291dd6cf908ad2f322f473029
|
|
| BLAKE2b-256 |
3ab4c85b9ec10be67bffc61af828078eb916d0a62e932f767ab9a78076b712bb
|
File details
Details for the file aann-0.1.0-cp310-abi3-musllinux_1_2_i686.whl.
File metadata
- Download URL: aann-0.1.0-cp310-abi3-musllinux_1_2_i686.whl
- Upload date:
- Size: 553.3 kB
- Tags: CPython 3.10+, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c20011037de9d9cc2a32e4f2d4ec78ea864bc420a1d943dc05643cb0e16d9b4
|
|
| MD5 |
d40e29b3a81295ef8e0b399ff10eb83b
|
|
| BLAKE2b-256 |
233bd5e10505b393259778b6c12090204ed675771c8d96392ef7f4e69184a6bb
|
File details
Details for the file aann-0.1.0-cp310-abi3-musllinux_1_2_armv7l.whl.
File metadata
- Download URL: aann-0.1.0-cp310-abi3-musllinux_1_2_armv7l.whl
- Upload date:
- Size: 602.9 kB
- Tags: CPython 3.10+, musllinux: musl 1.2+ ARMv7l
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8bbe0ce4ecfd9985813293efa197f8fc3c4c128ac5fc0b16372952e41d8393f
|
|
| MD5 |
3a2a1eafb72d610f7338bddbce521058
|
|
| BLAKE2b-256 |
2e76cc87aaa502531681f28671192c29bf9d74145ceb63c153cd5451ed719d35
|
File details
Details for the file aann-0.1.0-cp310-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: aann-0.1.0-cp310-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 489.9 kB
- Tags: CPython 3.10+, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f30e9dabc58603939d27b54af9e6bc7651451a2b0ccc64f5235e4c13a1b02150
|
|
| MD5 |
0ebbbb106bfbdc0cafd37797acaa79e3
|
|
| BLAKE2b-256 |
1a942a19bb2e376416dba17393568f449ba872c9c9bc585b1b44519317270941
|
File details
Details for the file aann-0.1.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: aann-0.1.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 315.8 kB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
966ac08345e0e06192ee48d05136433e77ac8b72f15f5777474d8a7b15317356
|
|
| MD5 |
45aa2a635a06cd528340184506601d25
|
|
| BLAKE2b-256 |
fce8517df17557803b504375e851da59e5dd1fed3e106f3a34228f1952e02d16
|
File details
Details for the file aann-0.1.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.
File metadata
- Download URL: aann-0.1.0-cp310-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
- Upload date:
- Size: 346.7 kB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ s390x
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
387bf15469339347502a4375dae5883ec105dd75af59b1a582bbfd20598cffd6
|
|
| MD5 |
bfdbda035624830967a2b91ff9dd0223
|
|
| BLAKE2b-256 |
03e53ededf943b6c69bddbacedfb0404e15c9b2d0947e0f4e4c1bddb0be9efd9
|
File details
Details for the file aann-0.1.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.
File metadata
- Download URL: aann-0.1.0-cp310-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
- Upload date:
- Size: 347.8 kB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ ppc64le
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a832deb67047eb5150c72439c7ff64980c0f285330758be2532a56d4ecdc158c
|
|
| MD5 |
b8c8752d0c028581a0a8f4cb0805086e
|
|
| BLAKE2b-256 |
b86dca49cab28cce43375e458af13766af15a3a7b42007fcaa53502eac813091
|
File details
Details for the file aann-0.1.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.
File metadata
- Download URL: aann-0.1.0-cp310-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
- Upload date:
- Size: 325.3 kB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ ARMv7l
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66d2c98ff96bce40fa67a63b9a8fe72f6fdf1b5853a3f25a98c35b1ee5692e70
|
|
| MD5 |
e9b653f9a417a30db3727355405051ad
|
|
| BLAKE2b-256 |
ea192d37d7c6b97f81657a5ed597b1d4df9bbc1473adaf67514250f41c2fe8e1
|
File details
Details for the file aann-0.1.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: aann-0.1.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 312.9 kB
- Tags: CPython 3.10+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b1663fea8760f2da958480340093584253065595a6d0483d3fb0f4438cb45b0
|
|
| MD5 |
92b36aefe126ddf56a087b7ac42e4740
|
|
| BLAKE2b-256 |
fc329c2b27ca5ed027d479de1c690689535f8ccf56a0553dd5e4a767be9d0f3a
|
File details
Details for the file aann-0.1.0-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl.
File metadata
- Download URL: aann-0.1.0-cp310-abi3-manylinux_2_5_i686.manylinux1_i686.whl
- Upload date:
- Size: 334.8 kB
- Tags: CPython 3.10+, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fea8f66a4f244c8362231454902e2f02a63139bc8da1699600fc331ad92dec7a
|
|
| MD5 |
33bee3f8036a662dac7f0e0c4767d14c
|
|
| BLAKE2b-256 |
eeece8028c4cd70353164007ed078e58c337274a6c1f9c3bb7bfda1354acbfa3
|
File details
Details for the file aann-0.1.0-cp310-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: aann-0.1.0-cp310-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 291.2 kB
- Tags: CPython 3.10+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b889c447774f984e3a63df12856b8d07e03a1010a29f297db0e6b3b7b7b8db33
|
|
| MD5 |
8c6c15e24a8ceeb4828449faab94227d
|
|
| BLAKE2b-256 |
c2a3f1c84c56327343932245a237a9e5e51caad0873aa2d7da4ef3cf9a57c408
|
File details
Details for the file aann-0.1.0-cp310-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: aann-0.1.0-cp310-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 297.2 kB
- Tags: CPython 3.10+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
79c9697a7946a2f29570f28d34e4331aed4433220131052fc82a5848264f67ae
|
|
| MD5 |
58cec1c9e39aa182384beecb434305b0
|
|
| BLAKE2b-256 |
e0327d37ad7573899d78d2f58380fda82c9e079eeaa6be10546122773222cb0e
|