Skip to main content

Nearest Neighbor Detection for Bioconductor

Project description

PyPI-Server Monthly Downloads Unit tests

Python bindings to knncolle

Overview

The knncolle Python package implements Python bindings to the C++ library of the same name for nearest neighbor (NN) searches. Downstream packages can re-use the NN search algorithms in knncolle, either via Python or by directly calling C++ through shared pointers. This is inspired by the BiocNeighbors Bioconductor package, which does the same thing for R packages.

Quick start

Install it:

pip install knncolle

And run the desired search:

# Mocking up data with 20 dimensions, 1000 observations
import numpy
y = numpy.random.rand(1000, 20) 

# Building a search index with vantage point trees:
import knncolle
params = knncolle.VptreeParameters()
idx = knncolle.build_index(params, y)

# Performing the search:
res = knncolle.find_knn(idx, num_neighbors=10)

res.index # each row is an observation, each column is a neighbor
## array([[881,  74, 959, ..., 917, 385, 522],
##        [586,   8, 874, ..., 895,  52, 591],
##        [290, 215, 298, ..., 148, 627, 443],
##        ...,
##        [773,  44, 669, ..., 775, 287, 819],
##        [658, 847, 691, ..., 630, 861, 434],
##        [796, 158,  11, ..., 606, 815, 882]],
##       shape=(1000, 10), dtype=uint32)

res.distance # distances to the neighbors in 'index'
## array([[1.12512471, 1.12792771, 1.15229055, ..., 1.21499808, 1.2176659 ,
##         1.23952456],
##        [0.9988856 , 1.03782045, 1.08870223, ..., 1.16899062, 1.17007634,
##         1.17147675],
##        [1.2471501 , 1.26328659, 1.2643019 , ..., 1.32229768, 1.32679721,
##         1.33451926],
##        ...,
##        [1.05765983, 1.08981287, 1.11295647, ..., 1.18395012, 1.1976068 ,
##         1.21577234],
##        [0.96758957, 1.02363497, 1.05326212, ..., 1.21518925, 1.22847612,
##         1.24106054],
##        [1.17846147, 1.22299985, 1.2248128 , ..., 1.35088373, 1.39274142,
##         1.40207528]], shape=(1000, 10))

Check out the reference documentation for details.

Switching algorithms

We can easily switch to a different NN search algorithm by supplying a different params object. For example, we could use the Approximate Nearest Neighbors Oh Yeah (Annoy) algorithm:

an_params = knncolle.AnnoyParameters()
an_idx = knncolle.build_index(an_params, y)

We can also tweak the search parameters in our Parameters object during or after its construction. For example, with the hierarchical navigable small worlds (HNSW) algorithm:

h_params = knncolle.HnswParameters(num_links=20, distance="Manhattan")
h_params.ef_construction = 150
h_idx = knncolle.build_index(h_params, y)

Currently, we support Annoy, HNSW, vantage point trees, k-means k-nearest neighbors, and an exhaustive brute-force search. More algorithms can be added by extending knncolle as described below without any change to end-user code.

Other searches

Given a separate query dataset of the same dimensionality, we can find the nearest neighbors in the prebuilt NN search index:

q = numpy.random.rand(50, 20)
qres = knncolle.query_knn(idx, q, num_neighbors=10)

qres.index.shape # each row is an observation in 'q'
## (50, 10)
qres.distance.shape
## (50, 10)

qres.index[0,:]
## array([712, 947, 924, 506, 640, 228, 424, 662, 299, 473], dtype=uint32)

qres.distance[0,:]
## array([0.9846863 , 0.99493741, 1.01642662, 1.02303339, 1.02915264,
##        1.05241022, 1.0690309 , 1.09889404, 1.1327715 , 1.14832321])

We can ask find_knn() to report variable numbers of neighbors for each observation:

variable_k = (numpy.random.rand(y.shape[0]) * 10).astype(numpy.uint32)
var_res = knncolle.find_knn(idx, num_neighbors=variable_k)

len(var_res.index)
## 1000

len(var_res.distance)
## 1000

variable_k[0]
## np.uint32(7)

var_res.index[0]
## array([881,  74, 959, 135, 148, 946, 276], dtype=uint32)

var_res.distance[0]
## array([1.12512471, 1.12792771, 1.15229055, 1.16210922, 1.19067866,
##        1.19773984, 1.21375003])

We can find all observations within a distance threshold of each observation via find_neighbors(). The related query_neighbors() function handles querying of observations in a separate dataset. Both functions also accept a variable threshold for each observation.

range_res = knncolle.find_neighbors(idx, threshold=1.2)

len(range_res.index)
## 1000

len(range_res.distance)
## 1000

range_res.index[0]
## array([881,  74, 959, 135, 148, 946], dtype=uint32)

range_res.distance[0]
## array([1.12512471, 1.12792771, 1.15229055, 1.16210922, 1.19067866,
##        1.19773984])

Use with C++

The raison d'être of the knncolle Python package is to facilitate the re-use of the neighbor search algorithms by C++ code in other Python packages. The idea is that downstream packages will link against the knncolle C++ interface so that they can re-use the search indices created by the knncolle Python package. This allows developers to (i) save time by avoiding the need to re-compile all desired algorithms and (ii) support more algorithms in extensions to the knncolle framework. To do so:

  1. Add knncolle.includes() and assorthead.includes() to the compiler's include path for the package. This can be done through include_dirs= of the Extension() definition in setup.py or by adding a target_include_directories() in CMake, depending on the build system.
  2. Call knncolle.build_index() to construct a GenericIndex instance. This exposes a shared pointer to the C++-allocated index via its ptr property.
  3. Pass ptr to C++ code as a uintptr_t referencing a knncolle::Prebuilt. which can be interrogated as described in the knncolle documentation.

So, for example, the C++ code in our downstream package might look like this:

#include "knncolle_py.h"

int do_something(uintptr_t ptr) {
    const auto& prebuilt = knncolle_py::cast_prebuilt(ptr)->ptr;
    // Do something with the search index interface.
    return 1;
}

PYBIND11_MODULE(lib_downstream, m) {
    m.def("do_something", &do_something);
}

Which can then be called from Python:

from . import lib_downstream as lib
from knncolle import GenericIndex

def do_something(idx: GenericIndex):
    return lib.do_something(idx.ptr)

In some scenarios, it may be more convenient to construct the search index inside C++, e.g., if the dataset to be searched is not available before the call to the C++ function. This can be accommodated by accepting a uintptr_t to a knncolle::Builder in the C++ code:

#include "knncolle_py.h"

int do_something_mk2(uintptr_t ptr) {
    const auto& builder = knncolle_py::cast_builder(ptr)->ptr;
    // The builder is a algorithm-specific factory that accepts a matrix and
    // returns a search index for that algorithm. Presumably we construct a
    // new search index inside this function and use it.
    return 1;
}

PYBIND11_MODULE(lib_downstream, m) {
    m.def("do_something_mk2", &do_something_mk2);
}

A pointer to the knncolle::Builder can be created by the define_builder() function in Python, and then passed to the C++ code:

from . import lib_downstream as lib
from knncolle import define_builder, Parameters

def do_something(param: Parameters):
    builder, cls = define_builder(param)
    return lib.do_something_mk2(builder.ptr)

Check out the included header for more definitions.

Extending to more algorithms

Via define_builder()

The best way to extend knncolle is to do so in C++. This involves writing subclasses of the interfaces in the knncolle library. Once this is done, it is a simple matter of writing the following Python bindings:

  • Implement a SomeNewParameters class that inherits from Parameters.
  • Implement a SomeNewIndex class that inherits from GenericIndex. This should accept a single ptr in its constructor and have a ptr property that returns the same value.
  • Register a define_builder() method that dispatches on SomeNewParameters. This should call into C++ and return a tuple containing a Builder object and the SomeNewIndex constructor.

No new methods are required for find_knn(), build_index(), etc. as the default method will work automatically if a define_builder() method is available. This approach also allows the new method to be used in C++ code of downstream packages.

Without define_builder()

If it is not possible to implement the search algorithm in C++, we can still extend knncolle in Python. Each extension package should:

  • Implement a SomeNewParameters class that inherits from Parameters.
  • Implement a SomeNewIndex class that inherits from Index. This can have an arbitrary structure, i.e., it does not need to have a ptr property.
  • Register a build_index() method that dispatches on SomeNewParameters. This should return an instance of SomeNewIndex.
  • Register a method for any number of these generics: find_knn(), find_distance(), find_neighbors(), query_knn(), query_distance(), query_neighbors(). These methods should dispatch on SomeNewParameters and return the appropriate result object.

This approach will not support re-use by C++ code in other Python packages.

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

knncolle-0.3.0.tar.gz (41.3 kB view details)

Uploaded Source

Built Distributions

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

knncolle-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

knncolle-0.3.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (219.4 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

knncolle-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl (175.7 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

knncolle-0.3.0-cp314-cp314t-macosx_10_15_x86_64.whl (189.4 kB view details)

Uploaded CPython 3.14tmacOS 10.15+ x86-64

knncolle-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

knncolle-0.3.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (218.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

knncolle-0.3.0-cp314-cp314-macosx_11_0_arm64.whl (170.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

knncolle-0.3.0-cp314-cp314-macosx_10_15_x86_64.whl (185.1 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

knncolle-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

knncolle-0.3.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (218.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

knncolle-0.3.0-cp313-cp313-macosx_11_0_arm64.whl (170.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

knncolle-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl (184.9 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

knncolle-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

knncolle-0.3.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (218.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

knncolle-0.3.0-cp312-cp312-macosx_11_0_arm64.whl (170.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

knncolle-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl (184.9 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

knncolle-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

knncolle-0.3.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (217.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

knncolle-0.3.0-cp311-cp311-macosx_11_0_arm64.whl (169.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

knncolle-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl (184.0 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

knncolle-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

knncolle-0.3.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (216.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

knncolle-0.3.0-cp310-cp310-macosx_11_0_arm64.whl (168.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

knncolle-0.3.0-cp310-cp310-macosx_10_9_x86_64.whl (182.9 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file knncolle-0.3.0.tar.gz.

File metadata

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

File hashes

Hashes for knncolle-0.3.0.tar.gz
Algorithm Hash digest
SHA256 1858cf1f54aa79f98cde36387621926542c1e78e2f4293617fc13f6c24d06ef5
MD5 fffa02c57c4325638b94f5c407dad113
BLAKE2b-256 74609ee43099bd31d9d75bcd1f06472e2676a98a421740c7992cd48181b126e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0.tar.gz:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d9dd69f4e22b2d933195893deb904d61558863179ad8de736f52548b692746ad
MD5 e948e7d5681700f7c43cd4201dc73ac2
BLAKE2b-256 72530a37bfe362fb6cc93a73f064caad492e450c0341789311cd8813ad5d4eaf

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 511ba6429f547012304dcbda6337fbf0f55e636c1edcf59bcc36883f76c53842
MD5 6cdaaaafcb6ebcc90a17369a2319a009
BLAKE2b-256 4f2c53868aa296b820a32f7e6292bf0ce38c445431b798e08c08470826e8540b

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0e13c6230e6974679631ba30cffe6d548701894a4b9ca0508da3a46312ded0e7
MD5 14bad988565cf95d51de8b08900d207f
BLAKE2b-256 5a4716f9a6d569026b1eb8cebfa1ed0a12f8da2c862a75b0531469293c6d8ec2

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp314-cp314t-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp314-cp314t-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 4088132fb1bcb765716537ab4b3d475e31eb19bca7bb02a4e54f13af48b1456d
MD5 df0bce2446a31d39bc346c6279b273ab
BLAKE2b-256 333470f5dc9dc9580a32611a75023bb823a325b8c733ccfbc4d72c9d579af5be

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp314-cp314t-macosx_10_15_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 66db81cb0a9ea0a84169ab52e8f33f66970391293dce1c5c84cbe5344252d9be
MD5 b9c59c72d6051bbb58a1796fc4361505
BLAKE2b-256 f44ac06f06ad6dd8d9ece2d519de34f3cc6b3e21f61b830221dcbf7ff1cc84d0

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ee68dd569b431b23a04e794aaf948a9a7b5c0466d60a185a52c22f9eb0cfebd6
MD5 0f0cf988ad76903d75ff162a5b7b0099
BLAKE2b-256 3365eda0c7ab01bf49c89e2ebc248b0c3d854755b3e833425d3bc8d2c0741b2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1e7fb02f9b746706cc528ed85b4a4634f4ca6b72b6407b8b4f8601a72923a74e
MD5 d951ccb79e3fff29a5f37978c6b85237
BLAKE2b-256 bf267d989ff822c4e2eb28aab47c8f5eb0333e7d6e5236be0666354fdcab3d01

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 b7a2f01a83a390de9ca82affb70cd312f586b564547723d728a39dc5feaa1f4f
MD5 9f1cf3cbf56d64fabfdc34de4c8ac8a1
BLAKE2b-256 266d4d27d4cb2b025fbb23b04762625a774b0c45c9b86c44a80e0f360b219ffe

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ee413603510c97afb07e6884bde10a2df254a372464329f7e9e6bd9361f52d0f
MD5 ba81fc7af9c02b6ceea23c75124dd22e
BLAKE2b-256 46e29eca35e98e8a143ef8874375bae48f282c4220e76d29629c6cc3ac82556f

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 23a4896f9b02fe750be60aa8025dd258879d693fb1461f90d9ab004f822eae76
MD5 dae15506180c8de9477030db68c401c0
BLAKE2b-256 b4fd0df2e9c9f06494e1cc38cc5606f51d441f819541628fd0ba91a0908544be

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9d6573745f5f3c68ae5986674e4a575f4b3174ab49f7a88e26eaa736f1ae42be
MD5 cdaa8f50f03275bc28ab021b9f83522c
BLAKE2b-256 ee8797aa482c1c0a55127d09325e3ed61f028691624883d9f191a3c3b0ec31a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 0391de7694bb20d00e8b9bfb4ae92470b2ca03fa3c0b48d96191fc9dfd77af45
MD5 24fe68fc7718422fd1975d01ab2c2ee6
BLAKE2b-256 5704d5fc6aff887166af0bb3873de6b21ec6c3b82c72c8229c23d86e8a0a0e3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d9ee72856719f077f2bc2f98da59361c494c1d537723d5287e285c17f4c1ea99
MD5 8147f8c17dbf3cfd94ee0394f230ce58
BLAKE2b-256 424194d378fb47d7e530329b1bbd382cf924d3f9d78967bb8521f1dd5e123590

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ee621bcfdde046562b41ae91d3c85197a967aebaaff48f6cbab078444c0ced97
MD5 d83174cac38e99e30294017ac48d9f34
BLAKE2b-256 e48379f9e8d6b7d1cb5e1aaf92898ee6b83c0d9f15c91766ae04f9af3c25a05b

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 25303f692a321e7f191eb8d6a7e65d29ce60a1e5d710f0f9d2c617713d442c3a
MD5 08c7c24d89869f1f8d260da54ba50ae0
BLAKE2b-256 f5f525ea2828d988334759a1265e90c8d939b3af2eaf76db16b3e9834d227bbf

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 069f79bb0c11fc96e9ac5f71dbb847673ac0418bb30419ec6ea64c282f01d7f6
MD5 ffb76bc355bcc430d6d953095674e50e
BLAKE2b-256 051aca717677039ed0f17c41633c0d2ae79e71f55c6b1ae650c9307a2d8933e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ba2a793b13b388c9e6dc943c922b58542d658b17e24328967256085da8f753bc
MD5 bbe0ac4e41dcd5f19cf391dc8cb06909
BLAKE2b-256 ae376473ed6a3465e5dc0cb9451c343edee6d1fa76eeb5aff4dec95cf8f1a5d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 65e58d0b3c934c3ddb4fcf082710c77688323da64fce2aaf2345f66fad0087fc
MD5 f332fb69681086d17f024a7ba19dc1ad
BLAKE2b-256 97980ed9d1b68d6fd087f7aa04a36586b89a893e81d1747f2b2be4795ffc9faa

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bc7a3eb3ea22d3a76d59010388d63972f0999f589dc1ba1ad805d539be0a2a90
MD5 906ff106c9fa012fa49596791150f372
BLAKE2b-256 4550216a02c6be42fc8d5efd9347e3a2e2d99f3affdda4fc1883e3f24072e8da

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 34a2cc87184189569ba7fa8a23ba5a310661deed822ca5b574980d64d6429350
MD5 416c283fcc165ffefcad0f3c956bb8c8
BLAKE2b-256 e176f8493eeaad81d6219a4e6d91c89fbca8fd67ad08baec5389649c8f54c6b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4d8d5f677b52bfb32eda07e781573e245acafbafcb28db0f8f660aaa27862234
MD5 4f57e09391fcbdbfa5dd690cbdaa2f33
BLAKE2b-256 778b8dbcbcf2e58f7431da7967e33fb2de49a8fa206e47aefcc831f5b2c361a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6085403f2fbb73bfb65864abfa044db0e00769eea2e54ea8de31be308f9cd62c
MD5 953a25e657b19e82bba704c1a9044510
BLAKE2b-256 256d021f505eee2023690ad341485eef9d73ea7bfcfb02f6038515f4a4fd4500

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c33ff963c5baa72313853b4b0a703aa96d452aa99d251107df60b7f0d20383ba
MD5 0815d238f24e8851c64e240b5d2063c2
BLAKE2b-256 11af0a4aab1214de4e7d1c64d17420a0827d70f1e1eb039e1f07e41b03a1733c

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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

File details

Details for the file knncolle-0.3.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for knncolle-0.3.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d9af27fedfdf7f15dae43007a138d12f61d106605826c0f33adb5789b3e9f3d8
MD5 445265edd42d85a55fb5cea4fcf1c960
BLAKE2b-256 ef2b56f8bbca36da5b221484d4d8ec2a070d7dcfccb7a31be5f51a82328bcdcf

See more details on using hashes here.

Provenance

The following attestation bundles were made for knncolle-0.3.0-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: pypi-publish.yml on knncolle/knncolle-py

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