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) ✅ VPForest ✅ 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) ✅ VPForest
Binary / Hamming ✅ hardware popcount
Threshold / range search ✅ BKTree
Pickle serialization
Zero native dependencies ❌ GPU/BLAS
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 VPForest 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
VPForestL2Index L2 (Euclidean) float32 Best for 512-D – 1024-D embeddings
VPForestL1Index L1 (Manhattan) float32
VPForestChebyshevIndex L∞ (Chebyshev) float32

All VPTree and VPForest indices support searchKNN(queries, k) and search1NN(queries). BKTreeBinaryIndex supports find_threshold(queries, threshold) for range queries. Set n_probe = n_clusters on any VPForest index 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 VPForest (probing only a fraction of clusters) or Faiss IVF are necessary at high dimensionalities.

Pickle serialisation

All VPTree and VPForest 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 VPForestL2Index 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.0.tar.gz (52.9 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.0-cp312-cp312-win_amd64.whl (195.2 kB view details)

Uploaded CPython 3.12Windows x86-64

pynear-2.1.0-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.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (817.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pynear-2.1.0-cp312-cp312-macosx_11_0_arm64.whl (254.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pynear-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl (267.6 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

pynear-2.1.0-cp311-cp311-win_amd64.whl (194.5 kB view details)

Uploaded CPython 3.11Windows x86-64

pynear-2.1.0-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.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (803.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pynear-2.1.0-cp311-cp311-macosx_11_0_arm64.whl (251.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pynear-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl (261.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

pynear-2.1.0-cp310-cp310-win_amd64.whl (194.3 kB view details)

Uploaded CPython 3.10Windows x86-64

pynear-2.1.0-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.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (801.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pynear-2.1.0-cp310-cp310-macosx_11_0_arm64.whl (250.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pynear-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl (260.0 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

pynear-2.1.0-cp39-cp39-win_amd64.whl (201.5 kB view details)

Uploaded CPython 3.9Windows x86-64

pynear-2.1.0-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.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (801.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

pynear-2.1.0-cp39-cp39-macosx_11_0_arm64.whl (250.2 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pynear-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl (260.1 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

pynear-2.1.0-cp38-cp38-win_amd64.whl (193.6 kB view details)

Uploaded CPython 3.8Windows x86-64

pynear-2.1.0-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.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (800.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

pynear-2.1.0-cp38-cp38-macosx_11_0_arm64.whl (249.8 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

pynear-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl (259.5 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: pynear-2.1.0.tar.gz
  • Upload date:
  • Size: 52.9 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.0.tar.gz
Algorithm Hash digest
SHA256 71a84abc200306b21959bb679a497441c2643825e4be0e7d0eb42b59a043784d
MD5 5791eb8338f43a3919d2b76bef4e46e0
BLAKE2b-256 e3f644b9d400722006b3bcebb48574b93a535f162761ca5d6fd08e887db57ac0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0.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.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pynear-2.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 195.2 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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c0b2c9b21ebaf002dbb800be1993c7c389571e0faeb3e11d155855387b69f991
MD5 39205bed96ad26a1c1e3e3d51254cc4d
BLAKE2b-256 d9ae0670dfe433965260bbd9bd61e35fa88342009085c5d66ffd51421db5d093

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 10711c62668c326fafcac2d677511ba4e24b51b12184bb86050744c658b7a9f5
MD5 58013c9a13dbff246d2efcd6f07c98a1
BLAKE2b-256 fef026a30760f8866f902332f6ffcff307672513fde97fa2a872f4ab350c61e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2cf3e4d751b25af839980c409fdd724f0b60f3ada6bba528ad3e46abf01e3845
MD5 72de9845f986a55736d5db231a201a8f
BLAKE2b-256 e3b4198f0de61c8e960ca83ec712730c1b502e1611cde724d9e26737e1a2a5c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5e0f6cf4f00dc640a8c32781d633d329533e5588189088655a0f1074b5536a2d
MD5 0f349c092a99e306b8bf0ad644d73b42
BLAKE2b-256 1ed662943d87950054d3533335dc40e939ae4721f741dd7a928910e818bfdbb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 1d45105d127059d063e1529d557041019c1b064ba617f45ff2d5d9b017b8a784
MD5 e24c11590b9574d27b0e5cdc83cdc96a
BLAKE2b-256 b7c325e9b2b4f3a0a83e73c80dc9b34770da800ab5aa0a783311ecae58ebb654

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pynear-2.1.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 194.5 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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d35200e0329c4373497772860f0fad1f5d740c03a2e0cc5b3fdaa4281b955f73
MD5 6861806aef16203c1b2e0dcdd24dee19
BLAKE2b-256 8990fb6a4fbd262524a33d97ace92889aadc1e8186333c71bf3b989f47e4ef1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2e14a93a983dbde0132b8f616992190aa03836d96102ba1c31f1365354bde5b9
MD5 1b7fa454db9dd792b1031e6c0ec57e6d
BLAKE2b-256 7967fd9e7b431dcdbc5a3ecd949166d66f8d039dfa05207cb7e40a7059552e7d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 53deafb1addd11edbee70d0e1ad652737a5e00d05b29239a04a05b5e674baa2d
MD5 1154040662465ff92ca03cca8b72968a
BLAKE2b-256 ebd46da0892eded8462a3a352e6256f305128916200d2e2316c32d029230d8fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 35fb2a0d2efdc91ba9cce8e64d1d05a2cbeffe1a2fb2b736a1d98b8a7bea081c
MD5 7f8879689e2a208082f2e8a0d30f58ec
BLAKE2b-256 d22e3d660e5e686ba8555a2d7751ba19a4936c583e97f995e01d9d48b3795416

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4eeb7bea46913fb187333350049518f5432db362ea740689c53df9bf1f5c7eb1
MD5 c5370819b659bc12c2606d5e32cb0595
BLAKE2b-256 2b2a88f2d5066e92a328b4b4eea1e965c81837759416bf798a9ce8931f222924

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pynear-2.1.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 194.3 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.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e8a26ce010277b1c5e6ec6797e0edac9d666014180b3bddfd5ae5c096a618cf5
MD5 c8eb74e1708ee1f60ffebc8023062a8f
BLAKE2b-256 eefba47b6294fc2e9decb5f5ef15871b34e46a6cb805d6c71dc26c70395c781a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dcb947e361133b530020b9faf02b7fb538fd4202b1b72c6105aa94212414d0a8
MD5 bedee3edaef43210ee95c8a72952b664
BLAKE2b-256 1bce7d598513d75350072040204378b4583fa3cda255b34f3345aa9e22dcd847

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bb3880a7bf2779d38e63a9e856d3b8fe6d8bc7b9cfd5794142443e40a91a09e0
MD5 d053491070b36e7a97b4e15e898df7bc
BLAKE2b-256 3e7c54b7f22f81bd26141ba0a49c9795fed4206372e944ff7fb46305b2517e0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 05702eaa8b81518488fb33e94a41dc9e1d6a09c1abbf1355061aca41c605b172
MD5 1c2f2504bd87ccf838a04919aa4b1ad6
BLAKE2b-256 58bed53abf72c89d6e53ed166b2eddf3f97704c4bde4764cdf883ff034d439bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 12b9bc84aa1c1af67a6bbbc2d75841009d13247a96ed201ca6777c80180ed3ff
MD5 d7ee9921971d7915e3300fdd2f35fdea
BLAKE2b-256 eea789e6710d775dd2d10e5026006656108e5620607a26125354ab96bf89920c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: pynear-2.1.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 201.5 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.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 ded2310a37c6a26aa74cea13723fd98512cfd3f68b605312eb585ed4db5dce8c
MD5 7307933a163b087061dcc6ef10916db5
BLAKE2b-256 b850ffc6cf8b629cd7f157a0120a9dfdffd55b2a84f665a5d34ab75c804c17ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 74c67c4d27f5d368452aa43f619afed8ffc34117caeb90f7310bcd3502fa2ba6
MD5 6a3f40dd9fa9966a2c02f0bc9dfe1c61
BLAKE2b-256 dc5297676f55cbff9e5ce779bce01724cd1605db72fe62793cbb38316ff1952e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3d549495ffb6f1e43280458a059ab8f3a2c290e4132eafe37ab9eb2ad80e13b9
MD5 75430abca0be9a38bae727b895b5ac98
BLAKE2b-256 36207fd6d5ef363128499600909502f89280970b370324b2b19281be846406f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 60724d013e181d710684d2f8974fd03d8cdb25a0539e724f2ca6420e36f74cdd
MD5 20c320957934a66fe37767c1e9e0020c
BLAKE2b-256 e23e5ba31989dbeb2776f8baf5b709e826725f69a5d3973de60aa6a29f22f508

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 69f1a53a956ace3b3a3b0f24e665ebdb1b92c7975e215c87ad110aad74890c19
MD5 c36a12e1928a1343bd566b9fec4031dd
BLAKE2b-256 d03a229604da1af6bd61abe01c3e9f08e433bfedb453991f839d97864016c293

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: pynear-2.1.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 193.6 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.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 c03a46aba244d6adf791903e8a72543f7605f915427e0cfb04871a38f99fad3e
MD5 bdb08af6a61f9640bb2d174d7d927caf
BLAKE2b-256 826273150e0ad8e4bbbb95b46bc21c29234862f673d21ee39c90d2d0a44b9d03

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 aff00910655afb5bc0556e66abc7fdf6d25f7dc22b73cb3623843583edee2ad2
MD5 cded73d76710bee654db65386180aac5
BLAKE2b-256 01e81d55f7ac94d8fc0d17c74a076c5d413d604516f6d3a182c7deb16b041850

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 197acddc6ebf6ff442642fb15dbe9470a8c559288ef67223d141ade0e77bcf4d
MD5 d3518717ad0bdc7b204a9c7fc7eb87a6
BLAKE2b-256 4b749de2a87ba25d950c64ce79fd31a9d039f626510593cda41ede850f6541ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 15d902a1b018270b4f30fc6a68edea7c4d05c3509bbd5c96b151de1e1aa6d1ac
MD5 ca646291d54eab1a05aadf7c60219c75
BLAKE2b-256 7a60fcd645ef49925d587fbe22d2166f01a5af9a1ef5f441a547e36251c8271c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pynear-2.1.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6b7bfd4498b530f3185006e85761eeb858678e6f57ff667c907336dc0b10e0f4
MD5 33849b4304029d8d5f6458fe0ea3fd4b
BLAKE2b-256 e26bfdb80dd432370b74ff6e8770919bb035bdfbb80a6a5f42d928b669743234

See more details on using hashes here.

Provenance

The following attestation bundles were made for pynear-2.1.0-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