2023-08-10T19:23:22,397 Created temporary directory: /tmp/pip-build-tracker-dd1pp368 2023-08-10T19:23:22,400 Initialized build tracking at /tmp/pip-build-tracker-dd1pp368 2023-08-10T19:23:22,401 Created build tracker: /tmp/pip-build-tracker-dd1pp368 2023-08-10T19:23:22,401 Entered build tracker: /tmp/pip-build-tracker-dd1pp368 2023-08-10T19:23:22,403 Created temporary directory: /tmp/pip-wheel-k4sh2sqw 2023-08-10T19:23:22,411 Created temporary directory: /tmp/pip-ephem-wheel-cache-_pwobo1a 2023-08-10T19:23:22,469 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-08-10T19:23:22,477 2 location(s) to search for versions of cvi: 2023-08-10T19:23:22,477 * https://pypi.org/simple/cvi/ 2023-08-10T19:23:22,477 * https://www.piwheels.org/simple/cvi/ 2023-08-10T19:23:22,478 Fetching project page and analyzing links: https://pypi.org/simple/cvi/ 2023-08-10T19:23:22,479 Getting page https://pypi.org/simple/cvi/ 2023-08-10T19:23:22,483 Found index url https://pypi.org/simple/ 2023-08-10T19:23:22,685 Fetched page https://pypi.org/simple/cvi/ as application/vnd.pypi.simple.v1+json 2023-08-10T19:23:22,696 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-10T19:23:22,698 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-10T19:23:22,698 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-10T19:23:22,700 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-10T19:23:22,700 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-10T19:23:22,702 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-10T19:23:22,702 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-10T19:23:22,704 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-10T19:23:22,704 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-10T19:23:22,706 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-10T19:23:22,706 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-10T19:23:22,708 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-10T19:23:22,708 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-10T19:23:22,710 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-10T19:23:22,710 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-10T19:23:22,712 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-10T19:23:22,712 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-10T19:23:22,713 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-10T19:23:22,714 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-10T19:23:22,715 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-10T19:23:22,716 Fetching project page and analyzing links: https://www.piwheels.org/simple/cvi/ 2023-08-10T19:23:22,717 Getting page https://www.piwheels.org/simple/cvi/ 2023-08-10T19:23:22,719 Found index url https://www.piwheels.org/simple/ 2023-08-10T19:23:22,995 Fetched page https://www.piwheels.org/simple/cvi/ as text/html 2023-08-10T19:23:23,004 Skipping link: No binaries permitted for cvi: https://www.piwheels.org/simple/cvi/cvi-0.4.0-py3-none-any.whl#sha256=7e9e66fa4dd61b9a6ce72e7a1b2b356319ca9ba3a999bb5e77a83225b65449b7 (from https://www.piwheels.org/simple/cvi/) (requires-python:>=3.6) 2023-08-10T19:23:23,004 Skipping link: No binaries permitted for cvi: https://www.piwheels.org/simple/cvi/cvi-0.3.0-py3-none-any.whl#sha256=d9108af7344a7f95602de2e5d4d4ff4853ea3f8f056e18581ed591d25d5f1fe4 (from https://www.piwheels.org/simple/cvi/) (requires-python:>=3.6) 2023-08-10T19:23:23,005 Skipping link: No binaries permitted for cvi: https://www.piwheels.org/simple/cvi/cvi-0.2.0-py3-none-any.whl#sha256=d6fdf15585ae4c5ba5d46e0f22bb6e58ab4e9db39fde6ee27b03fd18844b3001 (from https://www.piwheels.org/simple/cvi/) (requires-python:>=3.6) 2023-08-10T19:23:23,005 Skipping link: No binaries permitted for cvi: https://www.piwheels.org/simple/cvi/cvi-0.1.1-py3-none-any.whl#sha256=f2fe4b964e48f116b9009f7836ec22dfbdf55d1626aa77fd7efa49c7da320e87 (from https://www.piwheels.org/simple/cvi/) (requires-python:>=3.6) 2023-08-10T19:23:23,006 Skipping link: No binaries permitted for cvi: https://www.piwheels.org/simple/cvi/cvi-0.1.0-py3-none-any.whl#sha256=cbb4453e3266116d147dd2f0933326753575711d38fd184893c41010c640dfe7 (from https://www.piwheels.org/simple/cvi/) (requires-python:>=3.6) 2023-08-10T19:23:23,006 Skipping link: No binaries permitted for cvi: https://www.piwheels.org/simple/cvi/cvi-0.1.0a4-py3-none-any.whl#sha256=ef3ec965a1fc2d155cca6d3fda93d1fe7a2d9e3b78211ab5351752a6c3e3f8dc (from https://www.piwheels.org/simple/cvi/) (requires-python:>=3.6) 2023-08-10T19:23:23,007 Skipping link: No binaries permitted for cvi: https://www.piwheels.org/simple/cvi/cvi-0.1.0a3-py3-none-any.whl#sha256=bb395c30ea5296b3868487281bdbe627dc964ce445bd373fdb2da96cc5f3816f (from https://www.piwheels.org/simple/cvi/) (requires-python:>=3.6) 2023-08-10T19:23:23,007 Skipping link: No binaries permitted for cvi: https://www.piwheels.org/simple/cvi/cvi-0.1.0a2-py3-none-any.whl#sha256=a998d2e799675b32bbeb3f318b8fde028492384f668cebb508490f8301db46d2 (from https://www.piwheels.org/simple/cvi/) (requires-python:>=3.6) 2023-08-10T19:23:23,008 Skipping link: No binaries permitted for cvi: https://www.piwheels.org/simple/cvi/cvi-0.1.0a1-py3-none-any.whl#sha256=39f62718e2c3fcfa9defdf829d0a94f402dee719ea66a6a6f11de8095de1f43f (from https://www.piwheels.org/simple/cvi/) (requires-python:>=3.6) 2023-08-10T19:23:23,008 Skipping link: not a file: https://www.piwheels.org/simple/cvi/ 2023-08-10T19:23:23,009 Skipping link: not a file: https://pypi.org/simple/cvi/ 2023-08-10T19:23:23,043 Given no hashes to check 1 links for project 'cvi': discarding no candidates 2023-08-10T19:23:23,074 Collecting cvi==0.5.0 2023-08-10T19:23:23,078 Created temporary directory: /tmp/pip-unpack-ktmyljm7 2023-08-10T19:23:23,260 Downloading cvi-0.5.0.tar.gz (24 kB) 2023-08-10T19:23:23,417 Added cvi==0.5.0 from https://files.pythonhosted.org/packages/81/f5/169fe5782889068c4bffdfeb31080d4b5a2d691fe705008236ee480380c1/cvi-0.5.0.tar.gz to build tracker '/tmp/pip-build-tracker-dd1pp368' 2023-08-10T19:23:23,424 Created temporary directory: /tmp/pip-build-env-3ekkshcq 2023-08-10T19:23:23,444 Installing build dependencies: started 2023-08-10T19:23:23,446 Running command pip subprocess to install build dependencies 2023-08-10T19:23:26,199 Using pip 23.1.2 from /home/piwheels/.local/lib/python3.7/site-packages/pip (python 3.7) 2023-08-10T19:23:27,026 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-08-10T19:23:31,029 Collecting setuptools>=42 2023-08-10T19:23:31,197 Using cached https://www.piwheels.org/simple/setuptools/setuptools-68.0.0-py3-none-any.whl (804 kB) 2023-08-10T19:23:36,570 Installing collected packages: setuptools 2023-08-10T19:23:40,873 Successfully installed setuptools-68.0.0 2023-08-10T19:23:40,902 [notice] A new release of pip is available: 23.1.2 -> 23.2.1 2023-08-10T19:23:40,902 [notice] To update, run: python3 -m pip install --upgrade pip 2023-08-10T19:23:41,326 Installing build dependencies: finished with status 'done' 2023-08-10T19:23:41,337 Getting requirements to build wheel: started 2023-08-10T19:23:41,339 Running command Getting requirements to build wheel 2023-08-10T19:23:42,806 /tmp/pip-build-env-3ekkshcq/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `readme` defined outside of `pyproject.toml` would be ignored. 2023-08-10T19:23:42,807 !! 2023-08-10T19:23:42,808 ******************************************************************************** 2023-08-10T19:23:42,808 ########################################################################## 2023-08-10T19:23:42,809 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-10T19:23:42,809 ########################################################################## 2023-08-10T19:23:42,810 The following seems to be defined outside of `pyproject.toml`: 2023-08-10T19:23:42,810 `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.0\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-10T19:23:42,812 According to the spec (see the link below), however, setuptools CANNOT 2023-08-10T19:23:42,812 consider this value unless `readme` is listed as `dynamic`. 2023-08-10T19:23:42,813 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-10T19:23:42,813 For the time being, `setuptools` will still consider the given value (as a 2023-08-10T19:23:42,814 **transitional** measure), but please note that future releases of setuptools will 2023-08-10T19:23:42,814 follow strictly the standard. 2023-08-10T19:23:42,814 To prevent this warning, you can list `readme` under `dynamic` or alternatively 2023-08-10T19:23:42,815 remove the `[project]` table from your file and rely entirely on other means of 2023-08-10T19:23:42,815 configuration. 2023-08-10T19:23:42,816 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-10T19:23:42,816 or your builds will no longer be supported. 2023-08-10T19:23:42,816 ******************************************************************************** 2023-08-10T19:23:42,817 !! 2023-08-10T19:23:42,817 _handle_missing_dynamic(dist, project_table) 2023-08-10T19:23:43,370 running egg_info 2023-08-10T19:23:43,380 writing src/cvi.egg-info/PKG-INFO 2023-08-10T19:23:43,386 writing dependency_links to src/cvi.egg-info/dependency_links.txt 2023-08-10T19:23:43,390 writing requirements to src/cvi.egg-info/requires.txt 2023-08-10T19:23:43,393 writing top-level names to src/cvi.egg-info/top_level.txt 2023-08-10T19:23:43,430 reading manifest file 'src/cvi.egg-info/SOURCES.txt' 2023-08-10T19:23:43,436 adding license file 'LICENSE' 2023-08-10T19:23:43,443 writing manifest file 'src/cvi.egg-info/SOURCES.txt' 2023-08-10T19:23:43,447 /tmp/pip-build-env-3ekkshcq/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-10T19:23:43,448 !! 2023-08-10T19:23:43,448 ******************************************************************************** 2023-08-10T19:23:43,449 ########################################################################## 2023-08-10T19:23:43,449 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-10T19:23:43,449 ########################################################################## 2023-08-10T19:23:43,450 The following seems to be defined outside of `pyproject.toml`: 2023-08-10T19:23:43,450 `requires-python = =3.6')>` 2023-08-10T19:23:43,451 According to the spec (see the link below), however, setuptools CANNOT 2023-08-10T19:23:43,451 consider this value unless `requires-python` is listed as `dynamic`. 2023-08-10T19:23:43,452 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-10T19:23:43,453 For the time being, `setuptools` will still consider the given value (as a 2023-08-10T19:23:43,454 **transitional** measure), but please note that future releases of setuptools will 2023-08-10T19:23:43,454 follow strictly the standard. 2023-08-10T19:23:43,455 To prevent this warning, you can list `requires-python` under `dynamic` or alternatively 2023-08-10T19:23:43,455 remove the `[project]` table from your file and rely entirely on other means of 2023-08-10T19:23:43,456 configuration. 2023-08-10T19:23:43,457 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-10T19:23:43,457 or your builds will no longer be supported. 2023-08-10T19:23:43,458 ******************************************************************************** 2023-08-10T19:23:43,458 !! 2023-08-10T19:23:43,459 _handle_missing_dynamic(dist, project_table) 2023-08-10T19:23:43,459 /tmp/pip-build-env-3ekkshcq/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `classifiers` defined outside of `pyproject.toml` would be ignored. 2023-08-10T19:23:43,460 !! 2023-08-10T19:23:43,461 ******************************************************************************** 2023-08-10T19:23:43,461 ########################################################################## 2023-08-10T19:23:43,462 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-10T19:23:43,462 ########################################################################## 2023-08-10T19:23:43,463 The following seems to be defined outside of `pyproject.toml`: 2023-08-10T19:23:43,464 `classifiers = ['Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent']` 2023-08-10T19:23:43,465 According to the spec (see the link below), however, setuptools CANNOT 2023-08-10T19:23:43,466 consider this value unless `classifiers` is listed as `dynamic`. 2023-08-10T19:23:43,466 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-10T19:23:43,467 For the time being, `setuptools` will still consider the given value (as a 2023-08-10T19:23:43,468 **transitional** measure), but please note that future releases of setuptools will 2023-08-10T19:23:43,468 follow strictly the standard. 2023-08-10T19:23:43,469 To prevent this warning, you can list `classifiers` under `dynamic` or alternatively 2023-08-10T19:23:43,469 remove the `[project]` table from your file and rely entirely on other means of 2023-08-10T19:23:43,470 configuration. 2023-08-10T19:23:43,471 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-10T19:23:43,471 or your builds will no longer be supported. 2023-08-10T19:23:43,471 ******************************************************************************** 2023-08-10T19:23:43,472 !! 2023-08-10T19:23:43,473 _handle_missing_dynamic(dist, project_table) 2023-08-10T19:23:43,473 /tmp/pip-build-env-3ekkshcq/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `urls` defined outside of `pyproject.toml` would be ignored. 2023-08-10T19:23:43,473 !! 2023-08-10T19:23:43,474 ******************************************************************************** 2023-08-10T19:23:43,474 ########################################################################## 2023-08-10T19:23:43,475 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-10T19:23:43,475 ########################################################################## 2023-08-10T19:23:43,476 The following seems to be defined outside of `pyproject.toml`: 2023-08-10T19:23:43,477 `urls = {'Bug Tracker': 'https://github.com/AP6YC/cvi/issues', 'Documentation': 'https://cluster-validity-indices.readthedocs.io/'}` 2023-08-10T19:23:43,478 According to the spec (see the link below), however, setuptools CANNOT 2023-08-10T19:23:43,478 consider this value unless `urls` is listed as `dynamic`. 2023-08-10T19:23:43,479 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-10T19:23:43,480 For the time being, `setuptools` will still consider the given value (as a 2023-08-10T19:23:43,480 **transitional** measure), but please note that future releases of setuptools will 2023-08-10T19:23:43,481 follow strictly the standard. 2023-08-10T19:23:43,482 To prevent this warning, you can list `urls` under `dynamic` or alternatively 2023-08-10T19:23:43,483 remove the `[project]` table from your file and rely entirely on other means of 2023-08-10T19:23:43,483 configuration. 2023-08-10T19:23:43,484 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-10T19:23:43,484 or your builds will no longer be supported. 2023-08-10T19:23:43,484 ******************************************************************************** 2023-08-10T19:23:43,485 !! 2023-08-10T19:23:43,485 _handle_missing_dynamic(dist, project_table) 2023-08-10T19:23:43,622 Getting requirements to build wheel: finished with status 'done' 2023-08-10T19:23:43,647 Installing backend dependencies: started 2023-08-10T19:23:43,649 Running command pip subprocess to install backend dependencies 2023-08-10T19:23:46,361 Using pip 23.1.2 from /home/piwheels/.local/lib/python3.7/site-packages/pip (python 3.7) 2023-08-10T19:23:47,158 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-08-10T19:23:48,027 Collecting wheel 2023-08-10T19:23:48,064 Using cached https://www.piwheels.org/simple/wheel/wheel-0.41.1-py3-none-any.whl (64 kB) 2023-08-10T19:23:52,609 Installing collected packages: wheel 2023-08-10T19:23:53,069 Creating /tmp/pip-build-env-3ekkshcq/normal/bin 2023-08-10T19:23:53,073 changing mode of /tmp/pip-build-env-3ekkshcq/normal/bin/wheel to 755 2023-08-10T19:23:53,100 Successfully installed wheel-0.41.1 2023-08-10T19:23:53,130 [notice] A new release of pip is available: 23.1.2 -> 23.2.1 2023-08-10T19:23:53,131 [notice] To update, run: python3 -m pip install --upgrade pip 2023-08-10T19:23:53,495 Installing backend dependencies: finished with status 'done' 2023-08-10T19:23:53,501 Created temporary directory: /tmp/pip-modern-metadata-1ytnsr3r 2023-08-10T19:23:53,507 Preparing metadata (pyproject.toml): started 2023-08-10T19:23:53,509 Running command Preparing metadata (pyproject.toml) 2023-08-10T19:23:54,851 /tmp/pip-build-env-3ekkshcq/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `readme` defined outside of `pyproject.toml` would be ignored. 2023-08-10T19:23:54,852 !! 2023-08-10T19:23:54,853 ******************************************************************************** 2023-08-10T19:23:54,853 ########################################################################## 2023-08-10T19:23:54,854 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-10T19:23:54,854 ########################################################################## 2023-08-10T19:23:54,855 The following seems to be defined outside of `pyproject.toml`: 2023-08-10T19:23:54,856 `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.0\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-10T19:23:54,857 According to the spec (see the link below), however, setuptools CANNOT 2023-08-10T19:23:54,857 consider this value unless `readme` is listed as `dynamic`. 2023-08-10T19:23:54,857 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-10T19:23:54,858 For the time being, `setuptools` will still consider the given value (as a 2023-08-10T19:23:54,858 **transitional** measure), but please note that future releases of setuptools will 2023-08-10T19:23:54,859 follow strictly the standard. 2023-08-10T19:23:54,859 To prevent this warning, you can list `readme` under `dynamic` or alternatively 2023-08-10T19:23:54,860 remove the `[project]` table from your file and rely entirely on other means of 2023-08-10T19:23:54,860 configuration. 2023-08-10T19:23:54,861 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-10T19:23:54,861 or your builds will no longer be supported. 2023-08-10T19:23:54,861 ******************************************************************************** 2023-08-10T19:23:54,862 !! 2023-08-10T19:23:54,862 _handle_missing_dynamic(dist, project_table) 2023-08-10T19:23:55,520 running dist_info 2023-08-10T19:23:55,532 creating /tmp/pip-modern-metadata-1ytnsr3r/cvi.egg-info 2023-08-10T19:23:55,542 writing /tmp/pip-modern-metadata-1ytnsr3r/cvi.egg-info/PKG-INFO 2023-08-10T19:23:55,546 writing dependency_links to /tmp/pip-modern-metadata-1ytnsr3r/cvi.egg-info/dependency_links.txt 2023-08-10T19:23:55,550 writing requirements to /tmp/pip-modern-metadata-1ytnsr3r/cvi.egg-info/requires.txt 2023-08-10T19:23:55,553 writing top-level names to /tmp/pip-modern-metadata-1ytnsr3r/cvi.egg-info/top_level.txt 2023-08-10T19:23:55,555 writing manifest file '/tmp/pip-modern-metadata-1ytnsr3r/cvi.egg-info/SOURCES.txt' 2023-08-10T19:23:55,597 reading manifest file '/tmp/pip-modern-metadata-1ytnsr3r/cvi.egg-info/SOURCES.txt' 2023-08-10T19:23:55,602 adding license file 'LICENSE' 2023-08-10T19:23:55,609 writing manifest file '/tmp/pip-modern-metadata-1ytnsr3r/cvi.egg-info/SOURCES.txt' 2023-08-10T19:23:55,611 creating '/tmp/pip-modern-metadata-1ytnsr3r/cvi-0.5.0.dist-info' 2023-08-10T19:23:55,685 /tmp/pip-build-env-3ekkshcq/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-10T19:23:55,685 !! 2023-08-10T19:23:55,686 ******************************************************************************** 2023-08-10T19:23:55,687 ########################################################################## 2023-08-10T19:23:55,687 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-10T19:23:55,688 ########################################################################## 2023-08-10T19:23:55,689 The following seems to be defined outside of `pyproject.toml`: 2023-08-10T19:23:55,689 `requires-python = =3.6')>` 2023-08-10T19:23:55,690 According to the spec (see the link below), however, setuptools CANNOT 2023-08-10T19:23:55,691 consider this value unless `requires-python` is listed as `dynamic`. 2023-08-10T19:23:55,692 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-10T19:23:55,693 For the time being, `setuptools` will still consider the given value (as a 2023-08-10T19:23:55,693 **transitional** measure), but please note that future releases of setuptools will 2023-08-10T19:23:55,693 follow strictly the standard. 2023-08-10T19:23:55,694 To prevent this warning, you can list `requires-python` under `dynamic` or alternatively 2023-08-10T19:23:55,695 remove the `[project]` table from your file and rely entirely on other means of 2023-08-10T19:23:55,695 configuration. 2023-08-10T19:23:55,696 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-10T19:23:55,697 or your builds will no longer be supported. 2023-08-10T19:23:55,697 ******************************************************************************** 2023-08-10T19:23:55,698 !! 2023-08-10T19:23:55,698 _handle_missing_dynamic(dist, project_table) 2023-08-10T19:23:55,699 /tmp/pip-build-env-3ekkshcq/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `classifiers` defined outside of `pyproject.toml` would be ignored. 2023-08-10T19:23:55,699 !! 2023-08-10T19:23:55,700 ******************************************************************************** 2023-08-10T19:23:55,701 ########################################################################## 2023-08-10T19:23:55,701 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-10T19:23:55,701 ########################################################################## 2023-08-10T19:23:55,702 The following seems to be defined outside of `pyproject.toml`: 2023-08-10T19:23:55,703 `classifiers = ['Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent']` 2023-08-10T19:23:55,704 According to the spec (see the link below), however, setuptools CANNOT 2023-08-10T19:23:55,704 consider this value unless `classifiers` is listed as `dynamic`. 2023-08-10T19:23:55,705 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-10T19:23:55,706 For the time being, `setuptools` will still consider the given value (as a 2023-08-10T19:23:55,706 **transitional** measure), but please note that future releases of setuptools will 2023-08-10T19:23:55,707 follow strictly the standard. 2023-08-10T19:23:55,707 To prevent this warning, you can list `classifiers` under `dynamic` or alternatively 2023-08-10T19:23:55,708 remove the `[project]` table from your file and rely entirely on other means of 2023-08-10T19:23:55,708 configuration. 2023-08-10T19:23:55,709 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-10T19:23:55,709 or your builds will no longer be supported. 2023-08-10T19:23:55,710 ******************************************************************************** 2023-08-10T19:23:55,710 !! 2023-08-10T19:23:55,711 _handle_missing_dynamic(dist, project_table) 2023-08-10T19:23:55,711 /tmp/pip-build-env-3ekkshcq/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `urls` defined outside of `pyproject.toml` would be ignored. 2023-08-10T19:23:55,712 !! 2023-08-10T19:23:55,713 ******************************************************************************** 2023-08-10T19:23:55,713 ########################################################################## 2023-08-10T19:23:55,714 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-10T19:23:55,714 ########################################################################## 2023-08-10T19:23:55,715 The following seems to be defined outside of `pyproject.toml`: 2023-08-10T19:23:55,716 `urls = {'Bug Tracker': 'https://github.com/AP6YC/cvi/issues', 'Documentation': 'https://cluster-validity-indices.readthedocs.io/'}` 2023-08-10T19:23:55,717 According to the spec (see the link below), however, setuptools CANNOT 2023-08-10T19:23:55,717 consider this value unless `urls` is listed as `dynamic`. 2023-08-10T19:23:55,718 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-10T19:23:55,719 For the time being, `setuptools` will still consider the given value (as a 2023-08-10T19:23:55,719 **transitional** measure), but please note that future releases of setuptools will 2023-08-10T19:23:55,720 follow strictly the standard. 2023-08-10T19:23:55,720 To prevent this warning, you can list `urls` under `dynamic` or alternatively 2023-08-10T19:23:55,721 remove the `[project]` table from your file and rely entirely on other means of 2023-08-10T19:23:55,721 configuration. 2023-08-10T19:23:55,722 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-10T19:23:55,723 or your builds will no longer be supported. 2023-08-10T19:23:55,723 ******************************************************************************** 2023-08-10T19:23:55,724 !! 2023-08-10T19:23:55,725 _handle_missing_dynamic(dist, project_table) 2023-08-10T19:23:55,866 Preparing metadata (pyproject.toml): finished with status 'done' 2023-08-10T19:23:55,882 Source in /tmp/pip-wheel-k4sh2sqw/cvi_0923ee41b1844012879665c1b2be4798 has version 0.5.0, which satisfies requirement cvi==0.5.0 from https://files.pythonhosted.org/packages/81/f5/169fe5782889068c4bffdfeb31080d4b5a2d691fe705008236ee480380c1/cvi-0.5.0.tar.gz 2023-08-10T19:23:55,884 Removed cvi==0.5.0 from https://files.pythonhosted.org/packages/81/f5/169fe5782889068c4bffdfeb31080d4b5a2d691fe705008236ee480380c1/cvi-0.5.0.tar.gz from build tracker '/tmp/pip-build-tracker-dd1pp368' 2023-08-10T19:23:55,899 Created temporary directory: /tmp/pip-unpack-3pfleiew 2023-08-10T19:23:55,900 Building wheels for collected packages: cvi 2023-08-10T19:23:55,910 Created temporary directory: /tmp/pip-wheel-s2d64z5t 2023-08-10T19:23:55,911 Destination directory: /tmp/pip-wheel-s2d64z5t 2023-08-10T19:23:55,916 Building wheel for cvi (pyproject.toml): started 2023-08-10T19:23:55,918 Running command Building wheel for cvi (pyproject.toml) 2023-08-10T19:23:57,180 /tmp/pip-build-env-3ekkshcq/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `readme` defined outside of `pyproject.toml` would be ignored. 2023-08-10T19:23:57,181 !! 2023-08-10T19:23:57,182 ******************************************************************************** 2023-08-10T19:23:57,182 ########################################################################## 2023-08-10T19:23:57,183 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-10T19:23:57,183 ########################################################################## 2023-08-10T19:23:57,184 The following seems to be defined outside of `pyproject.toml`: 2023-08-10T19:23:57,185 `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.0\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-10T19:23:57,185 According to the spec (see the link below), however, setuptools CANNOT 2023-08-10T19:23:57,186 consider this value unless `readme` is listed as `dynamic`. 2023-08-10T19:23:57,186 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-10T19:23:57,187 For the time being, `setuptools` will still consider the given value (as a 2023-08-10T19:23:57,187 **transitional** measure), but please note that future releases of setuptools will 2023-08-10T19:23:57,188 follow strictly the standard. 2023-08-10T19:23:57,188 To prevent this warning, you can list `readme` under `dynamic` or alternatively 2023-08-10T19:23:57,188 remove the `[project]` table from your file and rely entirely on other means of 2023-08-10T19:23:57,189 configuration. 2023-08-10T19:23:57,189 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-10T19:23:57,190 or your builds will no longer be supported. 2023-08-10T19:23:57,190 ******************************************************************************** 2023-08-10T19:23:57,191 !! 2023-08-10T19:23:57,191 _handle_missing_dynamic(dist, project_table) 2023-08-10T19:23:57,794 running bdist_wheel 2023-08-10T19:23:57,835 running build 2023-08-10T19:23:57,836 running build_py 2023-08-10T19:23:57,847 creating build 2023-08-10T19:23:57,848 creating build/lib 2023-08-10T19:23:57,849 creating build/lib/cvi 2023-08-10T19:23:57,852 copying src/cvi/__init__.py -> build/lib/cvi 2023-08-10T19:23:57,858 creating build/lib/cvi/modules 2023-08-10T19:23:57,860 copying src/cvi/modules/GD43.py -> build/lib/cvi/modules 2023-08-10T19:23:57,865 copying src/cvi/modules/GD53.py -> build/lib/cvi/modules 2023-08-10T19:23:57,869 copying src/cvi/modules/XB.py -> build/lib/cvi/modules 2023-08-10T19:23:57,873 copying src/cvi/modules/CH.py -> build/lib/cvi/modules 2023-08-10T19:23:57,877 copying src/cvi/modules/cSIL.py -> build/lib/cvi/modules 2023-08-10T19:23:57,882 copying src/cvi/modules/PS.py -> build/lib/cvi/modules 2023-08-10T19:23:57,886 copying src/cvi/modules/_base.py -> build/lib/cvi/modules 2023-08-10T19:23:57,890 copying src/cvi/modules/WB.py -> build/lib/cvi/modules 2023-08-10T19:23:57,895 copying src/cvi/modules/DB.py -> build/lib/cvi/modules 2023-08-10T19:23:57,899 copying src/cvi/modules/rCIP.py -> build/lib/cvi/modules 2023-08-10T19:23:57,904 copying src/cvi/modules/__init__.py -> build/lib/cvi/modules 2023-08-10T19:23:57,908 creating build/lib/cvi/compat 2023-08-10T19:23:57,910 copying src/cvi/compat/v0.py -> build/lib/cvi/compat 2023-08-10T19:23:57,916 copying src/cvi/compat/__init__.py -> build/lib/cvi/compat 2023-08-10T19:23:57,919 running egg_info 2023-08-10T19:23:57,928 writing src/cvi.egg-info/PKG-INFO 2023-08-10T19:23:57,932 writing dependency_links to src/cvi.egg-info/dependency_links.txt 2023-08-10T19:23:57,935 writing requirements to src/cvi.egg-info/requires.txt 2023-08-10T19:23:57,937 writing top-level names to src/cvi.egg-info/top_level.txt 2023-08-10T19:23:57,957 reading manifest file 'src/cvi.egg-info/SOURCES.txt' 2023-08-10T19:23:57,961 adding license file 'LICENSE' 2023-08-10T19:23:57,968 writing manifest file 'src/cvi.egg-info/SOURCES.txt' 2023-08-10T19:23:57,993 installing to build/bdist.linux-armv7l/wheel 2023-08-10T19:23:57,993 running install 2023-08-10T19:23:58,054 running install_lib 2023-08-10T19:23:58,064 creating build/bdist.linux-armv7l 2023-08-10T19:23:58,065 creating build/bdist.linux-armv7l/wheel 2023-08-10T19:23:58,069 creating build/bdist.linux-armv7l/wheel/cvi 2023-08-10T19:23:58,072 creating build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-10T19:23:58,074 copying build/lib/cvi/modules/GD43.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-10T19:23:58,079 copying build/lib/cvi/modules/GD53.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-10T19:23:58,084 copying build/lib/cvi/modules/XB.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-10T19:23:58,088 copying build/lib/cvi/modules/CH.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-10T19:23:58,093 copying build/lib/cvi/modules/cSIL.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-10T19:23:58,097 copying build/lib/cvi/modules/PS.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-10T19:23:58,102 copying build/lib/cvi/modules/_base.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-10T19:23:58,106 copying build/lib/cvi/modules/WB.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-10T19:23:58,111 copying build/lib/cvi/modules/DB.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-10T19:23:58,115 copying build/lib/cvi/modules/rCIP.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-10T19:23:58,120 copying build/lib/cvi/modules/__init__.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2023-08-10T19:23:58,124 copying build/lib/cvi/__init__.py -> build/bdist.linux-armv7l/wheel/cvi 2023-08-10T19:23:58,128 creating build/bdist.linux-armv7l/wheel/cvi/compat 2023-08-10T19:23:58,130 copying build/lib/cvi/compat/v0.py -> build/bdist.linux-armv7l/wheel/cvi/compat 2023-08-10T19:23:58,135 copying build/lib/cvi/compat/__init__.py -> build/bdist.linux-armv7l/wheel/cvi/compat 2023-08-10T19:23:58,138 running install_egg_info 2023-08-10T19:23:58,148 Copying src/cvi.egg-info to build/bdist.linux-armv7l/wheel/cvi-0.5.0-py3.7.egg-info 2023-08-10T19:23:58,171 running install_scripts 2023-08-10T19:23:58,202 creating build/bdist.linux-armv7l/wheel/cvi-0.5.0.dist-info/WHEEL 2023-08-10T19:23:58,207 creating '/tmp/pip-wheel-s2d64z5t/.tmp-xgwgw7h3/cvi-0.5.0-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it 2023-08-10T19:23:58,212 adding 'cvi/__init__.py' 2023-08-10T19:23:58,215 adding 'cvi/compat/__init__.py' 2023-08-10T19:23:58,222 adding 'cvi/compat/v0.py' 2023-08-10T19:23:58,228 adding 'cvi/modules/CH.py' 2023-08-10T19:23:58,231 adding 'cvi/modules/DB.py' 2023-08-10T19:23:58,235 adding 'cvi/modules/GD43.py' 2023-08-10T19:23:58,239 adding 'cvi/modules/GD53.py' 2023-08-10T19:23:58,243 adding 'cvi/modules/PS.py' 2023-08-10T19:23:58,246 adding 'cvi/modules/WB.py' 2023-08-10T19:23:58,250 adding 'cvi/modules/XB.py' 2023-08-10T19:23:58,252 adding 'cvi/modules/__init__.py' 2023-08-10T19:23:58,256 adding 'cvi/modules/_base.py' 2023-08-10T19:23:58,260 adding 'cvi/modules/cSIL.py' 2023-08-10T19:23:58,263 adding 'cvi/modules/rCIP.py' 2023-08-10T19:23:58,268 adding 'cvi-0.5.0.dist-info/LICENSE' 2023-08-10T19:23:58,272 adding 'cvi-0.5.0.dist-info/METADATA' 2023-08-10T19:23:58,274 adding 'cvi-0.5.0.dist-info/WHEEL' 2023-08-10T19:23:58,276 adding 'cvi-0.5.0.dist-info/top_level.txt' 2023-08-10T19:23:58,278 adding 'cvi-0.5.0.dist-info/RECORD' 2023-08-10T19:23:58,282 removing build/bdist.linux-armv7l/wheel 2023-08-10T19:23:58,300 /tmp/pip-build-env-3ekkshcq/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-10T19:23:58,301 !! 2023-08-10T19:23:58,301 ******************************************************************************** 2023-08-10T19:23:58,302 ########################################################################## 2023-08-10T19:23:58,302 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-10T19:23:58,303 ########################################################################## 2023-08-10T19:23:58,303 The following seems to be defined outside of `pyproject.toml`: 2023-08-10T19:23:58,304 `requires-python = =3.6')>` 2023-08-10T19:23:58,305 According to the spec (see the link below), however, setuptools CANNOT 2023-08-10T19:23:58,306 consider this value unless `requires-python` is listed as `dynamic`. 2023-08-10T19:23:58,307 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-10T19:23:58,307 For the time being, `setuptools` will still consider the given value (as a 2023-08-10T19:23:58,308 **transitional** measure), but please note that future releases of setuptools will 2023-08-10T19:23:58,308 follow strictly the standard. 2023-08-10T19:23:58,309 To prevent this warning, you can list `requires-python` under `dynamic` or alternatively 2023-08-10T19:23:58,310 remove the `[project]` table from your file and rely entirely on other means of 2023-08-10T19:23:58,310 configuration. 2023-08-10T19:23:58,311 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-10T19:23:58,312 or your builds will no longer be supported. 2023-08-10T19:23:58,312 ******************************************************************************** 2023-08-10T19:23:58,313 !! 2023-08-10T19:23:58,313 _handle_missing_dynamic(dist, project_table) 2023-08-10T19:23:58,314 /tmp/pip-build-env-3ekkshcq/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `classifiers` defined outside of `pyproject.toml` would be ignored. 2023-08-10T19:23:58,314 !! 2023-08-10T19:23:58,315 ******************************************************************************** 2023-08-10T19:23:58,316 ########################################################################## 2023-08-10T19:23:58,316 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-10T19:23:58,317 ########################################################################## 2023-08-10T19:23:58,317 The following seems to be defined outside of `pyproject.toml`: 2023-08-10T19:23:58,318 `classifiers = ['Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent']` 2023-08-10T19:23:58,319 According to the spec (see the link below), however, setuptools CANNOT 2023-08-10T19:23:58,320 consider this value unless `classifiers` is listed as `dynamic`. 2023-08-10T19:23:58,321 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-10T19:23:58,322 For the time being, `setuptools` will still consider the given value (as a 2023-08-10T19:23:58,322 **transitional** measure), but please note that future releases of setuptools will 2023-08-10T19:23:58,323 follow strictly the standard. 2023-08-10T19:23:58,323 To prevent this warning, you can list `classifiers` under `dynamic` or alternatively 2023-08-10T19:23:58,324 remove the `[project]` table from your file and rely entirely on other means of 2023-08-10T19:23:58,324 configuration. 2023-08-10T19:23:58,325 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-10T19:23:58,325 or your builds will no longer be supported. 2023-08-10T19:23:58,326 ******************************************************************************** 2023-08-10T19:23:58,327 !! 2023-08-10T19:23:58,327 _handle_missing_dynamic(dist, project_table) 2023-08-10T19:23:58,328 /tmp/pip-build-env-3ekkshcq/overlay/lib/python3.7/site-packages/setuptools/config/_apply_pyprojecttoml.py:62: _WouldIgnoreField: `urls` defined outside of `pyproject.toml` would be ignored. 2023-08-10T19:23:58,328 !! 2023-08-10T19:23:58,329 ******************************************************************************** 2023-08-10T19:23:58,329 ########################################################################## 2023-08-10T19:23:58,330 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-08-10T19:23:58,330 ########################################################################## 2023-08-10T19:23:58,331 The following seems to be defined outside of `pyproject.toml`: 2023-08-10T19:23:58,332 `urls = {'Bug Tracker': 'https://github.com/AP6YC/cvi/issues', 'Documentation': 'https://cluster-validity-indices.readthedocs.io/'}` 2023-08-10T19:23:58,333 According to the spec (see the link below), however, setuptools CANNOT 2023-08-10T19:23:58,334 consider this value unless `urls` is listed as `dynamic`. 2023-08-10T19:23:58,334 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-08-10T19:23:58,335 For the time being, `setuptools` will still consider the given value (as a 2023-08-10T19:23:58,336 **transitional** measure), but please note that future releases of setuptools will 2023-08-10T19:23:58,336 follow strictly the standard. 2023-08-10T19:23:58,337 To prevent this warning, you can list `urls` under `dynamic` or alternatively 2023-08-10T19:23:58,337 remove the `[project]` table from your file and rely entirely on other means of 2023-08-10T19:23:58,337 configuration. 2023-08-10T19:23:58,338 By 2023-Oct-30, you need to update your project and remove deprecated calls 2023-08-10T19:23:58,338 or your builds will no longer be supported. 2023-08-10T19:23:58,339 ******************************************************************************** 2023-08-10T19:23:58,340 !! 2023-08-10T19:23:58,340 _handle_missing_dynamic(dist, project_table) 2023-08-10T19:23:58,484 Building wheel for cvi (pyproject.toml): finished with status 'done' 2023-08-10T19:23:58,498 Created wheel for cvi: filename=cvi-0.5.0-py3-none-any.whl size=32015 sha256=d05dda643f6cb25cbffb66d504f79c396dc0804d552aa5a6d1bfd01671dacbd0 2023-08-10T19:23:58,500 Stored in directory: /tmp/pip-ephem-wheel-cache-_pwobo1a/wheels/d5/35/bf/d007d56165912d57e023303697282a0b8c578d6127035a809f 2023-08-10T19:23:58,528 Successfully built cvi 2023-08-10T19:23:58,537 Removed build tracker: '/tmp/pip-build-tracker-dd1pp368'