This release is a pre-release and may not be stable for production use.
QaNN
QaNN (Quantized Nearest Neighbors) is a Python library for fast nearest-neighbor search over float32 vectors. It offers exact search, inverted-file (IVF) search, product quantization (PQ) compression and exact re-ranking, all implemented in multithreaded, SIMD-accelerated C++ and driven from NumPy.
Alpha: under active development. The API may change between releases.
Install
pip install qann
Wheels are published for Linux (x86_64, aarch64) and macOS (Apple Silicon, Intel) on Python 3.10 to 3.14. x86_64 builds require AVX2 and FMA. To build from source instead, run pip install . in a checkout; this needs CMake 3.20+, a C++20 compiler and, on Linux, OpenBLAS (optional but much faster training).
Quick start
import numpy as np, qann
x = np.random.rand(100_000, 128).astype(np.float32)
ivf = qann.IVFIndex(128, nlist=1024, nprobe=16)
ivf.enable_pq(16) # store each vector in 16 bytes
ivf.train(x, seed=1)
index = qann.RefineIndex(ivf, k_factor=10) # re-rank PQ candidates exactly
index.add(x)
ids, dists = index.batch_query(x[:5], 10) # both shaped (5, 10)
Conventions
- Vectors are passed as 2D NumPy arrays of shape
(n, dim), except single vectors (query,PQCodebookmethods), which are(dim,). float32 C-contiguous arrays are used without copying; anything else (float64, Fortran order, strided slices) is converted first. - IDs are assigned in insertion order by default: the first vector added gets id 0, the next id 1, and so on across all
addcalls. Create an index withcustom_ids=Trueto use your own ids instead; see Custom ids and deleting. - Distances are squared Euclidean (L2) distances, smallest first. For cosine similarity, L2-normalize vectors before adding and querying.
- Results from
batch_queryare anint64id array and afloat32distance array, both shaped(num_queries, k). Rows with fewer thankhits are padded with id-1and distanceinf.
Indexes
Every index has the same core methods:
| Method | Description |
|---|---|
add(data, ids=None) |
Add an (n, dim) array of vectors, with n ids if the index uses custom ids. |
batch_query(queries, k) |
k nearest neighbors for each row of an (nq, dim) array, run in parallel. Returns (ids, dists). |
query(query, k) |
k nearest neighbors for a single (dim,) vector such as x[i]. Returns 1D (ids, dists). |
remove(ids) |
Delete vectors by id; returns how many were deleted. |
size() |
Number of vectors in the index (deleted ones excluded). |
dim() |
Vector dimension. |
save(path) |
Save the index to a file; see Saving and loading. |
FlatIndex(dim, *, custom_ids=False)
Exact brute-force search: no training, 100% recall, and query cost that grows linearly with the number of vectors. Good for up to a few hundred thousand vectors, or as ground truth when measuring recall.
index = qann.FlatIndex(128)
index.add(x)
ids, dists = index.batch_query(x[:10], 10)
IVFIndex(dim, nlist, nprobe=10, *, custom_ids=False)
Partitions vectors into nlist clusters with k-means and, at query time, scans only the nprobe clusters closest to the query. Much faster than flat search at a small cost in recall.
| Member | Description |
|---|---|
train(data, max_iters=25, seed=None) |
Learn the cluster centroids from a sample of at least nlist vectors. Call once, before add. Pass seed for reproducible results. |
enable_pq(num_subspaces, centroids_per_subspace=256) |
Compress stored vectors with product quantization. Call before train. |
nprobe |
Property: clusters scanned per query. Can be changed at any time; higher means better recall and slower queries. |
pq_distance |
Property: how PQ codes are scored, qann.PQDistance.ADC (default, more accurate) or qann.PQDistance.SDC. |
precomputed_tables |
Property: whether ADC queries use lookup tables precomputed at train time, which makes PQ queries faster. On by default; reads True once the tables exist (PQ enabled, trained, and nlist * num_subspaces * centroids_per_subspace * 4 bytes within 256 MB). Set to False to free them. |
nlist must be between 100 and 65535, and nprobe between 1 and nlist. A common starting point is nlist around sqrt(n) to 4 * sqrt(n) and nprobe at 1% to 5% of nlist.
With PQ (enable_pq), each vector is split into num_subspaces slices and each slice is stored as one byte, so a 128-dim float32 vector (512 bytes) with 16 subspaces takes 16 bytes. dim must be divisible by num_subspaces. Distances become approximate, which lowers recall; wrap the index in a RefineIndex to recover it.
ivf = qann.IVFIndex(128, nlist=1024, nprobe=16)
ivf.enable_pq(16)
ivf.train(x, seed=1)
ivf.add(x)
ivf.nprobe = 32 # trade speed for recall
RefineIndex(base, k_factor=10, *, custom_ids=False)
Wraps a trained, empty approximate index created without custom ids (give the RefineIndex its own custom_ids instead). Each query fetches k * k_factor candidates from base, then re-ranks them with exact distances against full-precision copies of the vectors. Add and remove vectors through the RefineIndex: while it wraps a base, calling add or remove on the base itself raises ValueError (it would put the two out of step), and a base can only be wrapped by one RefineIndex at a time. Tuning the base (nprobe, pq_distance) is fine. k_factor is a property and can be changed at any time, and the read-only base property returns the wrapped index, e.g. to change nprobe.
This is the usual way to combine PQ's speed with near-exact ranking. It keeps the original vectors in memory alongside the PQ codes.
make_index(type, dim, opts=IndexOptions())
Builds an index from a type and an options object, returning a FlatIndex or IVFIndex:
opts = qann.IndexOptions()
opts.nlist, opts.nprobe, opts.pq_subspaces = 1024, 16, 16
ivf = qann.make_index(qann.IndexType.IVF, 128, opts)
ivf.train(x)
IndexType is Flat or IVF. IndexOptions fields and defaults: capacity (Flat initial reserve, 1024), nlist (100), nprobe (10), pq_subspaces (0, meaning no PQ) and pq_centroids (256).
Custom ids and deleting
By default an index numbers vectors 0, 1, 2, ... in the order they're added. To use your own ids (database keys, document ids, ...), create the index with custom_ids=True and pass one id per vector:
index = qann.FlatIndex(128, custom_ids=True)
index.add(vectors, ids=doc_ids) # doc_ids: one int per row
ids, dists = index.batch_query(queries, 10) # ids are your doc_ids
index.remove([doc_ids[0], doc_ids[1]]) # returns 2
- Ids can be a NumPy array of any integer type, a list or a
range. They must be>= 0(-1marks missing results) and unique within the index; a bad batch raises an error and adds nothing. - Every add must pass ids on a
custom_ids=Trueindex, and an index created without it refuses them. remove(ids)works with or without custom ids. Unknown and already deleted ids are skipped, so deleting twice is harmless. A deleted id can be added again, with a new vector.- Deleted vectors keep their memory for now: queries skip them, but the space isn't reclaimed.
- For
make_index, setIndexOptions.custom_ids.
Saving and loading
Any index can be saved to a file and loaded back, including its training, so it doesn't have to be retrained or re-added each run:
index.save("vectors.qann") # str or pathlib.Path
index = qann.load("vectors.qann") # returns a FlatIndex, IVFIndex or RefineIndex
ids, dists = index.batch_query(queries, 10)
- Everything is restored: vectors, ids (including custom ids), deletions, IVF centroids, PQ codebooks and settings such as
nprobe,pq_distanceandk_factor. A loaded index gives identical results and keeps acceptingaddandremove. - A
RefineIndexfile contains its base index, so loading one restores both. Tune the base throughloaded.base, e.g.loaded.base.nprobe = 32. - Saving is safe to interrupt: the file is written next to the target as
<path>.tmpand renamed into place when complete, so a failed save never leaves a partial file or destroys an existing one. - Bad files raise
RuntimeError: a missing, truncated or corrupted file, or one that isn't a QaNN index, is rejected instead of loading garbage. - Files are versioned. Newer releases keep loading files saved by older ones (files from 0.1.0a4 load in 0.1.0a5). A file saved by a newer release than the one loading it raises
RuntimeErrorrather than being misread.
PQCodebook on its own can't be saved yet; save the IVFIndex that uses it instead.
Product quantization
PQCodebook(dim, num_subspaces, centroids_per_subspace=256) exposes the quantizer used inside IVFIndex for direct use.
| Method | Description |
|---|---|
train(data, max_iters=25, seed=None) |
Run k-means in each subspace over an (n, dim) array. |
encode(vec) |
Encode a (dim,) vector into a uint8 array of num_subspaces codes. |
compute_adc_table(query) |
Precompute distances from a (dim,) query to every centroid; reuse it across many codes. |
distance_adc(table, code) |
Approximate squared L2 between the table's query and a code (asymmetric). |
distance_sdc(query_code, code) |
Approximate squared L2 between two codes (symmetric). |
dim(), num_subspaces(), centroids_per_subspace() |
Shape of the codebook. |
pq = qann.PQCodebook(128, 16)
pq.train(x, seed=1)
codes = [pq.encode(v) for v in x[:1000]]
table = pq.compute_adc_table(x[0])
dists = [pq.distance_adc(table, c) for c in codes]
Utilities
| Function | Description |
|---|---|
l2_distance(a, b) |
Row-wise squared L2 distance between two (m, dim) arrays; returns shape (m,). |
cosine_distance(a, b) |
Row-wise cosine distance (1 minus cosine similarity) between two (m, dim) arrays. |
set_num_threads(n) |
Threads used for batch queries, adding with PQ and PQ training. 0 (default) uses every core; 1 runs serially. |
num_threads() |
Thread count currently in effect. |
__version__ |
Installed version. |
Threads and type hints
- Thread-safe. Queries, adds and training release Python's GIL while they run, so other Python threads keep running, and several threads can query the same index at once. An
add,trainor setting change waits for running queries on that index to finish (and blocks new ones until it's done), so concurrent use never sees a half-updated index. This also covers the base of aRefineIndex, e.g.ivf.nprobe = 32while queries run through theRefineIndexwrappingivf. - Typed. Wheels include type stubs, so editors autocomplete the API and type checkers such as mypy and Pylance/pyright check calls to it.
More
See ARCHITECTURE.md for the design, a file-by-file reference and SIFT1M benchmarks.
Metadata
Release files for qann 0.1.0a6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| qann-0.1.0a6.tar.gz | 391.3 kB | Details |
Built distributions (wheels)
Total release size: 89.3 MB
Release files / qann-0.1.0a6.tar.gz
| Download URL | qann-0.1.0a6.tar.gz |
|---|---|
| Size | 391.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2d0ce149910ea4797fae122c178d741a1e2d9eb5d05bcf51aa7c8f7ca100cad5
|
|
BLAKE2b-256 checksum How to use checksums |
cecf086bc979f1b0e539a7d5c8600cefea2e752c6a613da2b2e8a9d4e78cc41a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | qann-0.1.0a6-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 12.3 MB |
| Tags | CPython 3.14 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
897e691980042dfde63ff220e145117cce2758dac88aba7a2cc8fef40ceca35b
|
|
BLAKE2b-256 checksum How to use checksums |
e7e52d6c062fb10367b01e951315369cbc52a4788b87b9934f0996d04eb545c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | qann-0.1.0a6-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.14 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
2ef7591a23b481ed14e722ea676c479d66c0a4ae586b0a0f4777a4cf3ed025a7
|
|
BLAKE2b-256 checksum How to use checksums |
694950be501c9d70e87f27c05f7e1f4607d8fdc722eb30f2762dc9a652c0adc3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp314-cp314-macosx_11_0_x86_64.whl
| Download URL | qann-0.1.0a6-cp314-cp314-macosx_11_0_x86_64.whl |
|---|---|
| Size | 167.6 kB |
| Tags | CPython 3.14 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
f79fc565ce1094165cd83e0b660542ea660053e7593e6cc2d0e0b8dc207ab8d8
|
|
BLAKE2b-256 checksum How to use checksums |
8d424507dd7fb36e5eb23e2af81d294aaee896a20fb14bba93287d8504fabb87
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | qann-0.1.0a6-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 148.9 kB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
5f8d26025111d01d9ca1f28cce9baf194498f4e1131a24edf2ee52de9fc1507b
|
|
BLAKE2b-256 checksum How to use checksums |
ada882e6c0b4d43ff3b8fcc4be69ebf4f39302e4e8385e4619ed36d9dd60fd0f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | qann-0.1.0a6-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 12.3 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
c88a1ecc9e1c80a9127e2737f574f537605fda6be3b10425cf2e460349a7a1ee
|
|
BLAKE2b-256 checksum How to use checksums |
3d62e4c75c3e265df50b14a4d76c4369695c969546b6e0ce60663e6c7e113a20
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | qann-0.1.0a6-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.13 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
6c9a57a6a2c6c4b0b3895789e69c27bb2e613462f52cb7984f4ec8ef2ae6cecd
|
|
BLAKE2b-256 checksum How to use checksums |
74e99dafcef9880eb1f3f1ba426bb9544c38937df70a6e3e4acec3190aaf9a32
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp313-cp313-macosx_11_0_x86_64.whl
| Download URL | qann-0.1.0a6-cp313-cp313-macosx_11_0_x86_64.whl |
|---|---|
| Size | 167.6 kB |
| Tags | CPython 3.13 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
0c0e626d051536c7a5edf6ab21509de8524faba8a0636bb10e8a40ae559a9782
|
|
BLAKE2b-256 checksum How to use checksums |
153e1923cc47c088f9fd7293b810a53d649f48041ff1ff81b2800327a82b5777
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | qann-0.1.0a6-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 148.8 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
9cb4a3093ed87d96010ea6028b0f68f6449419248457316fa396c56ca52949b3
|
|
BLAKE2b-256 checksum How to use checksums |
27e84e0ccd4141772d15f3bdc32a607bbca6037e90c7518fb190df110083814f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | qann-0.1.0a6-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 12.3 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
d3510eefa30ce8e63bd01f6fd9830d14a8c80a03226e52b3a772bd3ce885f04b
|
|
BLAKE2b-256 checksum How to use checksums |
f96b1e1b6a15f2443f8e65e735c87036218fff23905a20c46443e02152e38adb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | qann-0.1.0a6-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
591c0a08f5051c494ff58a7023d0dc5f1ea73df78e3840e15d19b52ff0f5e405
|
|
BLAKE2b-256 checksum How to use checksums |
c63b88c05e9560d6531e070c76d0d0a9fd67c087fd018491fe117894a76222d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp312-cp312-macosx_11_0_x86_64.whl
| Download URL | qann-0.1.0a6-cp312-cp312-macosx_11_0_x86_64.whl |
|---|---|
| Size | 167.6 kB |
| Tags | CPython 3.12 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
1d6534f64386b76b298f4971005eb2e0a1c184ab68237946fa26ac450b2edee6
|
|
BLAKE2b-256 checksum How to use checksums |
c2faf4eed02dc6cd1edf3d30065feddd21a02ec2da614497fe0d7e1315549286
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | qann-0.1.0a6-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 148.8 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
7dfe30aa78b1dfbff1f8f89f0542d6e2cf994595cb9d4bfc617ea98bbd037d49
|
|
BLAKE2b-256 checksum How to use checksums |
941af6f7af3e3fa7eb6fad54b25c1612e7b3b97e100c98ef16281e59d4d511bf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | qann-0.1.0a6-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 12.3 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
5697da789b260dc572bb6125f6f80a5196e16e429fb35ea89add7e0115fc4f7a
|
|
BLAKE2b-256 checksum How to use checksums |
f3c9a00e80dbfe2682b2611f93e5cb9dfd84cfc9821f162b26a6178dde191d11
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | qann-0.1.0a6-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.11 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
16f1774a482a748b81c9b6dbd9115cd482a730131c9b1e03b65476cac3bff96b
|
|
BLAKE2b-256 checksum How to use checksums |
93b7b61c4114f5cd79efa48f65204d0e7d8d313f37f1d988051bb1a62d786f6f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp311-cp311-macosx_11_0_x86_64.whl
| Download URL | qann-0.1.0a6-cp311-cp311-macosx_11_0_x86_64.whl |
|---|---|
| Size | 167.9 kB |
| Tags | CPython 3.11 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
7942c34a55827a1798ac39efce451b788775bcb4780720193247a8cdf1780b92
|
|
BLAKE2b-256 checksum How to use checksums |
ae7a7b02b0b01f3925c52e9a781a7b3886b265338124c0917b2d3fcaa272077c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | qann-0.1.0a6-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 149.4 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
710d1e4bf14396d844bdfd0562779b29a38d4c361a7263a3eb1edfe5ff156075
|
|
BLAKE2b-256 checksum How to use checksums |
4bfde0a97d0267e87875b5396c3d927224afc0b5b1c6da1d74277a4e5b77eb74
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | qann-0.1.0a6-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 12.3 MB |
| Tags | CPython 3.10 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
96b95b1e98a680baeaae868ee167f685c89c31fb35d0c0051632b7e78f7e511f
|
|
BLAKE2b-256 checksum How to use checksums |
e6dbafe25c27facd5af3bda2ba1a792f66da9176445bf596107f2b5b1cf89bbe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | qann-0.1.0a6-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 5.2 MB |
| Tags | CPython 3.10 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
cd54c7baa93f1613cfdd6158bf06afef4d2ad4ee7d649a6311019ba749b00851
|
|
BLAKE2b-256 checksum How to use checksums |
33e5349134dff470ab85b8f9609b7ad4ccaf0e71034ad023da9fe04d543c216d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp310-cp310-macosx_11_0_x86_64.whl
| Download URL | qann-0.1.0a6-cp310-cp310-macosx_11_0_x86_64.whl |
|---|---|
| Size | 167.3 kB |
| Tags | CPython 3.10 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
9f8586e45b7cd18825ea1e4aba60daacb04f491657eae41eb41134c52344c359
|
|
BLAKE2b-256 checksum How to use checksums |
756dcc2ee934709ab6a4a503a6340796baa8aa2b3018e63f3e669e7ef0986d5e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / qann-0.1.0a6-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | qann-0.1.0a6-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 149.0 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
5ce95c1695b736236ebdc3d75f7d36d2b5c3a65c1863c5289974769e82dd8e7f
|
|
BLAKE2b-256 checksum How to use checksums |
08d44441adf98ce952b54bcddf15a84148e6dece4d3fa2948b45c885c48d7f6c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency log