
Low-effort way of calling the rust-crate [`exact-clustering`](https://github.com/lumi-a/exact-clustering) from Python.
```sh
pip install exact-clustering
```
Consult [docs.rs](https://docs.rs/exact-clustering) for more extensive documentation.
```py
from exact_clustering import *
weighted_points = [
(1.0, [0, 0]),
(1.0, [1, 0]),
(3.0, [0, 2]),
]
print(
weighted_continuous_kmeans_price_of_hierarchy(
weighted_points
)
)
# 1.0
```
View provided methods via `help(exact_clustering)` in the python-repl or take a look at `exact_clustering.pyi`. At time of writing, they are:
```py
class KMeans:
def __new__(cls, data: Sequence[Sequence[float]]) -> KMeans: ...
def price_of_hierarchy(self) -> float: ...
def price_of_greedy(self) -> float: ...
class KMedianL1:
def __new__(cls, data: Sequence[Sequence[float]]) -> KMedianL1: ...
def price_of_hierarchy(self) -> float: ...
def price_of_greedy(self) -> float: ...
class KMedianL2:
def __new__(cls, data: Sequence[Sequence[float]]) -> KMedianL2: ...
def price_of_hierarchy(self) -> float: ...
def price_of_greedy(self) -> float: ...
class KMedianL2Squared:
def __new__(cls, data: Sequence[Sequence[float]]) -> KMedianL2Squared: ...
def price_of_hierarchy(self) -> float: ...
def price_of_greedy(self) -> float: ...
class UnweightedKMedianL1:
def __new__(cls, data: Sequence[tuple[float, Sequence[float]]]) -> UnweightedKMedianL1: ...
def price_of_hierarchy(self) -> float: ...
def price_of_greedy(self) -> float: ...
class UnweightedKMedianL2:
def __new__(cls, data: Sequence[tuple[float, Sequence[float]]]) -> UnweightedKMedianL2: ...
def price_of_hierarchy(self) -> float: ...
def price_of_greedy(self) -> float: ...
class UnweightedKMedianL2Squared:
def __new__(cls, data: Sequence[tuple[float, Sequence[float]]]) -> UnweightedKMedianL2Squared: ...
def price_of_hierarchy(self) -> float: ...
def price_of_greedy(self) -> float: ...
class WeightedKMeans:
def __new__(cls, data: Sequence[tuple[float, Sequence[float]]]) -> WeightedKMeans: ...
def price_of_hierarchy(self) -> float: ...
def price_of_greedy(self) -> float: ...
```
## License
Licensed under either of
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.
## Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.
Raw data
{
"_id": null,
"home_page": null,
"name": "exact-clustering",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "clustering, k-means, k-median, optimization, algorithms",
"author": "lumi-a",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/db/62/d63b5fe0db91e957658f0aae5741d43a5e9f30a214e43daf259372afdba2/exact_clustering-0.5.1.tar.gz",
"platform": null,
"description": "\n\nLow-effort way of calling the rust-crate [`exact-clustering`](https://github.com/lumi-a/exact-clustering) from Python. \n\n```sh\npip install exact-clustering\n```\n\nConsult [docs.rs](https://docs.rs/exact-clustering) for more extensive documentation.\n\n```py\nfrom exact_clustering import *\n\nweighted_points = [\n (1.0, [0, 0]),\n (1.0, [1, 0]),\n (3.0, [0, 2]),\n]\n\nprint(\n weighted_continuous_kmeans_price_of_hierarchy(\n weighted_points\n )\n)\n# 1.0\n```\n\nView provided methods via `help(exact_clustering)` in the python-repl or take a look at `exact_clustering.pyi`. At time of writing, they are:\n\n```py\nclass KMeans:\n def __new__(cls, data: Sequence[Sequence[float]]) -> KMeans: ...\n def price_of_hierarchy(self) -> float: ...\n def price_of_greedy(self) -> float: ...\n\nclass KMedianL1:\n def __new__(cls, data: Sequence[Sequence[float]]) -> KMedianL1: ...\n def price_of_hierarchy(self) -> float: ...\n def price_of_greedy(self) -> float: ...\n\nclass KMedianL2:\n def __new__(cls, data: Sequence[Sequence[float]]) -> KMedianL2: ...\n def price_of_hierarchy(self) -> float: ...\n def price_of_greedy(self) -> float: ...\n\nclass KMedianL2Squared:\n def __new__(cls, data: Sequence[Sequence[float]]) -> KMedianL2Squared: ...\n def price_of_hierarchy(self) -> float: ...\n def price_of_greedy(self) -> float: ...\n\nclass UnweightedKMedianL1:\n def __new__(cls, data: Sequence[tuple[float, Sequence[float]]]) -> UnweightedKMedianL1: ...\n def price_of_hierarchy(self) -> float: ...\n def price_of_greedy(self) -> float: ...\n\nclass UnweightedKMedianL2:\n def __new__(cls, data: Sequence[tuple[float, Sequence[float]]]) -> UnweightedKMedianL2: ...\n def price_of_hierarchy(self) -> float: ...\n def price_of_greedy(self) -> float: ...\n\nclass UnweightedKMedianL2Squared:\n def __new__(cls, data: Sequence[tuple[float, Sequence[float]]]) -> UnweightedKMedianL2Squared: ...\n def price_of_hierarchy(self) -> float: ...\n def price_of_greedy(self) -> float: ...\n\nclass WeightedKMeans:\n def __new__(cls, data: Sequence[tuple[float, Sequence[float]]]) -> WeightedKMeans: ...\n def price_of_hierarchy(self) -> float: ...\n def price_of_greedy(self) -> float: ...\n```\n\n## License\n\nLicensed under either of\n\n- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)\n- MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)\n\nat your option.\n\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n\n",
"bugtrack_url": null,
"license": null,
"summary": "Find optimal clusterings and optimal hierarchical clusterings.",
"version": "0.5.1",
"project_urls": {
"Repository": "https://github.com/lumi-a/py-exact-clustering"
},
"split_keywords": [
"clustering",
" k-means",
" k-median",
" optimization",
" algorithms"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "fe025efd7f91d81ea163b378a321ff559d3319757fc2e797d5537797dc7047f1",
"md5": "fc47f2a4d2d958e071ce12be0533f592",
"sha256": "154492c61131c8ddfae3efc19d3d848a3f16b044233be95ff08131e6c44e03cf"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp313-cp313t-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "fc47f2a4d2d958e071ce12be0533f592",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 334695,
"upload_time": "2025-10-11T17:30:37",
"upload_time_iso_8601": "2025-10-11T17:30:37.179660Z",
"url": "https://files.pythonhosted.org/packages/fe/02/5efd7f91d81ea163b378a321ff559d3319757fc2e797d5537797dc7047f1/exact_clustering-0.5.1-cp313-cp313t-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "501940733348e0d72bdb5e50a233fe9378ed547ccc8c7683a9f7001925a6bbce",
"md5": "890b959a76b75df7bc2c2e36b8e1176e",
"sha256": "3a3fb629a3c30a7f783971040d5f8f7a7304a92f3721ee479429ef360ae368b4"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp313-cp313t-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "890b959a76b75df7bc2c2e36b8e1176e",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 319650,
"upload_time": "2025-10-11T17:30:34",
"upload_time_iso_8601": "2025-10-11T17:30:34.897660Z",
"url": "https://files.pythonhosted.org/packages/50/19/40733348e0d72bdb5e50a233fe9378ed547ccc8c7683a9f7001925a6bbce/exact_clustering-0.5.1-cp313-cp313t-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dade8dc93ea404e41943a8a425b4d6f62ed853532e5a10ea726c24c43dfe1861",
"md5": "5134c8e47928b52f308801cf9e194f00",
"sha256": "3967fe1520b1ed6babf17cc94648b54686383183e0ed40641d52196685e1a1ea"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "5134c8e47928b52f308801cf9e194f00",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 360800,
"upload_time": "2025-10-11T17:30:18",
"upload_time_iso_8601": "2025-10-11T17:30:18.633545Z",
"url": "https://files.pythonhosted.org/packages/da/de/8dc93ea404e41943a8a425b4d6f62ed853532e5a10ea726c24c43dfe1861/exact_clustering-0.5.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bcc3a869c4777709ca7f27e431970a040ea19b176fde7fb78f224014ef5cd6ab",
"md5": "a8bc1f4634c8392b955be557e5f32f61",
"sha256": "a481a52c72560d9c67d7a708adf4fbf1fe5a66612a326ea403065de1c24d0a5c"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "a8bc1f4634c8392b955be557e5f32f61",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 364505,
"upload_time": "2025-10-11T17:30:21",
"upload_time_iso_8601": "2025-10-11T17:30:21.492082Z",
"url": "https://files.pythonhosted.org/packages/bc/c3/a869c4777709ca7f27e431970a040ea19b176fde7fb78f224014ef5cd6ab/exact_clustering-0.5.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4482d43e226f5f039d04f687381f472b3c96681043fbe20639d007937c822a75",
"md5": "e53caa19f4b997faf54586c7752e7421",
"sha256": "83b188b9cee33adc46926d450c272e2cd962a69118fdd7e83bc834b18830eb98"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "e53caa19f4b997faf54586c7752e7421",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 529455,
"upload_time": "2025-10-11T17:30:24",
"upload_time_iso_8601": "2025-10-11T17:30:24.156478Z",
"url": "https://files.pythonhosted.org/packages/44/82/d43e226f5f039d04f687381f472b3c96681043fbe20639d007937c822a75/exact_clustering-0.5.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "63d6eeb06eb3b294830b90bc6d1b535c03d10b703352f61c10046a9d1f274589",
"md5": "cba9bd24adad845ebdf1a3c88b21e1f4",
"sha256": "f4a8e3d5f08895d965d69692ce2fb9e368f334bd813adf7951b2ff9bbfea9dd9"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "cba9bd24adad845ebdf1a3c88b21e1f4",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 399620,
"upload_time": "2025-10-11T17:30:26",
"upload_time_iso_8601": "2025-10-11T17:30:26.814093Z",
"url": "https://files.pythonhosted.org/packages/63/d6/eeb06eb3b294830b90bc6d1b535c03d10b703352f61c10046a9d1f274589/exact_clustering-0.5.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "24ef653e6d4ee067de93fda58e8798ab4cdc409fa23f315a934e015f3a584b78",
"md5": "52bcee320da7a1fec974b49774050bfc",
"sha256": "d87cba896637d27a21d6dd7f3f082daab4b23b5e18d509755bec9a3d41834868"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "52bcee320da7a1fec974b49774050bfc",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 379065,
"upload_time": "2025-10-11T17:30:32",
"upload_time_iso_8601": "2025-10-11T17:30:32.327672Z",
"url": "https://files.pythonhosted.org/packages/24/ef/653e6d4ee067de93fda58e8798ab4cdc409fa23f315a934e015f3a584b78/exact_clustering-0.5.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a7502c2560327c26729d78bdc9715bedbb0ec1fae9c39c28ec12e56babbcea15",
"md5": "fd2e541df407c629f960b7317de49798",
"sha256": "993163c3f11bf440fcf03a3f81e80ea7f17ea344ec7f3e4a649095a1e40cdb61"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl",
"has_sig": false,
"md5_digest": "fd2e541df407c629f960b7317de49798",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 395758,
"upload_time": "2025-10-11T17:30:29",
"upload_time_iso_8601": "2025-10-11T17:30:29.434111Z",
"url": "https://files.pythonhosted.org/packages/a7/50/2c2560327c26729d78bdc9715bedbb0ec1fae9c39c28ec12e56babbcea15/exact_clustering-0.5.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dcfbd1b90359464b19e4dd2532f78b72db9d5dde8f10ed8f60719efc376f0f46",
"md5": "259bc49416f6757cebebaacba9554e82",
"sha256": "ffde19be7aa993d68a42d0307a3864a76f8472732ac69bcd6cfe31706698a592"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp313-cp313t-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "259bc49416f6757cebebaacba9554e82",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 541200,
"upload_time": "2025-10-11T17:30:39",
"upload_time_iso_8601": "2025-10-11T17:30:39.363900Z",
"url": "https://files.pythonhosted.org/packages/dc/fb/d1b90359464b19e4dd2532f78b72db9d5dde8f10ed8f60719efc376f0f46/exact_clustering-0.5.1-cp313-cp313t-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e40fa557a8f5bf845043f8bc0168867181db6e54e078d66a6d0a5887e89220f0",
"md5": "5b9d460809bfef599671141470fe3423",
"sha256": "a733aad97a22d93e1b93fc28d49780a979a916f0ffd4d285155e7a7a94ebdcca"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp313-cp313t-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "5b9d460809bfef599671141470fe3423",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 628113,
"upload_time": "2025-10-11T17:30:42",
"upload_time_iso_8601": "2025-10-11T17:30:42.166744Z",
"url": "https://files.pythonhosted.org/packages/e4/0f/a557a8f5bf845043f8bc0168867181db6e54e078d66a6d0a5887e89220f0/exact_clustering-0.5.1-cp313-cp313t-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b609250b793b2633c913fd1fd2f23df7f90e3f3f9199f76a4700cefa21bd73b2",
"md5": "7601158fed8a7ae8f15a82abb07c6b90",
"sha256": "5fdbe1dce70db7e6e0a89f16bf89544d513199da4714c49e1861350b888b8b3b"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp313-cp313t-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "7601158fed8a7ae8f15a82abb07c6b90",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 567377,
"upload_time": "2025-10-11T17:30:45",
"upload_time_iso_8601": "2025-10-11T17:30:45.041217Z",
"url": "https://files.pythonhosted.org/packages/b6/09/250b793b2633c913fd1fd2f23df7f90e3f3f9199f76a4700cefa21bd73b2/exact_clustering-0.5.1-cp313-cp313t-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "881475abcfe230837bf32869305a5f03b994413c9ff44261c3b810023f5d70e1",
"md5": "4bc97fedda7b037094ca5df354fd341d",
"sha256": "c66bfd33e8ec13ad69c56c1024f51e0bf2de6704b26011e732538c0708921492"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp313-cp313t-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "4bc97fedda7b037094ca5df354fd341d",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.10",
"size": 539042,
"upload_time": "2025-10-11T17:30:47",
"upload_time_iso_8601": "2025-10-11T17:30:47.569992Z",
"url": "https://files.pythonhosted.org/packages/88/14/75abcfe230837bf32869305a5f03b994413c9ff44261c3b810023f5d70e1/exact_clustering-0.5.1-cp313-cp313t-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8042a97f7df53c57ff7f6920d920bd48bd85eb253545f111a744ee52b13c6b30",
"md5": "432511194b333675f0cd01915c51dc84",
"sha256": "b504101a82483b4a55dcc6b1df222eae4a1017e057d0be9b0f113a91fc346a5d"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp38-abi3-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "432511194b333675f0cd01915c51dc84",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.10",
"size": 343205,
"upload_time": "2025-10-11T17:30:38",
"upload_time_iso_8601": "2025-10-11T17:30:38.249524Z",
"url": "https://files.pythonhosted.org/packages/80/42/a97f7df53c57ff7f6920d920bd48bd85eb253545f111a744ee52b13c6b30/exact_clustering-0.5.1-cp38-abi3-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "52905f5b5b3fe68c7ad029a715e4175b45c63bf7ec02a5993a119b72ce38be4a",
"md5": "e92e447c44c509a77c14f988163f0f35",
"sha256": "bb70a04d24b05f3ba7075510b4cdd0cfab8a820ef56a54f8d7482d2befd8d57c"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp38-abi3-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "e92e447c44c509a77c14f988163f0f35",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.10",
"size": 328806,
"upload_time": "2025-10-11T17:30:36",
"upload_time_iso_8601": "2025-10-11T17:30:36.020428Z",
"url": "https://files.pythonhosted.org/packages/52/90/5f5b5b3fe68c7ad029a715e4175b45c63bf7ec02a5993a119b72ce38be4a/exact_clustering-0.5.1-cp38-abi3-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ed64284c17cce6939139632f451c05918269019284c59f8b9a98f8b7ff46f01d",
"md5": "00e37bf3a4e8bd23447b2536fecb25b8",
"sha256": "f9b7b514d69933b0e8cbc277d23852d6842647547910d8b5afab2cedffc464b5"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "00e37bf3a4e8bd23447b2536fecb25b8",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.10",
"size": 368523,
"upload_time": "2025-10-11T17:30:20",
"upload_time_iso_8601": "2025-10-11T17:30:20.124014Z",
"url": "https://files.pythonhosted.org/packages/ed/64/284c17cce6939139632f451c05918269019284c59f8b9a98f8b7ff46f01d/exact_clustering-0.5.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "411a1c93ffe7a08ad0101176d81e71200bda9d5ea1b33115f5f43eeea76d18b8",
"md5": "ed4c9bc43a419ec47ad45082414b6aec",
"sha256": "9854edacd3dc851488bd0d795a4ddfb6a143900bc37cccdf798da751759d1fc5"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "ed4c9bc43a419ec47ad45082414b6aec",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.10",
"size": 371556,
"upload_time": "2025-10-11T17:30:22",
"upload_time_iso_8601": "2025-10-11T17:30:22.805908Z",
"url": "https://files.pythonhosted.org/packages/41/1a/1c93ffe7a08ad0101176d81e71200bda9d5ea1b33115f5f43eeea76d18b8/exact_clustering-0.5.1-cp38-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "603358f3bf80cb6f2b6b1f4fe45282d94943233deba8b2ba10f418917f1a8913",
"md5": "8394785c030a41595c7a9ffc970f267e",
"sha256": "e1e3067138d4edacc2f39c35c4808c30403bd3e8f1d767e598cd63bb5cae887c"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "8394785c030a41595c7a9ffc970f267e",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.10",
"size": 539371,
"upload_time": "2025-10-11T17:30:25",
"upload_time_iso_8601": "2025-10-11T17:30:25.280769Z",
"url": "https://files.pythonhosted.org/packages/60/33/58f3bf80cb6f2b6b1f4fe45282d94943233deba8b2ba10f418917f1a8913/exact_clustering-0.5.1-cp38-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cbd56afb275d1b7e450d91503b6d791e6637c36e4b2b0f9a5f11da05458fd4b9",
"md5": "ca20aa7343e81f5991ab642c640e4c97",
"sha256": "a29a1cd54a1d8d8ab31323b582869f87b2d894a6528b369bcdaaa6c0f1ee28fa"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "ca20aa7343e81f5991ab642c640e4c97",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.10",
"size": 407906,
"upload_time": "2025-10-11T17:30:28",
"upload_time_iso_8601": "2025-10-11T17:30:28.250992Z",
"url": "https://files.pythonhosted.org/packages/cb/d5/6afb275d1b7e450d91503b6d791e6637c36e4b2b0f9a5f11da05458fd4b9/exact_clustering-0.5.1-cp38-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ce406af5dd95d074293ec1ed6066bb358dc21a4fbd5142f411f43864169fa35e",
"md5": "ca3a62fae2c339b0d5a69b3757b5128a",
"sha256": "6d052562b1c23af2d4cc56f2286feb8ddab148a42504e6a9eee4bc5fb24b6313"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "ca3a62fae2c339b0d5a69b3757b5128a",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.10",
"size": 383259,
"upload_time": "2025-10-11T17:30:33",
"upload_time_iso_8601": "2025-10-11T17:30:33.737003Z",
"url": "https://files.pythonhosted.org/packages/ce/40/6af5dd95d074293ec1ed6066bb358dc21a4fbd5142f411f43864169fa35e/exact_clustering-0.5.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ccff0e2098698ac7ac9879c9a73594690bafa8781d924b85b1b1918b69005f8b",
"md5": "f0c6d18f118ed6869f452b42349c502a",
"sha256": "cb0c98da873bf628d65eab0e96c66b669eab1fe6904b77b74f26f4159edd73df"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl",
"has_sig": false,
"md5_digest": "f0c6d18f118ed6869f452b42349c502a",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.10",
"size": 400234,
"upload_time": "2025-10-11T17:30:30",
"upload_time_iso_8601": "2025-10-11T17:30:30.866610Z",
"url": "https://files.pythonhosted.org/packages/cc/ff/0e2098698ac7ac9879c9a73594690bafa8781d924b85b1b1918b69005f8b/exact_clustering-0.5.1-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "007ddd003e189cbd41973b7c0457478392dacc61ec70657bd73859c03eb111b1",
"md5": "ff0b0d2470dd16d16540cb402f497a90",
"sha256": "25d20de9c9a5a7b7b5c607893341ab0068b16f70268cce9129d169931debfe02"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp38-abi3-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "ff0b0d2470dd16d16540cb402f497a90",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.10",
"size": 548021,
"upload_time": "2025-10-11T17:30:41",
"upload_time_iso_8601": "2025-10-11T17:30:41.090715Z",
"url": "https://files.pythonhosted.org/packages/00/7d/dd003e189cbd41973b7c0457478392dacc61ec70657bd73859c03eb111b1/exact_clustering-0.5.1-cp38-abi3-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "252842fe657e1ecd9d7548f7bbc0faae13d6896227112a36112ec9b2a7cb92d3",
"md5": "bbab4d6c55fbbda59a101ed9b9552863",
"sha256": "aa830306e89b00e56934d6e93031177344098e078d9ee4592c5103402a1972bc"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp38-abi3-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "bbab4d6c55fbbda59a101ed9b9552863",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.10",
"size": 635161,
"upload_time": "2025-10-11T17:30:43",
"upload_time_iso_8601": "2025-10-11T17:30:43.621232Z",
"url": "https://files.pythonhosted.org/packages/25/28/42fe657e1ecd9d7548f7bbc0faae13d6896227112a36112ec9b2a7cb92d3/exact_clustering-0.5.1-cp38-abi3-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ac85c05028622bfe49e61396323cd47ebc1a40ce8badd320a3eab8dbcc4c72e8",
"md5": "98665a18f15b0a3a1ad5bfdf972881be",
"sha256": "e9841780f479a99ef8d4132dde7ae7f064fcc856609adf29203f4348ff2be6c0"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp38-abi3-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "98665a18f15b0a3a1ad5bfdf972881be",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.10",
"size": 572880,
"upload_time": "2025-10-11T17:30:46",
"upload_time_iso_8601": "2025-10-11T17:30:46.441846Z",
"url": "https://files.pythonhosted.org/packages/ac/85/c05028622bfe49e61396323cd47ebc1a40ce8badd320a3eab8dbcc4c72e8/exact_clustering-0.5.1-cp38-abi3-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2a3cfe34fe36ab232f037c7afe0a526781e88977ccf38f86cf8b3b41d606d6be",
"md5": "9950e9b64295d061814f0cd5da10ceab",
"sha256": "1024c493f597420902996e103c6d2c0897174277161a34fdaed224f5ee9bfe66"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp38-abi3-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "9950e9b64295d061814f0cd5da10ceab",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.10",
"size": 543243,
"upload_time": "2025-10-11T17:30:49",
"upload_time_iso_8601": "2025-10-11T17:30:49.304790Z",
"url": "https://files.pythonhosted.org/packages/2a/3c/fe34fe36ab232f037c7afe0a526781e88977ccf38f86cf8b3b41d606d6be/exact_clustering-0.5.1-cp38-abi3-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "001ede29211e509fdba2ce4ce60c16259eb59dc8e3b8f79f206d74edf5e47735",
"md5": "5a9f3206bb2e605fbbe80fcfabcd3295",
"sha256": "f115d6d64e541660058db390c6a2529d6eed2f09c6c291e962bba7b7e43a7526"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp38-abi3-win32.whl",
"has_sig": false,
"md5_digest": "5a9f3206bb2e605fbbe80fcfabcd3295",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.10",
"size": 207968,
"upload_time": "2025-10-11T17:30:53",
"upload_time_iso_8601": "2025-10-11T17:30:53.013360Z",
"url": "https://files.pythonhosted.org/packages/00/1e/de29211e509fdba2ce4ce60c16259eb59dc8e3b8f79f206d74edf5e47735/exact_clustering-0.5.1-cp38-abi3-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7c5809e3cf3067d4de105bbb5730184a939b0320e3bb6230a000310636a287a0",
"md5": "838d01194056934116663020bc95b50e",
"sha256": "65bf5914e261a695709e7d43b8ecda4fc756cad21d0b5f297b655607ee6b8118"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1-cp38-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "838d01194056934116663020bc95b50e",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.10",
"size": 222692,
"upload_time": "2025-10-11T17:30:51",
"upload_time_iso_8601": "2025-10-11T17:30:51.934049Z",
"url": "https://files.pythonhosted.org/packages/7c/58/09e3cf3067d4de105bbb5730184a939b0320e3bb6230a000310636a287a0/exact_clustering-0.5.1-cp38-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "db62d63b5fe0db91e957658f0aae5741d43a5e9f30a214e43daf259372afdba2",
"md5": "8e5029f537e59f549a0820a8a1d9e2df",
"sha256": "a9adf74434ef625ac111e097b47ea68c5db9d492a69c97ea8a697ec3502fad73"
},
"downloads": -1,
"filename": "exact_clustering-0.5.1.tar.gz",
"has_sig": false,
"md5_digest": "8e5029f537e59f549a0820a8a1d9e2df",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 11816,
"upload_time": "2025-10-11T17:30:51",
"upload_time_iso_8601": "2025-10-11T17:30:51.210304Z",
"url": "https://files.pythonhosted.org/packages/db/62/d63b5fe0db91e957658f0aae5741d43a5e9f30a214e43daf259372afdba2/exact_clustering-0.5.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-11 17:30:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "lumi-a",
"github_project": "py-exact-clustering",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "exact-clustering"
}