2023-08-11T00:13:35,127 Created temporary directory: /tmp/pip-build-tracker-1673vzr3 2023-08-11T00:13:35,130 Initialized build tracking at /tmp/pip-build-tracker-1673vzr3 2023-08-11T00:13:35,130 Created build tracker: /tmp/pip-build-tracker-1673vzr3 2023-08-11T00:13:35,131 Entered build tracker: /tmp/pip-build-tracker-1673vzr3 2023-08-11T00:13:35,132 Created temporary directory: /tmp/pip-wheel-7pkvmgyw 2023-08-11T00:13:35,140 Created temporary directory: /tmp/pip-ephem-wheel-cache-bud7_31o 2023-08-11T00:13:35,196 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-08-11T00:13:35,204 2 location(s) to search for versions of cvi: 2023-08-11T00:13:35,204 * https://pypi.org/simple/cvi/ 2023-08-11T00:13:35,204 * https://www.piwheels.org/simple/cvi/ 2023-08-11T00:13:35,205 Fetching project page and analyzing links: https://pypi.org/simple/cvi/ 2023-08-11T00:13:35,206 Getting page https://pypi.org/simple/cvi/ 2023-08-11T00:13:35,210 Found index url https://pypi.org/simple/ 2023-08-11T00:13:35,398 Fetched page https://pypi.org/simple/cvi/ as application/vnd.pypi.simple.v1+json 2023-08-11T00:13:35,410 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/d9/40/a81a72ef45bf5dcd7ee12fd4e521b20050e46f8f95e6cc08ad895e79d35b/cvi-0.1.0a1-py3-none-any.whl (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2023-08-11T00:13:35,411 Found link https://files.pythonhosted.org/packages/15/63/c98fc65fb527bf3c326122ac38adf2f99075db7e65b62e15c1f2e06ae63e/cvi-0.1.0a1.tar.gz (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.1.0a1 2023-08-11T00:13:35,412 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/a6/26/f61a6400e5756141b96f426c713eab9130857c53b76b13b1b4e1be3563ee/cvi-0.1.0a2-py3-none-any.whl (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2023-08-11T00:13:35,414 Found link https://files.pythonhosted.org/packages/0a/92/7dca8984b7158ac5b286ad7af4379960075bf8434c53e4a1e3a49f0e5cf0/cvi-0.1.0a2.tar.gz (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.1.0a2 2023-08-11T00:13:35,414 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/26/e0/07beb00e46f3d00b2fd106c0884111e445dc15e87bcab4eb7444d8a5be8e/cvi-0.1.0a3-py3-none-any.whl (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2023-08-11T00:13:35,416 Found link https://files.pythonhosted.org/packages/83/38/17e2d7569d5c565643e0ebd63f62071c43dd1a96cde5719066c6ec4455c9/cvi-0.1.0a3.tar.gz (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.1.0a3 2023-08-11T00:13:35,416 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/72/42/353ccfab1cfdb5d7e0cda90e5a9cb4d3dd24932a153fd3b466e8891ea793/cvi-0.1.0a4-py3-none-any.whl (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2023-08-11T00:13:35,418 Found link https://files.pythonhosted.org/packages/91/6f/fa2f196409f1c29910f5e3168d25240004b9277ea75f042c60dcf621c99b/cvi-0.1.0a4.tar.gz (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.1.0a4 2023-08-11T00:13:35,419 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/b1/1e/da713461fa1f70355c0ff09eb44a5291b40474c6ca1193987d50e5655a59/cvi-0.1.0-py3-none-any.whl (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2023-08-11T00:13:35,420 Found link https://files.pythonhosted.org/packages/93/9b/07fb46eef201e3c37396b82d75c5280ced222cabebaf527af367cd829f5b/cvi-0.1.0.tar.gz (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.1.0 2023-08-11T00:13:35,421 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/46/d6/99dbb4442c3db7e06cb83c3e2700af507c30c54f264c55341efc80dc3d7e/cvi-0.1.1-py3-none-any.whl (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2023-08-11T00:13:35,422 Found link https://files.pythonhosted.org/packages/b0/ba/998362b94c5996635c53367c8f6ebc03774d1e82e3072d73d2a21745e8be/cvi-0.1.1.tar.gz (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.1.1 2023-08-11T00:13:35,423 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/bb/7c/350ccd0aaa609c3d3db04ffe37b3d14fba0c91885e01b4b9d431153d560d/cvi-0.2.0-py3-none-any.whl (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2023-08-11T00:13:35,424 Found link https://files.pythonhosted.org/packages/4c/30/7e5f6486482a9eb5a4773ba70290b7f6860fe7b7cebc248cef06d53f95b4/cvi-0.2.0.tar.gz (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.2.0 2023-08-11T00:13:35,425 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/16/b9/8b8a7685432ff74a83e9ac87ea08a3254687ac3df9b214d9a7ce1036c22a/cvi-0.3.0-py3-none-any.whl (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2023-08-11T00:13:35,426 Found link https://files.pythonhosted.org/packages/98/6c/bad42645f7b2457a2cd1ad18aeb6cdd3de825e00ec218125bc67408fa9bc/cvi-0.3.0.tar.gz (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.3.0 2023-08-11T00:13:35,427 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/21/93/bf31f070a59dda32a915ae67ae50c4b2d664c36e093870840e8bcb6fd71c/cvi-0.4.0-py3-none-any.whl (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2023-08-11T00:13:35,428 Found link https://files.pythonhosted.org/packages/48/2c/e6abc22752c9ac8cc8549a68210eb9d1f0bdf356e81e4d100e68a7108289/cvi-0.4.0.tar.gz (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.4.0 2023-08-11T00:13:35,429 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/32/66/e3fc3ba5082500bf760e452ae4d00df0f441a111b1dd48ad7b4a0502587e/cvi-0.5.0-py3-none-any.whl (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2023-08-11T00:13:35,430 Found link https://files.pythonhosted.org/packages/81/f5/169fe5782889068c4bffdfeb31080d4b5a2d691fe705008236ee480380c1/cvi-0.5.0.tar.gz (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.5.0 2023-08-11T00:13:35,431 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/52/3c/3c8f0876e1b9cf2c060b4492efb6e0dac5b400d41c94c23917e62584bf64/cvi-0.5.1-py3-none-any.whl (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2023-08-11T00:13:35,432 Found link https://files.pythonhosted.org/packages/e5/e2/20ae87c7c088b1517d82006ba99bb6e4563f0647e409d77dd2bbb560b083/cvi-0.5.1.tar.gz (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.5.1 2023-08-11T00:13:35,433 Fetching project page and analyzing links: https://www.piwheels.org/simple/cvi/ 2023-08-11T00:13:35,434 Getting page https://www.piwheels.org/simple/cvi/ 2023-08-11T00:13:35,436 Found index url https://www.piwheels.org/simple/ 2023-08-11T00:13:50,513 WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='www.piwheels.org', port=443): Read timed out. (read timeout=15)")': /simple/cvi/ 2023-08-11T00:14:06,087 WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='www.piwheels.org', port=443): Read timed out. (read timeout=15)")': /simple/cvi/ 2023-08-11T00:14:22,175 WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='www.piwheels.org', port=443): Read timed out. (read timeout=15)")': /simple/cvi/ 2023-08-11T00:14:39,261 WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='www.piwheels.org', port=443): Read timed out. (read timeout=15)")': /simple/cvi/ 2023-08-11T00:14:58,352 WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='www.piwheels.org', port=443): Read timed out. (read timeout=15)")': /simple/cvi/ 2023-08-11T00:15:13,437 Could not fetch URL https://www.piwheels.org/simple/cvi/: connection error: HTTPSConnectionPool(host='www.piwheels.org', port=443): Max retries exceeded with url: /simple/cvi/ (Caused by ReadTimeoutError("HTTPSConnectionPool(host='www.piwheels.org', port=443): Read timed out. (read timeout=15)")) - skipping 2023-08-11T00:15:13,441 Skipping link: not a file: https://www.piwheels.org/simple/cvi/ 2023-08-11T00:15:13,443 Skipping link: not a file: https://pypi.org/simple/cvi/ 2023-08-11T00:15:13,483 Given no hashes to check 1 links for project 'cvi': discarding no candidates 2023-08-11T00:15:13,543 Collecting cvi==0.5.1 2023-08-11T00:15:13,548 Created temporary directory: /tmp/pip-unpack-7j5ai1x2 2023-08-11T00:15:13,718 Downloading cvi-0.5.1.tar.gz (24 kB) 2023-08-11T00:15:13,865 Added cvi==0.5.1 from https://files.pythonhosted.org/packages/e5/e2/20ae87c7c088b1517d82006ba99bb6e4563f0647e409d77dd2bbb560b083/cvi-0.5.1.tar.gz to build tracker '/tmp/pip-build-tracker-1673vzr3' 2023-08-11T00:15:13,872 Created temporary directory: /tmp/pip-build-env-ln52ohp5 2023-08-11T00:15:13,894 Installing build dependencies: started 2023-08-11T00:15:13,896 Running command pip subprocess to install build dependencies 2023-08-11T00:15:16,852 Using pip 23.1.2 from /home/piwheels/.local/lib/python3.7/site-packages/pip (python 3.7) 2023-08-11T00:15:17,768 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-08-11T00:15:34,790 WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='www.piwheels.org', port=443): Read timed out. (read timeout=15)")': /simple/setuptools/ 2023-08-11T00:15:50,376 WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='www.piwheels.org', port=443): Read timed out. (read timeout=15)")': /simple/setuptools/ 2023-08-11T00:15:56,451 WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', OSError(0, 'Error'))': /simple/setuptools/ 2023-08-11T00:16:03,527 WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', OSError(0, 'Error'))': /simple/setuptools/ 2023-08-11T00:16:22,617 WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='www.piwheels.org', port=443): Read timed out. (read timeout=15)")': /simple/setuptools/ 2023-08-11T00:16:28,348 Collecting setuptools>=42 2023-08-11T00:16:28,394 Using cached setuptools-68.0.0-py3-none-any.whl (804 kB) 2023-08-11T00:16:33,790 Installing collected packages: setuptools 2023-08-11T00:16:38,005 Successfully installed setuptools-68.0.0 2023-08-11T00:16:38,039 [notice] A new release of pip is available: 23.1.2 -> 23.2.1 2023-08-11T00:16:38,039 [notice] To update, run: python3 -m pip install --upgrade pip 2023-08-11T00:16:38,439 Installing build dependencies: finished with status 'done' 2023-08-11T00:16:38,453 Getting requirements to build wheel: started 2023-08-11T00:16:38,455 Running command Getting requirements to build wheel 2023-08-11T00:16:39,959 /tmp/pip-build-env-ln52ohp5/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `readme` defined outside of `pyproject.toml` would be ignored. 2023-08-11T00:16:39,960 !! 2023-08-11T00:16:39,961 ******************************************************************************** 2023-08-11T00:16:39,961 ########################################################################## 2023-08-11T00:16:39,962 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-11T00:16:39,962 ########################################################################## 2023-08-11T00:16:39,963 The following seems to be defined outside of `pyproject.toml`: 2023-08-11T00:16:39,964 `readme = "# cvi\n\nA Python package implementing both batch and incremental cluster validity indices (CVIs).\n\n| **Stable Docs** | **Dev Docs** | **Build Status** | **Coverage** |\n|:----------------:|:------------:|:----------------:|:------------:|\n| [![Stable][docs-stable-img]][docs-stable-url] | [![Dev][docs-dev-img]][docs-dev-url]| [![Build Status][ci-img]][ci-url] | [![Codecov][codecov-img]][codecov-url] |\n| **Version** | **Issues** | **Downloads** | **Zenodo DOI** |\n| [![version][version-img]][version-url] | [![issues][issues-img]][issues-url] | [![Downloads][downloads-img]][downloads-url] | [![DOI][zenodo-img]][zenodo-url] |\n\n[downloads-img]: https://static.pepy.tech/badge/cvi\n[downloads-url]: https://pepy.tech/project/cvi\n\n[zenodo-img]: https://zenodo.org/badge/526280198.svg\n[zenodo-url]: https://zenodo.org/badge/latestdoi/526280198\n\n[docs-stable-img]: https://readthedocs.org/projects/cluster-validity-indices/badge/?version=latest\n[docs-stable-url]: https://cluster-validity-indices.readthedocs.io/en/latest/?badge=latest\n\n[docs-dev-img]: https://readthedocs.org/projects/cluster-validity-indices/badge/?version=develop\n[docs-dev-url]: https://cluster-validity-indices.readthedocs.io/en/develop/?badge=develop\n\n[ci-img]: https://github.com/AP6YC/cvi/actions/workflows/Test.yml/badge.svg\n[ci-url]: https://github.com/AP6YC/cvi/actions/workflows/Test.yml\n\n[codecov-img]: https://codecov.io/gh/AP6YC/cvi/branch/main/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/AP6YC/cvi\n\n[version-img]: https://img.shields.io/pypi/v/cvi.svg\n[version-url]: https://pypi.org/project/cvi\n\n[issues-img]: https://img.shields.io/github/issues/AP6YC/cvi?style=flat\n[issues-url]: https://github.com/AP6YC/cvi/issues\n\n## Table of Contents\n\n- [cvi](#cvi)\n - [Table of Contents](#table-of-contents)\n - [Cluster Validity Indices](#cluster-validity-indices)\n - [Installation](#installation)\n - [Usage](#usage)\n - [Quickstart](#quickstart)\n - [Detailed Usage](#detailed-usage)\n - [Implemented CVIs](#implemented-cvis)\n - [History](#history)\n - [Acknowledgements](#acknowledgements)\n - [Derivation](#derivation)\n - [Authors](#authors)\n - [Related Projects](#related-projects)\n\n## Cluster Validity Indices\n\nSay you have a clustering algorithm that clusters a set of samples containing features of some kind and some dimensionality.\nGreat!\nThat was a lot of work, and you should feel accomplished.\nBut how do you know that the algorithm performed _well_?\nBy definition, you wouldn't have the _true_ label belonging to each sample (if one could even exist in your context), just the label prescribed by your clustering algorithm.\n\n**Enter Cluster Validity Indices (CVIs)**.\n\nCVIs are metrics of cluster partitioning when true cluster labels are unavailable.\nEach operates on only the information available (i.e., the provided samples of features and the labels prescribed by the clustering algorithm) and produces a _metric_, a number that goes up or down according to how well the CVI believes the clustering algorithm appears to, well, _cluster_.\nClustering well in this context means correctly partitioning (i.e., separating) the data rather than prescribing too many different clusters (over partitioning) or too few (under partitioning).\nEvery CVI itself also behaves differently in terms of the range and scale of their numbers.\n**Furthermore, each CVI has an original batch implementation and incremental implementation that are equivalent**.\n\nThe `cvi` Python package contains a variety of these batch and incremental CVIs.\n\n## Installation\n\nThe `cvi` package is listed on PyPI, so you may install the latest version with\n\n```python\npip install cvi\n```\n\nYou can also specify a version to install in the usual way with\n\n```python\npip install cvi==v0.5.1\n```\n\nAlternatively, you can manually install a release from the [releases page](https://github.com/AP6YC/cvi/releases) on GitHub.\n\n## Usage\n\n### Quickstart\n\nCreate a CVI object and compute the criterion value in batch with `get_cvi`:\n\n```python\n# Import the library\nimport cvi\n# Create a Calinski-Harabasz (CH) CVI object\nmy_cvi = cvi.CH()\n# Load some data from some clustering algorithm\nsamples, labels = load_some_clustering_data()\n# Compute the final criterion value in batch\ncriterion_value = my_cvi.get_cvi(samples, labels)\n```\n\nor do it incrementally, also with `get_cvi`:\n\n```python\n# Datasets are numpy arrays\nimport numpy as np\n# Create a container for criterion values\nn_samples = len(labels)\ncriterion_values = np.zeros(n_samples)\n# Iterate over the data\nfor ix in range(n_samples):\n criterion_values = my_cvi.get_cvi(samples[ix, :], labels[ix])\n```\n\n### Detailed Usage\n\nThe `cvi` package contains a set of implemented CVIs with batch and incremental update methods.\nEach CVI is a standalone stateful object inheriting from a base class `CVI`, and all `CVI` functions are object methods, such as those that update parameters and return the criterion value.\n\nInstantiate a CVI of you choice with the default constructor:\n\n```python\n# Import the package\nimport cvi\n# Import numpy for some data handling\nimport numpy as np\n\n# Instantiate a Calinski-Harabasz (CH) CVI object\nmy_cvi = cvi.CH()\n```\n\nCVIs are instantiated with their acronyms, with a list of all implemented CVIS being found in the [Implemented CVIs](#implemented-cvis) section.\n\nA batch of data is assumed to be a numpy array of samples and a numpy vector of integer labels.\n\n```python\n# Load some data\nsamples, labels = my_clustering_alg(some_data)\n```\n\n> **NOTE**:\n>\n> The `cvi` package assumes the Numpy **row-major** convention where rows are individual samples and columns are features.\n> A batch dataset is then `[n_samples, n_features]` large, and their corresponding labels are '[n_samples]` large.\n\nYou may compute the final criterion value with a batch update all at once with `CVI.get_cvi`\n\n```python\n# Get the final criterion value in batch mode\ncriterion_value = my_cvi.get_cvi(samples, labels)\n```\n\nor you may get them incrementally with the same method, where you pass instead just a single numpy vector of features and a single integer label.\nThe incremental methods are used automatically based upon the dimensions of the data that is passed.\n\n```python\n# Create a container for the criterion value after each sample\nn_samples = len(labels)\ncriterion_values = np.zeros(n_samples)\n\n# Iterate across the data and store the criterion value over time\nfor ix in range(n_samples):\n sample = samples[ix, :]\n label = labels[ix]\n criterion_values[ix] = my_cvi.get_cvi(sample, label)\n```\n\n> **NOTE**:\n>\n> Currently only using _either_ batch _or_ incremental methods is supported; switching from batch to incremental updates with the same is not yet implemented.\n\n## Implemented CVIs\n\nThe following CVIs have been implemented as of the latest version of `cvi`:\n\n- **CH**: Calinski-Harabasz\n- **cSIL**: Centroid-based Silhouette\n- **DB**: Davies-Bouldin\n- **GD43**: Generalized Dunn's Index 43.\n- **GD53**: Generalized Dunn's Index 53.\n- **PS**: Partition Separation.\n- **rCIP**: (Renyi's) representative Cross Information Potential.\n- **WB**: WB-index.\n- **XB**: Xie-Beni.\n\n## History\n\n- 8/18/2022: Initialize project.\n- 9/8/2022: First release on PyPi and initiate GitFlow.\n\n## Acknowledgements\n\n### Derivation\n\nThe incremental and batch CVI implementations in this package are largely derived from the following Julia language implementations:\n\n- [ClusterValidityIndices.jl](https://github.com/AP6YC/ClusterValidityIndices.jl)\n\n### Authors\n\nThe principal authors of the `cvi` pacakge are:\n\n- Sasha Petrenko \n- Nik Melton \n\n### Related Projects\n\nIf this package is missing something that you need, feel free to check out some related Python cluster validity packages:\n\n- [validclust](https://github.com/crew102/validclust)\n- [clusterval](https://github.com/Nuno09/clusterval)\n"` 2023-08-11T00:16:39,964 According to the spec (see the link below), however, setuptools CANNOT 2023-08-11T00:16:39,965 consider this value unless `readme` is listed as `dynamic`. 2023-08-11T00:16:39,965 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-11T00:16:39,966 For the time being, `setuptools` will still consider the given value (as a 2023-08-11T00:16:39,966 **transitional** measure), but please note that future releases of setuptools will 2023-08-11T00:16:39,967 follow strictly the standard. 2023-08-11T00:16:39,967 To prevent this warning, you can list `readme` under `dynamic` or alternatively 2023-08-11T00:16:39,967 remove the `[project]` table from your file and rely entirely on other means of 2023-08-11T00:16:39,968 configuration. 2023-08-11T00:16:39,968 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-11T00:16:39,969 or your builds will no longer be supported. 2023-08-11T00:16:39,969 ******************************************************************************** 2023-08-11T00:16:39,970 !! 2023-08-11T00:16:39,970 _handle_missing_dynamic(dist, project_table) 2023-08-11T00:16:40,530 running egg_info 2023-08-11T00:16:40,539 writing src/cvi.egg-info/PKG-INFO 2023-08-11T00:16:40,544 writing dependency_links to src/cvi.egg-info/dependency_links.txt 2023-08-11T00:16:40,549 writing requirements to src/cvi.egg-info/requires.txt 2023-08-11T00:16:40,551 writing top-level names to src/cvi.egg-info/top_level.txt 2023-08-11T00:16:40,588 reading manifest file 'src/cvi.egg-info/SOURCES.txt' 2023-08-11T00:16:40,593 adding license file 'LICENSE' 2023-08-11T00:16:40,599 writing manifest file 'src/cvi.egg-info/SOURCES.txt' 2023-08-11T00:16:40,603 /tmp/pip-build-env-ln52ohp5/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `requires-python` defined outside of `pyproject.toml` would be ignored. 2023-08-11T00:16:40,604 !! 2023-08-11T00:16:40,605 ******************************************************************************** 2023-08-11T00:16:40,605 ########################################################################## 2023-08-11T00:16:40,605 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-11T00:16:40,606 ########################################################################## 2023-08-11T00:16:40,607 The following seems to be defined outside of `pyproject.toml`: 2023-08-11T00:16:40,608 `requires-python = =3.6')>` 2023-08-11T00:16:40,609 According to the spec (see the link below), however, setuptools CANNOT 2023-08-11T00:16:40,609 consider this value unless `requires-python` is listed as `dynamic`. 2023-08-11T00:16:40,610 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-11T00:16:40,611 For the time being, `setuptools` will still consider the given value (as a 2023-08-11T00:16:40,612 **transitional** measure), but please note that future releases of setuptools will 2023-08-11T00:16:40,612 follow strictly the standard. 2023-08-11T00:16:40,613 To prevent this warning, you can list `requires-python` under `dynamic` or alternatively 2023-08-11T00:16:40,613 remove the `[project]` table from your file and rely entirely on other means of 2023-08-11T00:16:40,614 configuration. 2023-08-11T00:16:40,615 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-11T00:16:40,615 or your builds will no longer be supported. 2023-08-11T00:16:40,616 ******************************************************************************** 2023-08-11T00:16:40,616 !! 2023-08-11T00:16:40,617 _handle_missing_dynamic(dist, project_table) 2023-08-11T00:16:40,617 /tmp/pip-build-env-ln52ohp5/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `classifiers` defined outside of `pyproject.toml` would be ignored. 2023-08-11T00:16:40,618 !! 2023-08-11T00:16:40,619 ******************************************************************************** 2023-08-11T00:16:40,619 ########################################################################## 2023-08-11T00:16:40,619 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-11T00:16:40,620 ########################################################################## 2023-08-11T00:16:40,621 The following seems to be defined outside of `pyproject.toml`: 2023-08-11T00:16:40,622 `classifiers = ['Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent']` 2023-08-11T00:16:40,622 According to the spec (see the link below), however, setuptools CANNOT 2023-08-11T00:16:40,623 consider this value unless `classifiers` is listed as `dynamic`. 2023-08-11T00:16:40,624 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-11T00:16:40,624 For the time being, `setuptools` will still consider the given value (as a 2023-08-11T00:16:40,625 **transitional** measure), but please note that future releases of setuptools will 2023-08-11T00:16:40,625 follow strictly the standard. 2023-08-11T00:16:40,626 To prevent this warning, you can list `classifiers` under `dynamic` or alternatively 2023-08-11T00:16:40,626 remove the `[project]` table from your file and rely entirely on other means of 2023-08-11T00:16:40,626 configuration. 2023-08-11T00:16:40,627 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-11T00:16:40,628 or your builds will no longer be supported. 2023-08-11T00:16:40,628 ******************************************************************************** 2023-08-11T00:16:40,629 !! 2023-08-11T00:16:40,629 _handle_missing_dynamic(dist, project_table) 2023-08-11T00:16:40,630 /tmp/pip-build-env-ln52ohp5/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `urls` defined outside of `pyproject.toml` would be ignored. 2023-08-11T00:16:40,630 !! 2023-08-11T00:16:40,631 ******************************************************************************** 2023-08-11T00:16:40,631 ########################################################################## 2023-08-11T00:16:40,632 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-11T00:16:40,632 ########################################################################## 2023-08-11T00:16:40,633 The following seems to be defined outside of `pyproject.toml`: 2023-08-11T00:16:40,634 `urls = {'Bug Tracker': 'https://github.com/AP6YC/cvi/issues', 'Documentation': 'https://cluster-validity-indices.readthedocs.io/'}` 2023-08-11T00:16:40,635 According to the spec (see the link below), however, setuptools CANNOT 2023-08-11T00:16:40,635 consider this value unless `urls` is listed as `dynamic`. 2023-08-11T00:16:40,636 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-11T00:16:40,637 For the time being, `setuptools` will still consider the given value (as a 2023-08-11T00:16:40,637 **transitional** measure), but please note that future releases of setuptools will 2023-08-11T00:16:40,638 follow strictly the standard. 2023-08-11T00:16:40,638 To prevent this warning, you can list `urls` under `dynamic` or alternatively 2023-08-11T00:16:40,639 remove the `[project]` table from your file and rely entirely on other means of 2023-08-11T00:16:40,639 configuration. 2023-08-11T00:16:40,640 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-11T00:16:40,640 or your builds will no longer be supported. 2023-08-11T00:16:40,641 ******************************************************************************** 2023-08-11T00:16:40,642 !! 2023-08-11T00:16:40,642 _handle_missing_dynamic(dist, project_table) 2023-08-11T00:16:40,776 Getting requirements to build wheel: finished with status 'done' 2023-08-11T00:16:40,800 Installing backend dependencies: started 2023-08-11T00:16:40,802 Running command pip subprocess to install backend dependencies 2023-08-11T00:16:43,707 Using pip 23.1.2 from /home/piwheels/.local/lib/python3.7/site-packages/pip (python 3.7) 2023-08-11T00:16:44,579 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-08-11T00:16:50,053 WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', OSError(0, 'Error'))': /simple/wheel/ 2023-08-11T00:17:05,639 WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='www.piwheels.org', port=443): Read timed out. (read timeout=15)")': /simple/wheel/ 2023-08-11T00:17:21,722 WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='www.piwheels.org', port=443): Read timed out. (read timeout=15)")': /simple/wheel/ 2023-08-11T00:17:28,797 WARNING: Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', OSError(0, 'Error'))': /simple/wheel/ 2023-08-11T00:17:47,880 WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='www.piwheels.org', port=443): Read timed out. (read timeout=15)")': /simple/wheel/ 2023-08-11T00:17:53,064 Collecting wheel 2023-08-11T00:17:53,087 Using cached wheel-0.41.1-py3-none-any.whl (64 kB) 2023-08-11T00:17:57,727 Installing collected packages: wheel 2023-08-11T00:17:58,173 Creating /tmp/pip-build-env-ln52ohp5/normal/bin 2023-08-11T00:17:58,178 changing mode of /tmp/pip-build-env-ln52ohp5/normal/bin/wheel to 755 2023-08-11T00:17:58,205 Successfully installed wheel-0.41.1 2023-08-11T00:17:58,239 [notice] A new release of pip is available: 23.1.2 -> 23.2.1 2023-08-11T00:17:58,240 [notice] To update, run: python3 -m pip install --upgrade pip 2023-08-11T00:17:58,598 Installing backend dependencies: finished with status 'done' 2023-08-11T00:17:58,604 Created temporary directory: /tmp/pip-modern-metadata-742jx0gy 2023-08-11T00:17:58,611 Preparing metadata (pyproject.toml): started 2023-08-11T00:17:58,613 Running command Preparing metadata (pyproject.toml) 2023-08-11T00:17:59,985 /tmp/pip-build-env-ln52ohp5/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `readme` defined outside of `pyproject.toml` would be ignored. 2023-08-11T00:17:59,986 !! 2023-08-11T00:17:59,987 ******************************************************************************** 2023-08-11T00:17:59,987 ########################################################################## 2023-08-11T00:17:59,987 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-11T00:17:59,988 ########################################################################## 2023-08-11T00:17:59,988 The following seems to be defined outside of `pyproject.toml`: 2023-08-11T00:17:59,989 `readme = "# cvi\n\nA Python package implementing both batch and incremental cluster validity indices (CVIs).\n\n| **Stable Docs** | **Dev Docs** | **Build Status** | **Coverage** |\n|:----------------:|:------------:|:----------------:|:------------:|\n| [![Stable][docs-stable-img]][docs-stable-url] | [![Dev][docs-dev-img]][docs-dev-url]| [![Build Status][ci-img]][ci-url] | [![Codecov][codecov-img]][codecov-url] |\n| **Version** | **Issues** | **Downloads** | **Zenodo DOI** |\n| [![version][version-img]][version-url] | [![issues][issues-img]][issues-url] | [![Downloads][downloads-img]][downloads-url] | [![DOI][zenodo-img]][zenodo-url] |\n\n[downloads-img]: https://static.pepy.tech/badge/cvi\n[downloads-url]: https://pepy.tech/project/cvi\n\n[zenodo-img]: https://zenodo.org/badge/526280198.svg\n[zenodo-url]: https://zenodo.org/badge/latestdoi/526280198\n\n[docs-stable-img]: https://readthedocs.org/projects/cluster-validity-indices/badge/?version=latest\n[docs-stable-url]: https://cluster-validity-indices.readthedocs.io/en/latest/?badge=latest\n\n[docs-dev-img]: https://readthedocs.org/projects/cluster-validity-indices/badge/?version=develop\n[docs-dev-url]: https://cluster-validity-indices.readthedocs.io/en/develop/?badge=develop\n\n[ci-img]: https://github.com/AP6YC/cvi/actions/workflows/Test.yml/badge.svg\n[ci-url]: https://github.com/AP6YC/cvi/actions/workflows/Test.yml\n\n[codecov-img]: https://codecov.io/gh/AP6YC/cvi/branch/main/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/AP6YC/cvi\n\n[version-img]: https://img.shields.io/pypi/v/cvi.svg\n[version-url]: https://pypi.org/project/cvi\n\n[issues-img]: https://img.shields.io/github/issues/AP6YC/cvi?style=flat\n[issues-url]: https://github.com/AP6YC/cvi/issues\n\n## Table of Contents\n\n- [cvi](#cvi)\n - [Table of Contents](#table-of-contents)\n - [Cluster Validity Indices](#cluster-validity-indices)\n - [Installation](#installation)\n - [Usage](#usage)\n - [Quickstart](#quickstart)\n - [Detailed Usage](#detailed-usage)\n - [Implemented CVIs](#implemented-cvis)\n - [History](#history)\n - [Acknowledgements](#acknowledgements)\n - [Derivation](#derivation)\n - [Authors](#authors)\n - [Related Projects](#related-projects)\n\n## Cluster Validity Indices\n\nSay you have a clustering algorithm that clusters a set of samples containing features of some kind and some dimensionality.\nGreat!\nThat was a lot of work, and you should feel accomplished.\nBut how do you know that the algorithm performed _well_?\nBy definition, you wouldn't have the _true_ label belonging to each sample (if one could even exist in your context), just the label prescribed by your clustering algorithm.\n\n**Enter Cluster Validity Indices (CVIs)**.\n\nCVIs are metrics of cluster partitioning when true cluster labels are unavailable.\nEach operates on only the information available (i.e., the provided samples of features and the labels prescribed by the clustering algorithm) and produces a _metric_, a number that goes up or down according to how well the CVI believes the clustering algorithm appears to, well, _cluster_.\nClustering well in this context means correctly partitioning (i.e., separating) the data rather than prescribing too many different clusters (over partitioning) or too few (under partitioning).\nEvery CVI itself also behaves differently in terms of the range and scale of their numbers.\n**Furthermore, each CVI has an original batch implementation and incremental implementation that are equivalent**.\n\nThe `cvi` Python package contains a variety of these batch and incremental CVIs.\n\n## Installation\n\nThe `cvi` package is listed on PyPI, so you may install the latest version with\n\n```python\npip install cvi\n```\n\nYou can also specify a version to install in the usual way with\n\n```python\npip install cvi==v0.5.1\n```\n\nAlternatively, you can manually install a release from the [releases page](https://github.com/AP6YC/cvi/releases) on GitHub.\n\n## Usage\n\n### Quickstart\n\nCreate a CVI object and compute the criterion value in batch with `get_cvi`:\n\n```python\n# Import the library\nimport cvi\n# Create a Calinski-Harabasz (CH) CVI object\nmy_cvi = cvi.CH()\n# Load some data from some clustering algorithm\nsamples, labels = load_some_clustering_data()\n# Compute the final criterion value in batch\ncriterion_value = my_cvi.get_cvi(samples, labels)\n```\n\nor do it incrementally, also with `get_cvi`:\n\n```python\n# Datasets are numpy arrays\nimport numpy as np\n# Create a container for criterion values\nn_samples = len(labels)\ncriterion_values = np.zeros(n_samples)\n# Iterate over the data\nfor ix in range(n_samples):\n criterion_values = my_cvi.get_cvi(samples[ix, :], labels[ix])\n```\n\n### Detailed Usage\n\nThe `cvi` package contains a set of implemented CVIs with batch and incremental update methods.\nEach CVI is a standalone stateful object inheriting from a base class `CVI`, and all `CVI` functions are object methods, such as those that update parameters and return the criterion value.\n\nInstantiate a CVI of you choice with the default constructor:\n\n```python\n# Import the package\nimport cvi\n# Import numpy for some data handling\nimport numpy as np\n\n# Instantiate a Calinski-Harabasz (CH) CVI object\nmy_cvi = cvi.CH()\n```\n\nCVIs are instantiated with their acronyms, with a list of all implemented CVIS being found in the [Implemented CVIs](#implemented-cvis) section.\n\nA batch of data is assumed to be a numpy array of samples and a numpy vector of integer labels.\n\n```python\n# Load some data\nsamples, labels = my_clustering_alg(some_data)\n```\n\n> **NOTE**:\n>\n> The `cvi` package assumes the Numpy **row-major** convention where rows are individual samples and columns are features.\n> A batch dataset is then `[n_samples, n_features]` large, and their corresponding labels are '[n_samples]` large.\n\nYou may compute the final criterion value with a batch update all at once with `CVI.get_cvi`\n\n```python\n# Get the final criterion value in batch mode\ncriterion_value = my_cvi.get_cvi(samples, labels)\n```\n\nor you may get them incrementally with the same method, where you pass instead just a single numpy vector of features and a single integer label.\nThe incremental methods are used automatically based upon the dimensions of the data that is passed.\n\n```python\n# Create a container for the criterion value after each sample\nn_samples = len(labels)\ncriterion_values = np.zeros(n_samples)\n\n# Iterate across the data and store the criterion value over time\nfor ix in range(n_samples):\n sample = samples[ix, :]\n label = labels[ix]\n criterion_values[ix] = my_cvi.get_cvi(sample, label)\n```\n\n> **NOTE**:\n>\n> Currently only using _either_ batch _or_ incremental methods is supported; switching from batch to incremental updates with the same is not yet implemented.\n\n## Implemented CVIs\n\nThe following CVIs have been implemented as of the latest version of `cvi`:\n\n- **CH**: Calinski-Harabasz\n- **cSIL**: Centroid-based Silhouette\n- **DB**: Davies-Bouldin\n- **GD43**: Generalized Dunn's Index 43.\n- **GD53**: Generalized Dunn's Index 53.\n- **PS**: Partition Separation.\n- **rCIP**: (Renyi's) representative Cross Information Potential.\n- **WB**: WB-index.\n- **XB**: Xie-Beni.\n\n## History\n\n- 8/18/2022: Initialize project.\n- 9/8/2022: First release on PyPi and initiate GitFlow.\n\n## Acknowledgements\n\n### Derivation\n\nThe incremental and batch CVI implementations in this package are largely derived from the following Julia language implementations:\n\n- [ClusterValidityIndices.jl](https://github.com/AP6YC/ClusterValidityIndices.jl)\n\n### Authors\n\nThe principal authors of the `cvi` pacakge are:\n\n- Sasha Petrenko \n- Nik Melton \n\n### Related Projects\n\nIf this package is missing something that you need, feel free to check out some related Python cluster validity packages:\n\n- [validclust](https://github.com/crew102/validclust)\n- [clusterval](https://github.com/Nuno09/clusterval)\n"` 2023-08-11T00:17:59,990 According to the spec (see the link below), however, setuptools CANNOT 2023-08-11T00:17:59,990 consider this value unless `readme` is listed as `dynamic`. 2023-08-11T00:17:59,991 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-11T00:17:59,992 For the time being, `setuptools` will still consider the given value (as a 2023-08-11T00:17:59,992 **transitional** measure), but please note that future releases of setuptools will 2023-08-11T00:17:59,992 follow strictly the standard. 2023-08-11T00:17:59,993 To prevent this warning, you can list `readme` under `dynamic` or alternatively 2023-08-11T00:17:59,993 remove the `[project]` table from your file and rely entirely on other means of 2023-08-11T00:17:59,993 configuration. 2023-08-11T00:17:59,994 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-11T00:17:59,994 or your builds will no longer be supported. 2023-08-11T00:17:59,995 ******************************************************************************** 2023-08-11T00:17:59,995 !! 2023-08-11T00:17:59,996 _handle_missing_dynamic(dist, project_table) 2023-08-11T00:18:00,671 running dist_info 2023-08-11T00:18:00,683 creating /tmp/pip-modern-metadata-742jx0gy/cvi.egg-info 2023-08-11T00:18:00,693 writing /tmp/pip-modern-metadata-742jx0gy/cvi.egg-info/PKG-INFO 2023-08-11T00:18:00,697 writing dependency_links to /tmp/pip-modern-metadata-742jx0gy/cvi.egg-info/dependency_links.txt 2023-08-11T00:18:00,701 writing requirements to /tmp/pip-modern-metadata-742jx0gy/cvi.egg-info/requires.txt 2023-08-11T00:18:00,703 writing top-level names to /tmp/pip-modern-metadata-742jx0gy/cvi.egg-info/top_level.txt 2023-08-11T00:18:00,706 writing manifest file '/tmp/pip-modern-metadata-742jx0gy/cvi.egg-info/SOURCES.txt' 2023-08-11T00:18:00,744 reading manifest file '/tmp/pip-modern-metadata-742jx0gy/cvi.egg-info/SOURCES.txt' 2023-08-11T00:18:00,748 adding license file 'LICENSE' 2023-08-11T00:18:00,754 writing manifest file '/tmp/pip-modern-metadata-742jx0gy/cvi.egg-info/SOURCES.txt' 2023-08-11T00:18:00,756 creating '/tmp/pip-modern-metadata-742jx0gy/cvi-0.5.1.dist-info' 2023-08-11T00:18:00,822 /tmp/pip-build-env-ln52ohp5/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `requires-python` defined outside of `pyproject.toml` would be ignored. 2023-08-11T00:18:00,823 !! 2023-08-11T00:18:00,824 ******************************************************************************** 2023-08-11T00:18:00,824 ########################################################################## 2023-08-11T00:18:00,824 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-11T00:18:00,825 ########################################################################## 2023-08-11T00:18:00,826 The following seems to be defined outside of `pyproject.toml`: 2023-08-11T00:18:00,827 `requires-python = =3.6')>` 2023-08-11T00:18:00,828 According to the spec (see the link below), however, setuptools CANNOT 2023-08-11T00:18:00,828 consider this value unless `requires-python` is listed as `dynamic`. 2023-08-11T00:18:00,829 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-11T00:18:00,830 For the time being, `setuptools` will still consider the given value (as a 2023-08-11T00:18:00,830 **transitional** measure), but please note that future releases of setuptools will 2023-08-11T00:18:00,831 follow strictly the standard. 2023-08-11T00:18:00,832 To prevent this warning, you can list `requires-python` under `dynamic` or alternatively 2023-08-11T00:18:00,832 remove the `[project]` table from your file and rely entirely on other means of 2023-08-11T00:18:00,833 configuration. 2023-08-11T00:18:00,833 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-11T00:18:00,834 or your builds will no longer be supported. 2023-08-11T00:18:00,834 ******************************************************************************** 2023-08-11T00:18:00,835 !! 2023-08-11T00:18:00,836 _handle_missing_dynamic(dist, project_table) 2023-08-11T00:18:00,836 /tmp/pip-build-env-ln52ohp5/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `classifiers` defined outside of `pyproject.toml` would be ignored. 2023-08-11T00:18:00,837 !! 2023-08-11T00:18:00,837 ******************************************************************************** 2023-08-11T00:18:00,838 ########################################################################## 2023-08-11T00:18:00,838 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-11T00:18:00,839 ########################################################################## 2023-08-11T00:18:00,839 The following seems to be defined outside of `pyproject.toml`: 2023-08-11T00:18:00,840 `classifiers = ['Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent']` 2023-08-11T00:18:00,841 According to the spec (see the link below), however, setuptools CANNOT 2023-08-11T00:18:00,841 consider this value unless `classifiers` is listed as `dynamic`. 2023-08-11T00:18:00,842 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-11T00:18:00,843 For the time being, `setuptools` will still consider the given value (as a 2023-08-11T00:18:00,843 **transitional** measure), but please note that future releases of setuptools will 2023-08-11T00:18:00,844 follow strictly the standard. 2023-08-11T00:18:00,844 To prevent this warning, you can list `classifiers` under `dynamic` or alternatively 2023-08-11T00:18:00,845 remove the `[project]` table from your file and rely entirely on other means of 2023-08-11T00:18:00,845 configuration. 2023-08-11T00:18:00,846 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-11T00:18:00,846 or your builds will no longer be supported. 2023-08-11T00:18:00,847 ******************************************************************************** 2023-08-11T00:18:00,848 !! 2023-08-11T00:18:00,848 _handle_missing_dynamic(dist, project_table) 2023-08-11T00:18:00,848 /tmp/pip-build-env-ln52ohp5/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `urls` defined outside of `pyproject.toml` would be ignored. 2023-08-11T00:18:00,849 !! 2023-08-11T00:18:00,849 ******************************************************************************** 2023-08-11T00:18:00,850 ########################################################################## 2023-08-11T00:18:00,850 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-11T00:18:00,851 ########################################################################## 2023-08-11T00:18:00,852 The following seems to be defined outside of `pyproject.toml`: 2023-08-11T00:18:00,853 `urls = {'Bug Tracker': 'https://github.com/AP6YC/cvi/issues', 'Documentation': 'https://cluster-validity-indices.readthedocs.io/'}` 2023-08-11T00:18:00,854 According to the spec (see the link below), however, setuptools CANNOT 2023-08-11T00:18:00,854 consider this value unless `urls` is listed as `dynamic`. 2023-08-11T00:18:00,855 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-11T00:18:00,856 For the time being, `setuptools` will still consider the given value (as a 2023-08-11T00:18:00,856 **transitional** measure), but please note that future releases of setuptools will 2023-08-11T00:18:00,856 follow strictly the standard. 2023-08-11T00:18:00,857 To prevent this warning, you can list `urls` under `dynamic` or alternatively 2023-08-11T00:18:00,858 remove the `[project]` table from your file and rely entirely on other means of 2023-08-11T00:18:00,858 configuration. 2023-08-11T00:18:00,859 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-11T00:18:00,859 or your builds will no longer be supported. 2023-08-11T00:18:00,859 ******************************************************************************** 2023-08-11T00:18:00,860 !! 2023-08-11T00:18:00,861 _handle_missing_dynamic(dist, project_table) 2023-08-11T00:18:01,002 Preparing metadata (pyproject.toml): finished with status 'done' 2023-08-11T00:18:01,018 Source in /tmp/pip-wheel-7pkvmgyw/cvi_c6c1b6cd84b648b691931070b8bc52fa has version 0.5.1, which satisfies requirement cvi==0.5.1 from https://files.pythonhosted.org/packages/e5/e2/20ae87c7c088b1517d82006ba99bb6e4563f0647e409d77dd2bbb560b083/cvi-0.5.1.tar.gz 2023-08-11T00:18:01,020 Removed cvi==0.5.1 from https://files.pythonhosted.org/packages/e5/e2/20ae87c7c088b1517d82006ba99bb6e4563f0647e409d77dd2bbb560b083/cvi-0.5.1.tar.gz from build tracker '/tmp/pip-build-tracker-1673vzr3' 2023-08-11T00:18:01,035 Created temporary directory: /tmp/pip-unpack-w332jd0x 2023-08-11T00:18:01,036 Building wheels for collected packages: cvi 2023-08-11T00:18:01,045 Created temporary directory: /tmp/pip-wheel-dxhpba84 2023-08-11T00:18:01,045 Destination directory: /tmp/pip-wheel-dxhpba84 2023-08-11T00:18:01,050 Building wheel for cvi (pyproject.toml): started 2023-08-11T00:18:01,052 Running command Building wheel for cvi (pyproject.toml) 2023-08-11T00:18:02,325 /tmp/pip-build-env-ln52ohp5/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `readme` defined outside of `pyproject.toml` would be ignored. 2023-08-11T00:18:02,326 !! 2023-08-11T00:18:02,327 ******************************************************************************** 2023-08-11T00:18:02,327 ########################################################################## 2023-08-11T00:18:02,327 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-11T00:18:02,328 ########################################################################## 2023-08-11T00:18:02,328 The following seems to be defined outside of `pyproject.toml`: 2023-08-11T00:18:02,329 `readme = "# cvi\n\nA Python package implementing both batch and incremental cluster validity indices (CVIs).\n\n| **Stable Docs** | **Dev Docs** | **Build Status** | **Coverage** |\n|:----------------:|:------------:|:----------------:|:------------:|\n| [![Stable][docs-stable-img]][docs-stable-url] | [![Dev][docs-dev-img]][docs-dev-url]| [![Build Status][ci-img]][ci-url] | [![Codecov][codecov-img]][codecov-url] |\n| **Version** | **Issues** | **Downloads** | **Zenodo DOI** |\n| [![version][version-img]][version-url] | [![issues][issues-img]][issues-url] | [![Downloads][downloads-img]][downloads-url] | [![DOI][zenodo-img]][zenodo-url] |\n\n[downloads-img]: https://static.pepy.tech/badge/cvi\n[downloads-url]: https://pepy.tech/project/cvi\n\n[zenodo-img]: https://zenodo.org/badge/526280198.svg\n[zenodo-url]: https://zenodo.org/badge/latestdoi/526280198\n\n[docs-stable-img]: https://readthedocs.org/projects/cluster-validity-indices/badge/?version=latest\n[docs-stable-url]: https://cluster-validity-indices.readthedocs.io/en/latest/?badge=latest\n\n[docs-dev-img]: https://readthedocs.org/projects/cluster-validity-indices/badge/?version=develop\n[docs-dev-url]: https://cluster-validity-indices.readthedocs.io/en/develop/?badge=develop\n\n[ci-img]: https://github.com/AP6YC/cvi/actions/workflows/Test.yml/badge.svg\n[ci-url]: https://github.com/AP6YC/cvi/actions/workflows/Test.yml\n\n[codecov-img]: https://codecov.io/gh/AP6YC/cvi/branch/main/graph/badge.svg\n[codecov-url]: https://codecov.io/gh/AP6YC/cvi\n\n[version-img]: https://img.shields.io/pypi/v/cvi.svg\n[version-url]: https://pypi.org/project/cvi\n\n[issues-img]: https://img.shields.io/github/issues/AP6YC/cvi?style=flat\n[issues-url]: https://github.com/AP6YC/cvi/issues\n\n## Table of Contents\n\n- [cvi](#cvi)\n - [Table of Contents](#table-of-contents)\n - [Cluster Validity Indices](#cluster-validity-indices)\n - [Installation](#installation)\n - [Usage](#usage)\n - [Quickstart](#quickstart)\n - [Detailed Usage](#detailed-usage)\n - [Implemented CVIs](#implemented-cvis)\n - [History](#history)\n - [Acknowledgements](#acknowledgements)\n - [Derivation](#derivation)\n - [Authors](#authors)\n - [Related Projects](#related-projects)\n\n## Cluster Validity Indices\n\nSay you have a clustering algorithm that clusters a set of samples containing features of some kind and some dimensionality.\nGreat!\nThat was a lot of work, and you should feel accomplished.\nBut how do you know that the algorithm performed _well_?\nBy definition, you wouldn't have the _true_ label belonging to each sample (if one could even exist in your context), just the label prescribed by your clustering algorithm.\n\n**Enter Cluster Validity Indices (CVIs)**.\n\nCVIs are metrics of cluster partitioning when true cluster labels are unavailable.\nEach operates on only the information available (i.e., the provided samples of features and the labels prescribed by the clustering algorithm) and produces a _metric_, a number that goes up or down according to how well the CVI believes the clustering algorithm appears to, well, _cluster_.\nClustering well in this context means correctly partitioning (i.e., separating) the data rather than prescribing too many different clusters (over partitioning) or too few (under partitioning).\nEvery CVI itself also behaves differently in terms of the range and scale of their numbers.\n**Furthermore, each CVI has an original batch implementation and incremental implementation that are equivalent**.\n\nThe `cvi` Python package contains a variety of these batch and incremental CVIs.\n\n## Installation\n\nThe `cvi` package is listed on PyPI, so you may install the latest version with\n\n```python\npip install cvi\n```\n\nYou can also specify a version to install in the usual way with\n\n```python\npip install cvi==v0.5.1\n```\n\nAlternatively, you can manually install a release from the [releases page](https://github.com/AP6YC/cvi/releases) on GitHub.\n\n## Usage\n\n### Quickstart\n\nCreate a CVI object and compute the criterion value in batch with `get_cvi`:\n\n```python\n# Import the library\nimport cvi\n# Create a Calinski-Harabasz (CH) CVI object\nmy_cvi = cvi.CH()\n# Load some data from some clustering algorithm\nsamples, labels = load_some_clustering_data()\n# Compute the final criterion value in batch\ncriterion_value = my_cvi.get_cvi(samples, labels)\n```\n\nor do it incrementally, also with `get_cvi`:\n\n```python\n# Datasets are numpy arrays\nimport numpy as np\n# Create a container for criterion values\nn_samples = len(labels)\ncriterion_values = np.zeros(n_samples)\n# Iterate over the data\nfor ix in range(n_samples):\n criterion_values = my_cvi.get_cvi(samples[ix, :], labels[ix])\n```\n\n### Detailed Usage\n\nThe `cvi` package contains a set of implemented CVIs with batch and incremental update methods.\nEach CVI is a standalone stateful object inheriting from a base class `CVI`, and all `CVI` functions are object methods, such as those that update parameters and return the criterion value.\n\nInstantiate a CVI of you choice with the default constructor:\n\n```python\n# Import the package\nimport cvi\n# Import numpy for some data handling\nimport numpy as np\n\n# Instantiate a Calinski-Harabasz (CH) CVI object\nmy_cvi = cvi.CH()\n```\n\nCVIs are instantiated with their acronyms, with a list of all implemented CVIS being found in the [Implemented CVIs](#implemented-cvis) section.\n\nA batch of data is assumed to be a numpy array of samples and a numpy vector of integer labels.\n\n```python\n# Load some data\nsamples, labels = my_clustering_alg(some_data)\n```\n\n> **NOTE**:\n>\n> The `cvi` package assumes the Numpy **row-major** convention where rows are individual samples and columns are features.\n> A batch dataset is then `[n_samples, n_features]` large, and their corresponding labels are '[n_samples]` large.\n\nYou may compute the final criterion value with a batch update all at once with `CVI.get_cvi`\n\n```python\n# Get the final criterion value in batch mode\ncriterion_value = my_cvi.get_cvi(samples, labels)\n```\n\nor you may get them incrementally with the same method, where you pass instead just a single numpy vector of features and a single integer label.\nThe incremental methods are used automatically based upon the dimensions of the data that is passed.\n\n```python\n# Create a container for the criterion value after each sample\nn_samples = len(labels)\ncriterion_values = np.zeros(n_samples)\n\n# Iterate across the data and store the criterion value over time\nfor ix in range(n_samples):\n sample = samples[ix, :]\n label = labels[ix]\n criterion_values[ix] = my_cvi.get_cvi(sample, label)\n```\n\n> **NOTE**:\n>\n> Currently only using _either_ batch _or_ incremental methods is supported; switching from batch to incremental updates with the same is not yet implemented.\n\n## Implemented CVIs\n\nThe following CVIs have been implemented as of the latest version of `cvi`:\n\n- **CH**: Calinski-Harabasz\n- **cSIL**: Centroid-based Silhouette\n- **DB**: Davies-Bouldin\n- **GD43**: Generalized Dunn's Index 43.\n- **GD53**: Generalized Dunn's Index 53.\n- **PS**: Partition Separation.\n- **rCIP**: (Renyi's) representative Cross Information Potential.\n- **WB**: WB-index.\n- **XB**: Xie-Beni.\n\n## History\n\n- 8/18/2022: Initialize project.\n- 9/8/2022: First release on PyPi and initiate GitFlow.\n\n## Acknowledgements\n\n### Derivation\n\nThe incremental and batch CVI implementations in this package are largely derived from the following Julia language implementations:\n\n- [ClusterValidityIndices.jl](https://github.com/AP6YC/ClusterValidityIndices.jl)\n\n### Authors\n\nThe principal authors of the `cvi` pacakge are:\n\n- Sasha Petrenko \n- Nik Melton \n\n### Related Projects\n\nIf this package is missing something that you need, feel free to check out some related Python cluster validity packages:\n\n- [validclust](https://github.com/crew102/validclust)\n- [clusterval](https://github.com/Nuno09/clusterval)\n"` 2023-08-11T00:18:02,330 According to the spec (see the link below), however, setuptools CANNOT 2023-08-11T00:18:02,330 consider this value unless `readme` is listed as `dynamic`. 2023-08-11T00:18:02,331 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-11T00:18:02,332 For the time being, `setuptools` will still consider the given value (as a 2023-08-11T00:18:02,332 **transitional** measure), but please note that future releases of setuptools will 2023-08-11T00:18:02,332 follow strictly the standard. 2023-08-11T00:18:02,333 To prevent this warning, you can list `readme` under `dynamic` or alternatively 2023-08-11T00:18:02,333 remove the `[project]` table from your file and rely entirely on other means of 2023-08-11T00:18:02,334 configuration. 2023-08-11T00:18:02,334 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-11T00:18:02,335 or your builds will no longer be supported. 2023-08-11T00:18:02,335 ******************************************************************************** 2023-08-11T00:18:02,335 !! 2023-08-11T00:18:02,336 _handle_missing_dynamic(dist, project_table) 2023-08-11T00:18:02,952 running bdist_wheel 2023-08-11T00:18:02,994 running build 2023-08-11T00:18:02,995 running build_py 2023-08-11T00:18:03,006 creating build 2023-08-11T00:18:03,007 creating build/lib 2023-08-11T00:18:03,008 creating build/lib/cvi 2023-08-11T00:18:03,010 copying src/cvi/__init__.py -> build/lib/cvi 2023-08-11T00:18:03,017 creating build/lib/cvi/modules 2023-08-11T00:18:03,019 copying src/cvi/modules/GD43.py -> build/lib/cvi/modules 2023-08-11T00:18:03,024 copying src/cvi/modules/GD53.py -> build/lib/cvi/modules 2023-08-11T00:18:03,028 copying src/cvi/modules/XB.py -> build/lib/cvi/modules 2023-08-11T00:18:03,033 copying src/cvi/modules/CH.py -> build/lib/cvi/modules 2023-08-11T00:18:03,037 copying src/cvi/modules/cSIL.py -> build/lib/cvi/modules 2023-08-11T00:18:03,041 copying src/cvi/modules/PS.py -> build/lib/cvi/modules 2023-08-11T00:18:03,045 copying src/cvi/modules/_base.py -> build/lib/cvi/modules 2023-08-11T00:18:03,049 copying src/cvi/modules/WB.py -> build/lib/cvi/modules 2023-08-11T00:18:03,054 copying src/cvi/modules/DB.py -> build/lib/cvi/modules 2023-08-11T00:18:03,058 copying src/cvi/modules/rCIP.py -> build/lib/cvi/modules 2023-08-11T00:18:03,062 copying src/cvi/modules/__init__.py -> build/lib/cvi/modules 2023-08-11T00:18:03,067 creating build/lib/cvi/compat 2023-08-11T00:18:03,068 copying src/cvi/compat/v0.py -> build/lib/cvi/compat 2023-08-11T00:18:03,073 copying src/cvi/compat/__init__.py -> build/lib/cvi/compat 2023-08-11T00:18:03,077 running egg_info 2023-08-11T00:18:03,086 writing src/cvi.egg-info/PKG-INFO 2023-08-11T00:18:03,090 writing dependency_links to src/cvi.egg-info/dependency_links.txt 2023-08-11T00:18:03,094 writing requirements to src/cvi.egg-info/requires.txt 2023-08-11T00:18:03,096 writing top-level names to src/cvi.egg-info/top_level.txt 2023-08-11T00:18:03,115 reading manifest file 'src/cvi.egg-info/SOURCES.txt' 2023-08-11T00:18:03,120 adding license file 'LICENSE' 2023-08-11T00:18:03,126 writing manifest file 'src/cvi.egg-info/SOURCES.txt' 2023-08-11T00:18:03,152 installing to build/bdist.linux-armv7l/wheel 2023-08-11T00:18:03,152 running install 2023-08-11T00:18:03,213 running install_lib 2023-08-11T00:18:03,224 creating build/bdist.linux-armv7l 2023-08-11T00:18:03,225 creating build/bdist.linux-armv7l/wheel 2023-08-11T00:18:03,228 creating build/bdist.linux-armv7l/wheel/cvi 2023-08-11T00:18:03,231 creating build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-11T00:18:03,233 copying build/lib/cvi/modules/GD43.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-11T00:18:03,238 copying build/lib/cvi/modules/GD53.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-11T00:18:03,243 copying build/lib/cvi/modules/XB.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-11T00:18:03,247 copying build/lib/cvi/modules/CH.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-11T00:18:03,251 copying build/lib/cvi/modules/cSIL.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-11T00:18:03,256 copying build/lib/cvi/modules/PS.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-11T00:18:03,260 copying build/lib/cvi/modules/_base.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-11T00:18:03,264 copying build/lib/cvi/modules/WB.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-11T00:18:03,269 copying build/lib/cvi/modules/DB.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-11T00:18:03,273 copying build/lib/cvi/modules/rCIP.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-11T00:18:03,277 copying build/lib/cvi/modules/__init__.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-11T00:18:03,281 copying build/lib/cvi/__init__.py -> build/bdist.linux-armv7l/wheel/cvi 2023-08-11T00:18:03,286 creating build/bdist.linux-armv7l/wheel/cvi/compat 2023-08-11T00:18:03,288 copying build/lib/cvi/compat/v0.py -> build/bdist.linux-armv7l/wheel/cvi/compat 2023-08-11T00:18:03,294 copying build/lib/cvi/compat/__init__.py -> build/bdist.linux-armv7l/wheel/cvi/compat 2023-08-11T00:18:03,297 running install_egg_info 2023-08-11T00:18:03,306 Copying src/cvi.egg-info to build/bdist.linux-armv7l/wheel/cvi-0.5.1-py3.7.egg-info 2023-08-11T00:18:03,326 running install_scripts 2023-08-11T00:18:03,356 creating build/bdist.linux-armv7l/wheel/cvi-0.5.1.dist-info/WHEEL 2023-08-11T00:18:03,361 creating '/tmp/pip-wheel-dxhpba84/.tmp-te51jvra/cvi-0.5.1-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it 2023-08-11T00:18:03,366 adding 'cvi/__init__.py' 2023-08-11T00:18:03,369 adding 'cvi/compat/__init__.py' 2023-08-11T00:18:03,375 adding 'cvi/compat/v0.py' 2023-08-11T00:18:03,380 adding 'cvi/modules/CH.py' 2023-08-11T00:18:03,384 adding 'cvi/modules/DB.py' 2023-08-11T00:18:03,387 adding 'cvi/modules/GD43.py' 2023-08-11T00:18:03,391 adding 'cvi/modules/GD53.py' 2023-08-11T00:18:03,395 adding 'cvi/modules/PS.py' 2023-08-11T00:18:03,402 adding 'cvi/modules/WB.py' 2023-08-11T00:18:03,405 adding 'cvi/modules/XB.py' 2023-08-11T00:18:03,408 adding 'cvi/modules/__init__.py' 2023-08-11T00:18:03,411 adding 'cvi/modules/_base.py' 2023-08-11T00:18:03,415 adding 'cvi/modules/cSIL.py' 2023-08-11T00:18:03,419 adding 'cvi/modules/rCIP.py' 2023-08-11T00:18:03,425 adding 'cvi-0.5.1.dist-info/LICENSE' 2023-08-11T00:18:03,429 adding 'cvi-0.5.1.dist-info/METADATA' 2023-08-11T00:18:03,431 adding 'cvi-0.5.1.dist-info/WHEEL' 2023-08-11T00:18:03,434 adding 'cvi-0.5.1.dist-info/top_level.txt' 2023-08-11T00:18:03,437 adding 'cvi-0.5.1.dist-info/RECORD' 2023-08-11T00:18:03,440 removing build/bdist.linux-armv7l/wheel 2023-08-11T00:18:03,457 /tmp/pip-build-env-ln52ohp5/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `requires-python` defined outside of `pyproject.toml` would be ignored. 2023-08-11T00:18:03,458 !! 2023-08-11T00:18:03,458 ******************************************************************************** 2023-08-11T00:18:03,459 ########################################################################## 2023-08-11T00:18:03,459 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-11T00:18:03,459 ########################################################################## 2023-08-11T00:18:03,460 The following seems to be defined outside of `pyproject.toml`: 2023-08-11T00:18:03,460 `requires-python = =3.6')>` 2023-08-11T00:18:03,461 According to the spec (see the link below), however, setuptools CANNOT 2023-08-11T00:18:03,461 consider this value unless `requires-python` is listed as `dynamic`. 2023-08-11T00:18:03,462 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-11T00:18:03,463 For the time being, `setuptools` will still consider the given value (as a 2023-08-11T00:18:03,463 **transitional** measure), but please note that future releases of setuptools will 2023-08-11T00:18:03,464 follow strictly the standard. 2023-08-11T00:18:03,464 To prevent this warning, you can list `requires-python` under `dynamic` or alternatively 2023-08-11T00:18:03,465 remove the `[project]` table from your file and rely entirely on other means of 2023-08-11T00:18:03,465 configuration. 2023-08-11T00:18:03,466 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-11T00:18:03,467 or your builds will no longer be supported. 2023-08-11T00:18:03,467 ******************************************************************************** 2023-08-11T00:18:03,468 !! 2023-08-11T00:18:03,468 _handle_missing_dynamic(dist, project_table) 2023-08-11T00:18:03,469 /tmp/pip-build-env-ln52ohp5/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `classifiers` defined outside of `pyproject.toml` would be ignored. 2023-08-11T00:18:03,470 !! 2023-08-11T00:18:03,471 ******************************************************************************** 2023-08-11T00:18:03,471 ########################################################################## 2023-08-11T00:18:03,472 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-11T00:18:03,472 ########################################################################## 2023-08-11T00:18:03,473 The following seems to be defined outside of `pyproject.toml`: 2023-08-11T00:18:03,474 `classifiers = ['Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent']` 2023-08-11T00:18:03,475 According to the spec (see the link below), however, setuptools CANNOT 2023-08-11T00:18:03,475 consider this value unless `classifiers` is listed as `dynamic`. 2023-08-11T00:18:03,476 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-11T00:18:03,477 For the time being, `setuptools` will still consider the given value (as a 2023-08-11T00:18:03,477 **transitional** measure), but please note that future releases of setuptools will 2023-08-11T00:18:03,478 follow strictly the standard. 2023-08-11T00:18:03,478 To prevent this warning, you can list `classifiers` under `dynamic` or alternatively 2023-08-11T00:18:03,479 remove the `[project]` table from your file and rely entirely on other means of 2023-08-11T00:18:03,479 configuration. 2023-08-11T00:18:03,480 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-11T00:18:03,480 or your builds will no longer be supported. 2023-08-11T00:18:03,481 ******************************************************************************** 2023-08-11T00:18:03,482 !! 2023-08-11T00:18:03,482 _handle_missing_dynamic(dist, project_table) 2023-08-11T00:18:03,483 /tmp/pip-build-env-ln52ohp5/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `urls` defined outside of `pyproject.toml` would be ignored. 2023-08-11T00:18:03,483 !! 2023-08-11T00:18:03,484 ******************************************************************************** 2023-08-11T00:18:03,484 ########################################################################## 2023-08-11T00:18:03,485 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-11T00:18:03,485 ########################################################################## 2023-08-11T00:18:03,486 The following seems to be defined outside of `pyproject.toml`: 2023-08-11T00:18:03,486 `urls = {'Bug Tracker': 'https://github.com/AP6YC/cvi/issues', 'Documentation': 'https://cluster-validity-indices.readthedocs.io/'}` 2023-08-11T00:18:03,487 According to the spec (see the link below), however, setuptools CANNOT 2023-08-11T00:18:03,488 consider this value unless `urls` is listed as `dynamic`. 2023-08-11T00:18:03,488 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-11T00:18:03,489 For the time being, `setuptools` will still consider the given value (as a 2023-08-11T00:18:03,490 **transitional** measure), but please note that future releases of setuptools will 2023-08-11T00:18:03,490 follow strictly the standard. 2023-08-11T00:18:03,492 To prevent this warning, you can list `urls` under `dynamic` or alternatively 2023-08-11T00:18:03,492 remove the `[project]` table from your file and rely entirely on other means of 2023-08-11T00:18:03,493 configuration. 2023-08-11T00:18:03,494 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-11T00:18:03,494 or your builds will no longer be supported. 2023-08-11T00:18:03,495 ******************************************************************************** 2023-08-11T00:18:03,495 !! 2023-08-11T00:18:03,496 _handle_missing_dynamic(dist, project_table) 2023-08-11T00:18:03,642 Building wheel for cvi (pyproject.toml): finished with status 'done' 2023-08-11T00:18:03,655 Created wheel for cvi: filename=cvi-0.5.1-py3-none-any.whl size=32013 sha256=be2d2c761f51450d5b66fd2c9fd2c6ea041baf719e34791b710e5ad502c011c4 2023-08-11T00:18:03,657 Stored in directory: /tmp/pip-ephem-wheel-cache-bud7_31o/wheels/d2/15/5f/9a20086bc113cb81fc3b877f26683862685572799ba3de8fa0 2023-08-11T00:18:03,686 Successfully built cvi 2023-08-11T00:18:03,696 Removed build tracker: '/tmp/pip-build-tracker-1673vzr3'