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 GitHub stars

Fast KNN that doesn't make you choose between exact answers and production speed. Drop-in for scikit-learn. SIMD-accelerated. Binary Multi-Index Hashing that beats Faiss's own MIH at matched recall — and finds 512-bit near-duplicates ~40× faster than Faiss's brute-force scan at 100% recall.

PyNear demo

import numpy as np, pynear

db      = np.random.rand(1_000_000, 128).astype(np.float32)
queries = np.random.rand(10, 128).astype(np.float32)

index = pynear.VPTreeL2Index()
index.set(db)
indices, distances = index.searchKNN(queries, k=5)
pip install pynear     # pre-built wheels, no compiler needed

A metric-space KNN library with a C++ core. VP-Trees for exact search up to ~256-D, IVF-Flat for fast approximate float search at 512–1024-D, MIH and IVF-Binary for Hamming search on image descriptors. Already on scikit-learn? Switch with a one-line import change.


Table of Contents


Why PyNear?

PyNear Faiss Annoy scikit-learn
Metric agnostic ✅ L2, L1, L∞, cosine, Hamming L2 / IP / cosine L2 / cosine / Hamming L2 / others
Binary / Hamming approx ✅ MIH + IVF, faster than Faiss MIH ✅ MIH + IVF
scikit-learn drop-in ✅ adapter classes
Zero native deps ✅ NumPy only ❌ compiled lib + optional GPU

Full comparison →

PyNear covers the full spectrum: VPTree indices for guaranteed exact answers (2-D to ~256-D), IVFFlatL2Index / IVFFlatCosineIndex for fast approximate float search at 512–1024-D (text embeddings, RAG), and MIHBinaryIndex / IVFFlatBinaryIndex for approximate Hamming search on binary descriptors.

New to KNN? See docs/intro.md for a gentle, jargon-free introduction.

What people build with PyNear

Image / video dedup Drop-in for sklearn Interactive visualisation
Encode with perceptual hash / ORB / SimHash, index with MIHBinaryIndex, find 512-bit near-duplicates at 100% recall ~40× faster than Faiss's brute-force scan. Swap sklearn.neighbors.KNeighborsClassifier for PyNearKNeighborsClassifier. Same API, same results, faster. Two desktop demos: a 1M-point KNN explorer and a live Voronoi diagram you can drag seeds in.
demo_binary.py Migration guide demo/

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.

Approximate binary search (image descriptors)

For large-scale image retrieval with binary descriptors (ORB, BRIEF, AKAZE), PyNear provides two approximate Hamming-distance indices that are orders of magnitude faster than exact brute-force:

import numpy as np
import pynear

# 1M × 512-bit descriptors (64 bytes each)
db = np.random.randint(0, 256, size=(1_000_000, 64), dtype=np.uint8)

# ── Multi-Index Hashing ───────────────────────────────────────────────────────
# Best for wide descriptors (d=512 → m=8 sub-tables of 64 bits).
# ~40× faster than Faiss's brute-force scan at N=1M; 100% Recall@10 for near-duplicates.
mih = pynear.MIHBinaryIndex(m=8)   # m=4 for d=128/256, m=8 for d=512
mih.set(db)

queries = np.random.randint(0, 256, size=(100, 64), dtype=np.uint8)
indices, distances = mih.searchKNN(queries, k=10, radius=8)
# radius: any true neighbour within Hamming distance ≤ radius is guaranteed
# to be found (pigeonhole principle). Increase for higher recall on noisier data.

# ── IVF Flat Binary ───────────────────────────────────────────────────────────
# Predictable cost: scans nprobe clusters per query.
# Good when the query radius is unknown or data is non-uniform.
ivf = pynear.IVFFlatBinaryIndex(nlist=512, nprobe=16)
ivf.set(db)

indices, distances = ivf.searchKNN(queries, k=10)
ivf.set_nprobe(32)  # increase nprobe at runtime to trade speed for recall

Choosing between MIH and IVFFlat:

MIHBinaryIndex IVFFlatBinaryIndex
Best for Near-duplicate retrieval (small Hamming radius) General approximate Hamming KNN
d=512, N=1M query time (near-duplicate) 0.008 ms 1.82 ms
Recall guarantee Exact for distance ≤ radius (pigeonhole) Probabilistic (depends on nprobe)
Recall control radius parameter nprobe parameter
Recommended m d/8 bytes (e.g. m=8 for 512-bit)

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, cosine, 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
VPTreeCosineIndex Cosine float32 L2-normalised internally; SIMD-accelerated
VPTreeBinaryIndex Hamming uint8 Hardware popcount
BKTreeBinaryIndex Hamming uint8 Threshold / range search

Approximate indices — trade a small recall budget for large speed gains; tunable via n_probe / radius:

Index Distance Data type Notes
IVFFlatL2Index L2 (Euclidean) float32 BLAS SGEMV inner scan; best for 512-D – 1024-D
IVFFlatCosineIndex Cosine float32 Spherical K-Means + BLAS SGEMV; ideal for text embeddings
IVFFlatBinaryIndex Hamming uint8 Binary K-Means IVF; faster build than Faiss binary IVF
MIHBinaryIndex Hamming uint8 Multi-Index Hashing; ~40× faster than Faiss brute-force on 512-bit near-duplicates, and faster than Faiss's own MIH

All VPTree and IVFFlat indices support searchKNN(queries, k). 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 pruning loses traction as dimensionality grows: in high-$n$ spaces, nearly all points concentrate in a thin shell near the boundary and distances between any two points become almost equal, leaving the tree nothing to prune. That's why exact tree search offers diminishing returns beyond $d \approx 256$ and why approximate methods (IVF-style probing) take over.

Full derivation, with volume integrals and a numerical illustration →

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

QPS vs Recall@10 on SIFT1M binary

Recall vs throughput for approximate Hamming search on 1M × 128-bit SIFT descriptors (the ~0.84 ceiling is a Hamming-tie artifact, not missed neighbours). For the apples-to-apples comparison against Faiss's brute-force IndexBinaryFlat and Faiss's own IndexBinaryMultiHash — including the 512-bit workload where MIH is ~40× faster than brute-force — see results/faiss_comparison.md.

Full benchmark report (PDF) — formal evaluation against Faiss, scikit-learn, and Annoy across L2 / L1 / Hamming, dimensionalities from 2-D to 1024-D, both exact and approximate modes, including the recall–latency Pareto analysis. (The binary-descriptor numbers are superseded by the reproducible, thread-matched results/faiss_comparison.md.)

Quick standalone run:

python bench_run.py

Real-World Benchmark — SIFT1M Binary

Performance of pynear's approximate Hamming-distance indices on the INRIA TEXMEX SIFT1M dataset: 1,000,000 × 128-dim float SIFT descriptors sign-quantised to 128-bit binary (16 bytes/descriptor). Ground truth computed by exact brute-force Hamming k-NN over 500 queries, k=10. Machine: Intel(R) Core(TM) Ultra 9 285K.

The baseline below is a naive numpy scan. For the apples-to-apples comparison against Faiss's optimised brute-force (IndexBinaryFlat) and Faiss's own Multi-Index Hashing, see results/faiss_comparison.md.

QPS vs Recall@10

Index Configuration Build (s) ms / query QPS Recall@10
numpy brute-force (naive) N=1,000,000 50.1 20 1.000
IVFFlatBinaryIndex nlist=500, nprobe=31 6.24 1.47 679 0.825
IVFFlatBinaryIndex nlist=500, nprobe=62 6.24 2.85 351 0.842
IVFFlatBinaryIndex nlist=500, nprobe=125 6.24 5.65 177 0.845
IVFFlatBinaryIndex nlist=500, nprobe=250 6.24 10.74 93 0.845
IVFFlatBinaryIndex nlist=500, nprobe=500 6.24 20.95 48 0.845
MIHBinaryIndex m=8, radius=4 2.81 0.09 10825 0.585
MIHBinaryIndex m=8, radius=8 2.81 0.97 1031 0.829
MIHBinaryIndex m=8, radius=12 2.81 0.95 1053 0.829
MIHBinaryIndex m=8, radius=16 2.81 4.73 211 0.842
MIHBinaryIndex m=8, radius=24 2.81 12.37 81 0.844
MIHBinaryIndex m=8, radius=32 2.81 19.79 51 0.843
MIHBinaryIndex m=8, radius=48 2.81 36.34 28 0.843

Recall@10 is the standard |returned ∩ true| / k, measured against a fixed exact-Hamming ground truth. Because Hamming distances are integers, the 10-th-nearest boundary is often tied, so even an exact scan can score below 1.0 against this reference — the value reflects tie-breaking, not missed neighbours.

Key takeaways:

  • IVFFlatBinaryIndex (nprobe=125) reaches Recall@10=0.845 at 177 QPS (9× faster than the naive numpy scan).
  • MIHBinaryIndex (radius=4) is the lowest-latency single configuration at 10825 QPS (Recall@10=0.585).
  • MIH's real advantage shows on wide descriptors (256–512-bit) and small-radius / near-duplicate retrieval. On narrow 128-bit data at high recall, an optimised brute-force scan can outperform it — pick the index to the workload.

Reproduce: python demo_binary.py · add --small for a 10 K quick test · --n-gt-queries N to adjust evaluation size.

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

Star history

Star history of pablocael/pynear

If pynear saved you time, consider starring the repo — it's the cheapest way to support the project and helps others discover it.

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.3.1.tar.gz (69.8 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.3.1-cp312-cp312-win_amd64.whl (242.8 kB view details)

Uploaded CPython 3.12Windows x86-64

pynear-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pynear-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (964.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pynear-2.3.1-cp312-cp312-macosx_11_0_arm64.whl (328.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pynear-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl (340.0 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

pynear-2.3.1-cp311-cp311-win_amd64.whl (241.6 kB view details)

Uploaded CPython 3.11Windows x86-64

pynear-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pynear-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (958.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pynear-2.3.1-cp311-cp311-macosx_11_0_arm64.whl (326.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pynear-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl (331.9 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

pynear-2.3.1-cp310-cp310-win_amd64.whl (240.8 kB view details)

Uploaded CPython 3.10Windows x86-64

pynear-2.3.1-cp310-cp310-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pynear-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (956.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pynear-2.3.1-cp310-cp310-macosx_11_0_arm64.whl (325.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pynear-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl (330.6 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

pynear-2.3.1-cp39-cp39-win_amd64.whl (250.6 kB view details)

Uploaded CPython 3.9Windows x86-64

pynear-2.3.1-cp39-cp39-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

pynear-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (957.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

pynear-2.3.1-cp39-cp39-macosx_11_0_arm64.whl (325.9 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pynear-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl (330.6 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

pynear-2.3.1-cp38-cp38-win_amd64.whl (240.7 kB view details)

Uploaded CPython 3.8Windows x86-64

pynear-2.3.1-cp38-cp38-musllinux_1_2_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

pynear-2.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (955.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

pynear-2.3.1-cp38-cp38-macosx_11_0_arm64.whl (325.4 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

pynear-2.3.1-cp38-cp38-macosx_10_9_x86_64.whl (330.1 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for pynear-2.3.1.tar.gz
Algorithm Hash digest
SHA256 8c83a748846eb8b16eb4709bff628c5700c3329790801054ed05409240a2e775
MD5 f56e2a43528242a7b3ab8eee5aa9c96e
BLAKE2b-256 d84468286a82fc82cb0c6a473355684f71223a72d67b0908329e5e3625d1b4e1

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for pynear-2.3.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d97a5cda1efe90513d55bdbdc66ed7515d4992f704020de0aa2cb44148abddd2
MD5 07d32b9375d5253606f77825ea320c5b
BLAKE2b-256 f3760dbbbc938ba23d2770d1125b799836136cb031a59f68e30e8383fc112caa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6834d26f5c19c1ab63b680fbed3fd0c2aa936b6b49e67369d0dceeb350dfd3b7
MD5 25d9283f6ad2adfe1159c5725522291b
BLAKE2b-256 6b2c3c05687082068fe0494b02ce205d1e6be5c91b5914b0e916e92a033aee86

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e56724f8373ad479dd4a77dabfad307a167bc64cc4d9fa94cd8ffbffc7c99567
MD5 bc0692020d2c1984bdb47b887c17eaa1
BLAKE2b-256 ff7283121d257114e905903ce3208507d57cfa1c32f0159587b9571fe23c0faa

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 224e76cd7d2638af8cc2feaf0c50c0fd4dac0d7be82a540b675df47e4a084ce8
MD5 ebf670362f8f81f510a449e9c928a9ab
BLAKE2b-256 5fa835892fe3e01959c9db4f03fd53992d001a9162e90b1588c6b5137413c797

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 233c973ae13e2b85aa4c983464772c3f9ad838ab61f9b5092acd5a051fd24477
MD5 8e05c95d2864dd528262cfe27b82b380
BLAKE2b-256 cba6f3a9228bf7bca676d2c639d6c30e315f45b2a3aad0313987bd7357501ea2

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for pynear-2.3.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3d53756534ca6c0edfc47e926059960ef9d2c0dcf256ce3a3f24eab458c7268b
MD5 225f853b41b19441845a04467566fb5e
BLAKE2b-256 8e3caa19d08f699840c9e42894f45c14403f4e759ea994f101d32ebb463bc064

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3c7ba03e18f5cf05a6be4540253bf2358dbc5cb0c294b0932493f3eabeafe85d
MD5 3f5dad5cce103e37c27b992b3ee47601
BLAKE2b-256 6624a503c2b04b29bd5309ad37b65e10fcd2be7610a1d6b7747f3c2d88964df8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9f0148e2ff63b5c81a363cde3ebcbdd50571cc27534468ebd34ea8bf34996c8c
MD5 c40ae5313a64339a0eb1447d153c5be9
BLAKE2b-256 91abd9ad969b6f59f2dfa7607f78433b8eada09aad5a4890f28b2d5a7b76be31

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 34ad24f188b0b9b9a961a96537ecb4155a52b976f809fefb32cd0078db3fca3c
MD5 90c5a873cbffafe601df52966582e737
BLAKE2b-256 290371155550d2ff275fde38e6227476e8e320297d6ea8ad2f67fe27a8f3ce93

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 37eb71d66a1199f5b805bdcc9ce79144c063c59297b93d4a1b6e74f9e339a523
MD5 f3f8c438ce680a36e84f4c952c036ba1
BLAKE2b-256 f4617950ae131bcc75084e532a46197fd866d8208a16ccbb81ae609061b535b2

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for pynear-2.3.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8608afd287583ee14077baa138a999fb05e50c287fea1063500bb8d822009f48
MD5 ffe9f0074335340cb8a25e565ef95b65
BLAKE2b-256 836c5377281d2efae900849504d2608f5a307f7a6d7c957987af983b9e98eec0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 e82be06f463429fb5ff592803351aae72364662b327a50f25cf0aa5b4c22ce35
MD5 cfbe1a9c94842ef318f6a8125f2af63c
BLAKE2b-256 457bac341737fa452147bcfc055568e3a3f8e17e81e93782d59b31203d15cf08

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8775464886bde1216e7f7c9e7e69ddd6f83da56bd83a7d3b3a6f4af03ca6449c
MD5 957448e5ba770055761ee80d1830937b
BLAKE2b-256 9aeb20c263005264817157f8828862a51dca97c3a6213622c25eea3f9ac03f0b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 791abf50f8c5b4c8eb06288bf6d5f493389204733748b79112b69e672967cb7d
MD5 6a27fdd908d8346b1f89c0965d512e62
BLAKE2b-256 9c3a31d907307f32a9635e686fc204dc98408bfda74307e644814075e6d612d4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a6a24ab9d7243ed694d4681e9bbea179471de117a4a64d0a1e3ae690e236b68a
MD5 e191c480bd76aba91ffa853e6e9e410a
BLAKE2b-256 e71cc019d0dfd18b9c3b577970a5e97f415bbaf1c4417dd822d83410b4129e87

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for pynear-2.3.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 5badfdbb91776f8166a649a31db3e9674d74c9727370eb4c52d7b9795aa8e139
MD5 c932dbc146512756b28153ceea250647
BLAKE2b-256 01df7516a27fb4962ab5535f8d649dd3f836c853e2695bb6e22e18ac5b0940bc

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6b974f539c4b981b6bf471835237ce9ca4163aaaa2225f783ccbfc1d53be49df
MD5 94efc5e661fd2c11ea1443bdeec6fea0
BLAKE2b-256 4a885d55c1ba6f7eb5c55ec3825c38879461a74054224ce58cb0d8bf4a125a37

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3cc30b63a0746703b8b633a434e3d636f1d836322233ae7848f81ff8de7e28bf
MD5 67ccc86c2969d57433f8d30d5cc36ea3
BLAKE2b-256 12df8aa85e7ac469441ccc6fa59cc7b35814bf830e656d9fb4d22f123617cc65

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3183878877ca8705e9f817f9ed498b8f86d23e71d9f57a5c6032be666ff88140
MD5 5b647498bccc62ddaf067f332a0e2578
BLAKE2b-256 93a979789681bac2e1886a24e6ffe4a8d27c6e78b620970f15c25268d4c219ec

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e2ce8a625702489c18b4b7f7c638480e6a597acd0322460e13e9b24952a80b2a
MD5 8c91d048e3a1bf6dc35f1a63dbbf989e
BLAKE2b-256 266e498710fc1bb4415c586f3978779a156d1738819d1dff20db77b4b3a8f4e7

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for pynear-2.3.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 9956022a360c2d8f1684586fe0a7b8cb9f9465e8b4243d5118d80463c0624597
MD5 e15bb0d9203ecda4d2e6da97ada7995f
BLAKE2b-256 f12a7b1182bb96888fcce6e10aaff24ed6ecc9e166fdc538f7d215b7addb3ae2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 65f73947b8c191a719750e3fa0dcc5c6bad2fa9a49ccc1f9174b7ec319fa4d6f
MD5 59f8703ce3e87e42c227748d8fc3093e
BLAKE2b-256 202afbaaafd16319f54fe9db4574d60a1a5a8a4be299e40823448f487368b7d6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e05de3f293906a1948d59515ff1906c2d933fd69937162c28fd778422bf7f4c0
MD5 4f23eb25dcb25d65df2984bf04b894df
BLAKE2b-256 45eb3640df352df61447749621065423dd575cb278af2efc62d9ca5d74fcf570

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4176fb426c64a7be130f59477197ea89bfb44965e5d82e276feed5ff189345ee
MD5 bb7b19bf4c5e1b60a2514b25e055b8af
BLAKE2b-256 110beef91acd13bc53c9ff355febb95ea94343523e6e7c4f0dfeb2322ff9000f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 52660bebe47b421f5f584165d7e61b46d561cacd596241151e22ce4c7899c405
MD5 5e4570f69ce8f57b8783a8cc512f7608
BLAKE2b-256 28c833a4b1849846b250229a6fd147b61d4d1f6f791fe19a6a446c7c1814b0c4

See more details on using hashes here.

Provenance

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