Skip to main content

Fast exact KNN search with Vantage Point Trees — L2, L1, Chebyshev and Hamming, SIMD-accelerated

Project description

PyNear

PyPI version Python versions CI License: MIT

Fast, exact K-nearest-neighbour search for Python

PyNear is a Python library with a C++ core for exact or approximate (fast) KNN search over metric spaces. It is built around Vantage Point Trees, a metric tree that scales well to higher dimensionalities where kd-trees degrade, and uses SIMD intrinsics (AVX2 on x86-64, portable fallbacks on arm64/Apple Silicon) to accelerate the hot distance computation paths. Already using scikit-learn's KNN? PyNear ships drop-in adapter classes that implement the same fit / predict / score / kneighbors API — migrate in one line.

Why PyNear?

PyNear Faiss Annoy scikit-learn
Exact results ✅ VPTree always ✅ flat index ❌ approximate
Approximate (fast, tunable) ✅ IVFFlatL2Index ✅ IVF
Metric agnostic ✅ L2, L1, L∞, Hamming L2 / inner product L2 / cosine / Hamming L2 / others
Low-dim sweet spot
High-dim (512-D – 1024-D) ✅ IVFFlatL2Index
Binary / Hamming ✅ hardware popcount
Threshold / range search ✅ BKTree
Pickle serialization
No extra native deps ✅ NumPy only ❌ compiled lib + optional GPU
scikit-learn compatible API ✅ drop-in adapters

PyNear covers the full spectrum: use VPTree indices when you need guaranteed exact answers (2-D to ~256-D), or IVFFlatL2Index when you need fast approximate search on high-dimensional data (512-D to 1024-D) with a configurable recall target.

For the Layman

K-Nearest Neighbours (KNN) is simply the idea of finding the k most similar items to a given query in a collection.

Think of it like asking: "given this song I like, what are the 5 most similar songs in my library?" The algorithm measures the "distance" between items (how different they are) and returns the closest ones.

The two key parameters are:

  • k — how many neighbours to return (e.g. the 5 most similar)
  • distance metric — how "similarity" is measured (e.g. Euclidean, Manhattan, Hamming)

Everything else — VP-Trees, SIMD, approximate search — is just engineering to make that search fast at scale.

Main applications of KNN search
  1. Image retrieval — finding visually similar images by searching nearest neighbours in an embedding space (e.g. face recognition, reverse image search).
  2. Recommendation systems — suggesting similar items (products, songs, articles) by finding the closest user or item embeddings.
  3. Anomaly detection — flagging data points whose nearest neighbours are unusually distant as potential outliers or fraud cases.
  4. Semantic search — retrieving documents or passages whose dense vector representations are closest to a query embedding (e.g. RAG pipelines).
  5. Broad-phase collision detection — quickly finding candidate object pairs that might be colliding by looking up the nearest neighbours of each object's bounding volume, before running the expensive narrow-phase test.
  6. Soft body / cloth simulation — finding the nearest mesh vertices or particles to resolve contact constraints and self-collision.
  7. Particle systems (SPH, fluid sim) — each particle needs to know its neighbours within a radius to compute pressure and density forces.

Installation

pip install pynear

Requires Python 3.8+ and NumPy ≥ 1.21.2. Pre-built wheels are available for Linux, macOS (x86-64 and Apple Silicon), and Windows — no compiler needed.


Quick start

import numpy as np
import pynear

# Build index from 100 000 vectors of dimension 32
data = np.random.rand(100_000, 32).astype(np.float32)
index = pynear.VPTreeL2Index()
index.set(data)

# KNN search — returns (indices, distances) per query, sorted nearest-first
queries = np.random.rand(10, 32).astype(np.float32)
indices, distances = index.searchKNN(queries, k=5)

# 1-NN shortcut (slightly faster than searchKNN with k=1)
nn_indices, nn_distances = index.search1NN(queries)

For all index types and advanced usage see docs/README.md.


Migrating from scikit-learn

PyNear provides adapter classes that implement the same interface as sklearn.neighbors.NearestNeighbors, KNeighborsClassifier, and KNeighborsRegressor. Changing the import is all that is required in most cases:

# Before
from sklearn.neighbors import KNeighborsClassifier
clf = KNeighborsClassifier(n_neighbors=5, metric='euclidean')

# After — identical API, backed by a VP-Tree
from pynear.sklearn_adapter import PyNearKNeighborsClassifier
clf = PyNearKNeighborsClassifier(n_neighbors=5, metric='euclidean')

All three adapters follow the standard scikit-learn workflow:

from pynear.sklearn_adapter import (
    PyNearNearestNeighbors,
    PyNearKNeighborsClassifier,
    PyNearKNeighborsRegressor,
)

# Unsupervised neighbour lookup
nn = PyNearNearestNeighbors(n_neighbors=5, metric='euclidean')
nn.fit(X_train)
distances, indices = nn.kneighbors(X_query)

# Classification
clf = PyNearKNeighborsClassifier(n_neighbors=5, weights='distance')
clf.fit(X_train, y_train)
clf.predict(X_test)          # class labels
clf.predict_proba(X_test)    # per-class probabilities
clf.score(X_test, y_test)    # accuracy

# Regression
reg = PyNearKNeighborsRegressor(n_neighbors=5, weights='uniform')
reg.fit(X_train, y_train)
reg.predict(X_test)          # predicted values
reg.score(X_test, y_test)    # R²

Supported metrics: euclidean / l2, manhattan / l1, chebyshev / linf, hamming

Supported weights: uniform, distance (inverse-distance-weighted)

Note: Input arrays are cast to float32 (or uint8 for Hamming) before indexing. scikit-learn uses float64 internally, so very small numerical differences may appear at the precision boundary, but nearest-neighbour results are identical for all practical datasets.


Features

Available indices

Exact indices — always return the true k nearest neighbours:

Index Distance Data type Notes
VPTreeL2Index L2 (Euclidean) float32 SIMD-accelerated
VPTreeL1Index L1 (Manhattan) float32 SIMD-accelerated
VPTreeChebyshevIndex L∞ (Chebyshev) float32 SIMD-accelerated
VPTreeBinaryIndex Hamming uint8 Hardware popcount
BKTreeBinaryIndex Hamming uint8 Threshold / range search

Approximate indices — partition data into clusters, search n_probe of them per query; tunable recall vs speed:

Index Distance Data type Notes
IVFFlatL2Index L2 (Euclidean) float32 BLAS SGEMV inner scan; best for 512-D – 1024-D

All VPTree and IVFFlat indices support searchKNN(queries, k) and search1NN(queries). BKTreeBinaryIndex supports find_threshold(queries, threshold) for range queries. Set n_probe = n_clusters on IVFFlatL2Index to make it exact.

See docs/approximate.md for a full guide on measuring recall and tuning n_probe for your dataset.

Why approximate search? The curse of dimensionality

Tree-based exact search relies on pruning: a branch is discarded when its closest possible point is provably farther than the current best candidate. This pruning becomes ineffective as dimensionality grows — a phenomenon rooted in a fundamental geometric property of high-dimensional spaces.

Volume concentration near the boundary. Consider $N$ points drawn uniformly at random inside an $n$-dimensional ball of radius $R$. A point at distance $r$ from the origin is closer to the boundary than to the origin whenever $R - r < r$, i.e. $r > R/2$. The fraction of the ball's volume satisfying this condition is:

$$F(n) = \frac{V_n(R) - V_n\left(\tfrac{R}{2}\right)}{V_n(R)} = 1 - \left(\frac{1}{2}\right)^{n}$$

where $V_n(r) = \dfrac{\pi^{n/2}}{\Gamma\left(\tfrac{n}{2}+1\right)} r^n$ is the volume of an $n$-ball of radius $r$. Because $V_n$ scales as $r^n$, the ratio simplifies cleanly to $1 - 2^{-n}$, independent of $R$.

Median distance from the origin. The median distance $r_m$ is the radius such that exactly half the volume lies within it:

$$\frac{V_n(r_m)}{V_n(R)} = \frac{1}{2} ;\Longrightarrow; \left(\frac{r_m}{R}\right)^n = \frac{1}{2} ;\Longrightarrow; r_m = R \cdot 2^{-1/n}$$

As $n \to \infty$, $r_m \to R$: the typical point is arbitrarily close to the surface of the ball.

Numerical illustration:

Dimensionality $n$ Points closer to border than origin $F(n)$ Median distance $r_m / R$
1 50.0 % 0.500
2 75.0 % 0.707
5 96.9 % 0.871
10 99.9 % 0.933
100 ≈ 100 % 0.993

Consequence for KNN trees. When $n$ is large, nearly all points are concentrated in a thin shell near the boundary, and the distances between any two points become almost equal. With no contrast in distances, a tree has nothing to prune — every branch must be explored — and search degrades to exhaustive linear scan, $O(N)$. This is the fundamental reason why exact tree search offers diminishing returns beyond $d \approx 256$, and why approximate methods such as IVFFlatL2Index (probing only a fraction of clusters) or Faiss IVF are necessary at high dimensionalities.

Pickle serialisation

All VPTree and IVFFlat indices are pickle-serialisable — save a built index to disk and reload it without rebuilding:

import pickle, numpy as np, pynear

data = np.random.rand(20_000, 32).astype(np.float32)
index = pynear.VPTreeL2Index()
index.set(data)

blob = pickle.dumps(index)
index2 = pickle.loads(blob)

Tree inspection

print(index.to_string())
####################
# [VPTree state]
Num Data Points: 100
Total Memory: 8000 bytes
####################
[+] Root Level:
 Depth: 0
 Height: 14
 Num Sub Nodes: 100
...

Note: to_string() traverses the whole tree — use it for debugging only.


Demos

Two interactive desktop demos ship in demo/ and run with a single command:

pip install PySide6
python demo/point_cloud.py    # KNN Explorer — hover over 1M points to find neighbours
python demo/voronoi.py    # Voronoi diagram — drag seed points, watch cells reshape live
  • KNN Explorer — scatter up to 1 million 2-D points and hover to see k nearest neighbours highlighted in real time. Supports zoom, pan, and configurable point size.
  • Voronoi Diagram — every canvas pixel is coloured by its nearest seed point. Add, drag, and remove seeds; the diagram redraws live using pynear's batch 1-NN.

See docs/demos.md for full details.


Benchmarks

Benchmark Report (PDF)

A formal evaluation of PyNear against Faiss, scikit-learn, and Annoy across Euclidean, Manhattan, and Hamming distance metrics, dimensionalities from 2-D to 1024-D, and both exact and approximate search modes. Includes TikZ-rendered latency charts and a recall–latency Pareto analysis of IVFFlatL2Index vs Faiss IndexIVFFlat.

To run a quick standalone benchmark:

python bench_run.py

Development

Building and installing locally

pip install .

Running tests

make test

Debugging C++ code on Unix

CMake build files are provided for building and running C++ tests independently:

make cpp-test

Tests are built in Debug mode by default, so you can debug with GDB:

gdb ./build/tests/vptree-tests

Debugging C++ code on Windows

Install CMake (py -m pip install cmake) and pybind11 (py -m pip install pybind11), then:

mkdir build
cd build
cmake ..\pynear

You may need to pass extra arguments, for example:

cmake ..\pynear -G "Visual Studio 17 2022" -A x64 ^
  -DPYTHON_EXECUTABLE="C:\Program Files\Python312\python.exe" ^
  -Dpybind11_DIR="C:\Program Files\Python312\Lib\site-packages\pybind11\share\cmake\pybind11"

Build and run vptree-tests.exe from the generated solution.

Formatting code

make fmt

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

pynear-2.1.1.tar.gz (52.6 kB view details)

Uploaded Source

Built Distributions

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

pynear-2.1.1-cp312-cp312-win_amd64.whl (194.9 kB view details)

Uploaded CPython 3.12Windows x86-64

pynear-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pynear-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (816.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pynear-2.1.1-cp312-cp312-macosx_11_0_arm64.whl (254.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pynear-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl (267.3 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

pynear-2.1.1-cp311-cp311-win_amd64.whl (194.3 kB view details)

Uploaded CPython 3.11Windows x86-64

pynear-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pynear-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (802.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pynear-2.1.1-cp311-cp311-macosx_11_0_arm64.whl (251.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pynear-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl (260.9 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

pynear-2.1.1-cp310-cp310-win_amd64.whl (194.0 kB view details)

Uploaded CPython 3.10Windows x86-64

pynear-2.1.1-cp310-cp310-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pynear-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (800.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pynear-2.1.1-cp310-cp310-macosx_11_0_arm64.whl (250.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pynear-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl (259.7 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

pynear-2.1.1-cp39-cp39-win_amd64.whl (201.2 kB view details)

Uploaded CPython 3.9Windows x86-64

pynear-2.1.1-cp39-cp39-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pynear-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (800.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

pynear-2.1.1-cp39-cp39-macosx_11_0_arm64.whl (249.9 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pynear-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl (259.8 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

pynear-2.1.1-cp38-cp38-win_amd64.whl (193.3 kB view details)

Uploaded CPython 3.8Windows x86-64

pynear-2.1.1-cp38-cp38-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

pynear-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (799.7 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

pynear-2.1.1-cp38-cp38-macosx_11_0_arm64.whl (249.5 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

pynear-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl (259.2 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

Details for the file pynear-2.1.1.tar.gz.

File metadata

  • Download URL: pynear-2.1.1.tar.gz
  • Upload date:
  • Size: 52.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pynear-2.1.1.tar.gz
Algorithm Hash digest
SHA256 03cb3d437cfe4631fec20b01ae0c6ead4513b0e739e56d89b26dfcf1efc196a8
MD5 06a963e6c81786cc75fc2a7f682e2154
BLAKE2b-256 a1ea4d983994bfb8415a4b4b5036e5a184127c126946026c15f754e46523640a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1.tar.gz:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pynear-2.1.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 194.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pynear-2.1.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c4a6b7e301bf1ea8b6ce189f8df42c5cb0c053279637dc656ec17c5c6962388f
MD5 15e03a5a0fafef2119165e118503c63d
BLAKE2b-256 bac28b65d29929a969422591d2a4af9a7d95dbc5a739030162cf38d026b0b9da

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp312-cp312-win_amd64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 25fbebce102c05913b459feeb2f2c04bb40dd004538b70ffee2eecc0689f7c3f
MD5 ce5d85883d213f1e9319d3f0ba7b5296
BLAKE2b-256 101230461a7e3b730728776c492f5235abcce24f8feb589e6be8696f40a51ed1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 62ea0a5fafbd869be9ea3817296e4cd9095ee05cfb1cc90db719bf602a5e819a
MD5 6486419d814754cfa45323e9234016ec
BLAKE2b-256 358a59168edc937337669c1bb698ec6c6e9f3dc0b5e6f94136ca5472a93f2375

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8707f1ec1a786d9f823ac830ddb035d91a21b0c93ef46d3d9a90dcfaeb295ac2
MD5 28a698d2caa3ae87239e8f82ddf00c11
BLAKE2b-256 73e58099549a715d396edc95db56574cd4fce2ff197b3d9008979a9dc485fa57

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 96be636e9aafb3141e017cd954f0eed5c7e5a23c642208beb6cbc258b4e6a5c9
MD5 86117b074c0e078c3f09e18fbaf462e7
BLAKE2b-256 586758da0c6c6f4902e658525472d5e8d566d943feaa2c5df6d1563ddb3d3004

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pynear-2.1.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 194.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pynear-2.1.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0c0a329f3b03a18f47b9df9682494c508bad365bf8369220339ec26a78f9e4e2
MD5 b9f406186c0ea34a10c7adf33b5c0c38
BLAKE2b-256 a9eae73b1bb1fc966235455b5c34364da3a02d83b5f0721c0687b30dcae39b5c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp311-cp311-win_amd64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bd4d83ea1169457b0d0334eb2cd78ed3c1bab62dc6c084931e339c6e8759cde0
MD5 edc4ed3dd94bf125d3cc1db85d3b7b43
BLAKE2b-256 40bfa9c5425e2ba8b2b0d3ac11aa45288136d87b72179c920e869ab6f61580a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c37fd086e0fbbd70f1201c6908adccc0ed1b0b89b52e702626112f3378115023
MD5 944b2962d2ada29f162927399c06e8f2
BLAKE2b-256 bdaf32a358e099bf9f96ea6c56ba4e1f92c8ac9a7b554d6f36045123cc702a54

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 845655181293a5d1d5b39bdfc791c42382f40b05eda11d162fc271817e440cc7
MD5 9b26dcb2c138a8cd81aa4de5f27792ab
BLAKE2b-256 aeb47e49aad7a6ab269e91f015d4f85da4ccaeecc23e0586925c2568ae7d30f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ef4d320230a707d97c91a8fbd8f38e255567c2c63741645f77d339e141dd1025
MD5 30b71ea9a0759677a0a2acf54e7e9e57
BLAKE2b-256 3ca21f9798d5335c2a41dea24bd765829b955d92f4eb6482a7cc3499c4a2ce5c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pynear-2.1.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 194.0 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pynear-2.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5ed7d092651f89ce319be39d10f58a23d1469a5b41ebf9bf2c0cebf03d89f79b
MD5 f10bc3be47f4165877b021ff1f9fb55a
BLAKE2b-256 171029dafa83cc697b3bb60f0dd840b3e5dc254a12d5d6363512ec13bfb57672

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp310-cp310-win_amd64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f90ca4fb55d6814a0cf7a822ea09d67e278f70de04b8c77dd8264d70a683b0d8
MD5 34cc53fd48ded6a7b4821b4444e6fdb9
BLAKE2b-256 d03e11e475387c1b7028cf74f4d51865ac46b61d6d1fdf611f368537b1dd9eb2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cb755bc49ab9fa68f77d2a23e1ba78a369d021e5c600bae13576e06ba3ad94f9
MD5 f5a94d9e1fd6fde99784cb0dd272c198
BLAKE2b-256 a607c510d684312ad94b77f5b53e99ba9295ed10284b8759caafcb901f94b429

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2d3d86e604c0daaac6e2f8b114f87b69f7d2d0b13038aa1a2f011ad372e6fa52
MD5 68677705cb0870a205da3cfb96725156
BLAKE2b-256 3930610acc6201586c2bdf48d00d702f43a0ca7a71c7c76322dbd67630f41f8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 57df9b4df9de3ca1a877a0cb21ce40e2b8271890d7f4d723fe9c2539a111dfeb
MD5 4574d73f0a42cf6d7d3b9a11b0143880
BLAKE2b-256 99aec1392dab024f3f967d79e142f82bda72770cf37c0fb88869c16cc07d762f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pynear-2.1.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 201.2 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pynear-2.1.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 579033a000013408b7a0207d4cb92e117dc27b1b3eb19457ba6bd93181ab066b
MD5 dcb88893c3a5ec16522f26ea4cd7fc04
BLAKE2b-256 2f19e2551f065d9ca448a11886847df9db63211813fd5224dae3a5e0436e911d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp39-cp39-win_amd64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d1cdd60bf8700e58a49c85ee9ceabd98d266efcc36f3194cf9819b962203d22e
MD5 4623c635db0820a616462fe4b4ca7400
BLAKE2b-256 ee7d28003f4ae9c7593d7387b566f5084cda3a7bb2eb0227e6713acbd5e4d01e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cb369c11cc33a799153b891f0804b5241ba0b709717080e01cbecece284c8b9c
MD5 b48faed402796d45c37bf7f523424d4a
BLAKE2b-256 73e3e0c9ddb710c94c127fcda51c11d7f83041f4eea7e6f1e54b9e49586e278e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eb4a33e44e7e16fdd357e10d295d3831188fee3c1d6b05262e37e93f7c8dd9ce
MD5 282dbeec2924a79382cfa81a9508d645
BLAKE2b-256 e7de9bd059c188ff3f9fd87535be71b02a79b60b6898f314543ac1fd09d065be

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 dcfd0b4d319b776ea00d21abb45fe305688cccff12f29757580985f724b1c6c8
MD5 4abfd6ad475be5df3ee94ec0c8d51b5b
BLAKE2b-256 461779b0c800bf519e70959a8bacd198e703cee5032022b9059283a6110fa5fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pynear-2.1.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 193.3 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pynear-2.1.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 9c0ea1ca322c4cb39ac151ad3d20bc09d30fe9afbef1168a1d70f80c672a93a8
MD5 a34c06f452929c7d7c9ae199d37938e4
BLAKE2b-256 c674bf2abf579ac23383b22bf5a1e848323f801ec9c3a6992fc7ca3958f007a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp38-cp38-win_amd64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e4699bc10ca032c5f939ac1459351eb603b3c089af65e10df0e85c44fd690418
MD5 e216c9b00944cb48db6c838d3b106f2a
BLAKE2b-256 4b3a4ba28d89c6e81a0fac2ba4bfe97995b0e71e2c04403cd8e00a3451cef99d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp38-cp38-musllinux_1_2_x86_64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e1e6f59b9269134f1c3152abeba5841d72ca689e342ff75a27d00655587eed6c
MD5 625f6340c25f7fb43f24e387ad26e644
BLAKE2b-256 72e09f83f51152f35543d1893c42b892f8b6038e65fa453ca33c00af3dabfef9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e4379d494658aee2a74f81115f5c9d4e44825bb1135271e603f0e9a77d8e3df6
MD5 63366e0de6a2abe118b45cd86636649a
BLAKE2b-256 0ad452674e38b7a23ceb13ad81c03b195963359242a4293c35a9fd34fc2a1668

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pynear-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 271719aef0db95cc306dcdd9519d68592749dfca69aae8731f0f06cbb026b05d
MD5 bb768e46d7ba7624c50dea17e676d305
BLAKE2b-256 4b9221cf483a6f99521aadc420330136062bc1946e5c762e7eb7ee20982c3627

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl:

Publisher: pythonpackage.yml on pablocael/pynear

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page