
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"
}