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. Up to 257× faster than Faiss on binary descriptors 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 ✅ 257× faster than brute-force ⚠️ slow build
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 near-duplicates 257× faster than brute-force. 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 d=512 (m=8 sub-tables of 64 bits).
# 257× faster than brute-force 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 0.037 ms 1.95 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; 257× faster than brute-force at N=1M, d=512

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

Approximate Hamming search on 1M × 128-bit SIFT descriptors. MIHBinaryIndex and IVFFlatBinaryIndex both reach 100% Recall@10 at >35× the throughput of brute-force.

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. Includes the recall–latency Pareto analysis and the 257× speedup result over Faiss binary brute-force at N=1M, d=512.

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.

Index Configuration Build (s) ms / query QPS Recall@10
Brute-force (numpy) N=1,000,000 49.6 20 1.000
IVFFlatBinaryIndex nlist=500, nprobe=31 6.90 1.43 698 1.000
IVFFlatBinaryIndex nlist=500, nprobe=62 6.90 2.77 361 1.000
IVFFlatBinaryIndex nlist=500, nprobe=125 6.90 5.42 184 1.000
IVFFlatBinaryIndex nlist=500, nprobe=250 6.90 10.54 95 1.000
IVFFlatBinaryIndex nlist=500, nprobe=500 6.90 20.85 48 1.000
MIHBinaryIndex m=8, radius=4 2.83 1.29 772 0.992
MIHBinaryIndex m=8, radius=8 2.83 7.56 132 1.000
MIHBinaryIndex m=8, radius=12 2.83 7.56 132 1.000
MIHBinaryIndex m=8, radius=16 2.83 24.02 42 1.000
MIHBinaryIndex m=8, radius=24 2.83 50.92 20 1.000
MIHBinaryIndex m=8, radius=32 2.83 81.68 12 1.000
MIHBinaryIndex m=8, radius=48 2.83 171.86 6 1.000

Key takeaways:

  • IVFFlatBinaryIndex (nprobe=31) achieves 100% Recall@10 at 698 QPS — 35× faster than brute-force.
  • MIHBinaryIndex (radius=4) is the fastest single configuration at 772 QPS with 0.992 recall.
  • MIH excels on wider descriptors (512-bit / 64 bytes) where sub-table sparsity is higher.

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.0.tar.gz (68.7 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.0-cp312-cp312-win_amd64.whl (241.7 kB view details)

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

pynear-2.3.0-cp312-cp312-macosx_11_0_arm64.whl (328.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pynear-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl (339.5 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

pynear-2.3.0-cp311-cp311-win_amd64.whl (240.5 kB view details)

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pynear-2.3.0-cp311-cp311-macosx_11_0_arm64.whl (325.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pynear-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl (331.5 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

pynear-2.3.0-cp310-cp310-win_amd64.whl (239.8 kB view details)

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pynear-2.3.0-cp310-cp310-macosx_11_0_arm64.whl (325.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

pynear-2.3.0-cp310-cp310-macosx_10_9_x86_64.whl (330.1 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

pynear-2.3.0-cp39-cp39-win_amd64.whl (249.6 kB view details)

Uploaded CPython 3.9Windows x86-64

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

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

pynear-2.3.0-cp39-cp39-macosx_11_0_arm64.whl (325.3 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

pynear-2.3.0-cp39-cp39-macosx_10_9_x86_64.whl (330.2 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

pynear-2.3.0-cp38-cp38-win_amd64.whl (239.7 kB view details)

Uploaded CPython 3.8Windows x86-64

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

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

pynear-2.3.0-cp38-cp38-macosx_11_0_arm64.whl (324.9 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

pynear-2.3.0-cp38-cp38-macosx_10_9_x86_64.whl (329.7 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: pynear-2.3.0.tar.gz
  • Upload date:
  • Size: 68.7 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.0.tar.gz
Algorithm Hash digest
SHA256 d1e7ee887f7ef0eda2419353598ab3ff6d118c698a7a988c2ebfee0c96de07ad
MD5 f6294be7977491eadb74a466493b399c
BLAKE2b-256 67ed4a462c29812d00575bab541cb6d7f92e3eb27d03c768aa0ee6154ab9c717

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pynear-2.3.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 241.7 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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d5a28978decaded30b213ae53fe7a7bb0899d3146e79af496e674ac311ab5d2f
MD5 c92e9793ef8d1245512d0a250d7d2078
BLAKE2b-256 68de5ce58808155f547fa6442c87527dd7b200a36f9b3a8a9197361d377e0f0c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8e7730313c03664a7af4180033d691838d7aaf08d1a297a407e0618deffdd4f8
MD5 c196e369366af1905b15cbe1526c8ad1
BLAKE2b-256 e91ddbf791465d405ef65749ebb02885da24b60bad922bf7157a979201ab07e1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 11390ea8d3632331edae89fdde829a901ed8ece66bbc7feb3c00d5b0de7c9a11
MD5 4bf4be4e7b8a9dd6f0fb7cb4d273c963
BLAKE2b-256 e456a001e24d29f23504023fd97f862c5d3c17a8b6ac94d322856b949152e7f2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1ea93d28597de193bfbb077b6f1856fe41ee12c9ccea7c26a3b5b5f9b1335822
MD5 a7d171bdb22fb33d11068563462aca13
BLAKE2b-256 b7e6586fdda2c72ced7a31b8a7c6742a41b3f16211f4de2a15997d9ce8a64d9b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c2b0d0a661a6441d0702b9867ec39ae799641624f522ce1c9933a0ee62faeff3
MD5 4422a05faacb7e6c910c86b805ac827c
BLAKE2b-256 7dde8c1939c8385261cb96a7c8247f5ad705b50bb2bf078b57c1838541515168

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pynear-2.3.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 240.5 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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 832be69ef1b95c4b7d23c49d0207d4c87a9de027e1385981ab86dc061168991e
MD5 e2fc45035f19082ec3c4f425937f9faf
BLAKE2b-256 bff6c8bcebc00023dfec9025776a0582f2d6f8bd793a79255ffe03281928523f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 cf27a45e31a7108a8ce3619e50bcd03cd68d19754ea67e25ea8eea56589d74be
MD5 3a96d0d3edbcc8bc9085e2533d0b6959
BLAKE2b-256 a30e717d9ec714afb95167df30d62361fafd4cdb6f0525d4a536993ab2af2dee

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b63afa4977b3136e3ab23b62b25471cfa967f77d4c6ade25772cef65618a740b
MD5 ed83ddee8735a08985fad111b1c6d53e
BLAKE2b-256 5a69aee4c23bc3a3886b6b457b9eebe47f7178f64c186863ae9fc3cd69d8a6c5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 48bf878cc48d6588373c913113d0b75c2cd2304473f7a47b00771c0f1e50f224
MD5 425a4353939e01acdafd0271d4e679d2
BLAKE2b-256 f98daec4680837d7d2063a671c0af5208c4d635719a46ddcba10aaf1160d2627

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 82fbeddde9e68c635ffe027418aab2437778f10d43e1f9f654dc498e47b76074
MD5 45b9448f7f8f942e4602f76556d4f7d9
BLAKE2b-256 74a22e14e2327720548df88d593cab221adacc231a1b01b9fb24f2b574753ac9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pynear-2.3.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 239.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.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 17af8666044ea20dd8aa231fa85d6493c39f7990ff15ff0e0773d20935f2abd1
MD5 2b8bc141392b15ebacfc549d530a8ff8
BLAKE2b-256 2a99c46bdbba6d62bdd167b95443677cbcb4db29d86c715208b73c210dcfc3ca

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8865959c600752bfc96c6fd8595358c8947cdf0633bad0c8cd25a504f274b652
MD5 dbf9d91da0cb4e02e6d8aff66c0c9d64
BLAKE2b-256 84beaae22ac143309bb7c96e636857164a0d4f8517174f18e7bc52525263b10a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4681061ba425bcf2fd8eae186719f2f00f17248ae1a17fe3b9e4834948899457
MD5 46cb5c60a06308ee9166b3c1ae9c489d
BLAKE2b-256 b79aefa6e4172bd773b2be3d59aae9a58d4b9b2ea46102f437bdd5f67a6318a6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0e68b168e41ad8b919ac37a6a9840e719b0cc52398b641a377069716910cc4ca
MD5 b4be0db2ed5c7f59cb5e7baae4e3cd67
BLAKE2b-256 0482af3e9a3bf5e7ad57a130d007609ffa318502dda8e7b7c0c2896c8e863b79

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1011630e2c1ceb7dc0e9a637832681834135456367133c9f480024778e32b877
MD5 a98473fb12c38e27120709579e5df216
BLAKE2b-256 5142d54e5085d6df8644213b60af379b7da6103094f306acfc0998209097452b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pynear-2.3.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 249.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.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 be15a8f79d9a823e62e2a92fdbb867ad37e1d70c1b9bd9e5bd123cedf18776d3
MD5 427af4450e159aa2f2889e464e96c37d
BLAKE2b-256 94eef0431e546a714335b9fa8776a26b6c19281fb7bd25d544ffd00939099b56

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c62720d2d67ed87b57b93871ae1624ec29be7dc211a8ad8fe5949cfebbefd089
MD5 23c448d752b78edd3d14df2f31d6868e
BLAKE2b-256 de8f6834de9c7452e39e8f3e9f55163a4b550c71a1c474b76777d43c72d67f81

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 16debfa7178424c63cbdac6c12ae67fb9b28df5cf3935ae5a41248df710092a8
MD5 2b0ff8e135ceeb7a35113cbae71aad43
BLAKE2b-256 3ac4a9f2e2e125c1b9ecf484767c83d47d51ddad47af4e7ce738ac112c8f373c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b95141ca71526364c0a610ab948c2fe2277932f0ac3a9d173ac39f4848d64071
MD5 ccde3e862775e35312d12a57a2518068
BLAKE2b-256 54f944969e5fbca276953e1ac4053626e4f67b4ee62995a59ed55802f4bb4a30

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 eee6fe9079d5e32272c87bd4d516e46935d39eed25aabfe19c3e9563e8d42baf
MD5 dd4686d449da982bb767c858f309ce67
BLAKE2b-256 1f3121bc0fa76384faa3f91bd842f2cebfee23badb630d84ceffd5e477b9a264

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: pynear-2.3.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 239.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.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 cefdfb06ddd6e0bbe110ed802a35e1598b50056ea74e81e12023ab0c80cbe7c8
MD5 c349f50c9be18e4f07a9189891903e23
BLAKE2b-256 a53125ac4cae91a7dceb5cacc7f58b291068d69fe74db5a1884ccb17b2f35255

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bbffa11016364272515b59b6247e039baeae9f1ab9936fe0106cdddf248133be
MD5 426097f11ccf8176b4aafe07b512a4b4
BLAKE2b-256 03f34878fef996a351d4ba09b0399dd1c6359d97fb75bd211f46c888f87c0c17

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d32c5607e5033025c64c307396dd999231a3d0292b72c2f8953f656f67a5708c
MD5 d111f30e500133234866e74e217e5554
BLAKE2b-256 c2859b2f2ec71f746dae8e5a58ab9b23916bfe937cd6a5c5885686dcd7714fb7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8e3b3b4fc6a46ec05a493116c23ebd21a266d0f98599e0cdc041ea04bcaf2318
MD5 983b1fdba7882404791f3a44e6bfa4a2
BLAKE2b-256 bfd22a5e2858a7b0bdd41ed1457a2d31552c17c3e2e2be0e9993c5f1a5a82dab

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for pynear-2.3.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6f1fb44dec8fbf64a0f322a730e0649968793a3bb4ac3e31fe9049d9e2856da4
MD5 baf64c4d05eaaaefc95debed78568873
BLAKE2b-256 c4803d96e2e69e95e52468dc9444a42b74cc454472b0b5b9330f8d11a747caca

See more details on using hashes here.

Provenance

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