2022-09-19T17:34:38,862 Created temporary directory: /tmp/pip-ephem-wheel-cache-cuukzoik 2022-09-19T17:34:38,867 Created temporary directory: /tmp/pip-build-tracker-v0l8khzv 2022-09-19T17:34:38,868 Initialized build tracking at /tmp/pip-build-tracker-v0l8khzv 2022-09-19T17:34:38,869 Created build tracker: /tmp/pip-build-tracker-v0l8khzv 2022-09-19T17:34:38,869 Entered build tracker: /tmp/pip-build-tracker-v0l8khzv 2022-09-19T17:34:38,870 Created temporary directory: /tmp/pip-wheel-bb1mfkzm 2022-09-19T17:34:38,941 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2022-09-19T17:34:38,949 2 location(s) to search for versions of cvi: 2022-09-19T17:34:38,949 * https://pypi.org/simple/cvi/ 2022-09-19T17:34:38,949 * https://www.piwheels.org/simple/cvi/ 2022-09-19T17:34:38,951 Fetching project page and analyzing links: https://pypi.org/simple/cvi/ 2022-09-19T17:34:38,952 Getting page https://pypi.org/simple/cvi/ 2022-09-19T17:34:38,955 Found index url https://pypi.org/simple 2022-09-19T17:34:39,149 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/d9/40/a81a72ef45bf5dcd7ee12fd4e521b20050e46f8f95e6cc08ad895e79d35b/cvi-0.1.0a1-py3-none-any.whl#sha256=7e877b129300c82100b1c97ab4e07799a6f6f8f691b9bdd04d569339b082d302 (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2022-09-19T17:34:39,151 Found link https://files.pythonhosted.org/packages/15/63/c98fc65fb527bf3c326122ac38adf2f99075db7e65b62e15c1f2e06ae63e/cvi-0.1.0a1.tar.gz#sha256=a5ceb4d5e0aaa6cffb73a85dabf0fafd8e53596c960af96660c8d86dad39d4cf (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.1.0a1 2022-09-19T17:34:39,152 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/a6/26/f61a6400e5756141b96f426c713eab9130857c53b76b13b1b4e1be3563ee/cvi-0.1.0a2-py3-none-any.whl#sha256=414fff40901f34feaf8b41d0518ecdddfce2642a1580efcce0fff4f9abe71123 (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2022-09-19T17:34:39,153 Found link https://files.pythonhosted.org/packages/0a/92/7dca8984b7158ac5b286ad7af4379960075bf8434c53e4a1e3a49f0e5cf0/cvi-0.1.0a2.tar.gz#sha256=716a4a99992c8d41c9649831b53d638474d7c1b5fe3ede22440cda817aefaefa (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.1.0a2 2022-09-19T17:34:39,154 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/26/e0/07beb00e46f3d00b2fd106c0884111e445dc15e87bcab4eb7444d8a5be8e/cvi-0.1.0a3-py3-none-any.whl#sha256=c93c63471308195e78b854e3ad1e896a46efcdf44af044eaf21f789c9f3a44bb (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2022-09-19T17:34:39,155 Found link https://files.pythonhosted.org/packages/83/38/17e2d7569d5c565643e0ebd63f62071c43dd1a96cde5719066c6ec4455c9/cvi-0.1.0a3.tar.gz#sha256=2d8f9946ea904ed06b75fba150f6ccdf3663e6a47f7df3e346e6896b0b198dba (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.1.0a3 2022-09-19T17:34:39,156 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/72/42/353ccfab1cfdb5d7e0cda90e5a9cb4d3dd24932a153fd3b466e8891ea793/cvi-0.1.0a4-py3-none-any.whl#sha256=53f03da20832bbdad26e2adc6f65323908ef19b82171e451a0cc677f5ea419ef (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2022-09-19T17:34:39,157 Found link https://files.pythonhosted.org/packages/91/6f/fa2f196409f1c29910f5e3168d25240004b9277ea75f042c60dcf621c99b/cvi-0.1.0a4.tar.gz#sha256=e5c42aba908237e8c6f7b047b3873012cd6f726943f18913e6caad62e7399b8a (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.1.0a4 2022-09-19T17:34:39,158 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/b1/1e/da713461fa1f70355c0ff09eb44a5291b40474c6ca1193987d50e5655a59/cvi-0.1.0-py3-none-any.whl#sha256=9442314eab464e49814789a686ef71ce2016425787e74e2b8b07f9b91644eb94 (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2022-09-19T17:34:39,159 Found link https://files.pythonhosted.org/packages/93/9b/07fb46eef201e3c37396b82d75c5280ced222cabebaf527af367cd829f5b/cvi-0.1.0.tar.gz#sha256=535474ca5216d94953dd5d90e0a09a6ca1b9636b05ea9f4b57f349c9010e2756 (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.1.0 2022-09-19T17:34:39,160 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/46/d6/99dbb4442c3db7e06cb83c3e2700af507c30c54f264c55341efc80dc3d7e/cvi-0.1.1-py3-none-any.whl#sha256=883d168bf6a4b3bae79674d1372d8cc9e56058b49e22eb06aba7837c52d08c60 (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2022-09-19T17:34:39,161 Found link https://files.pythonhosted.org/packages/b0/ba/998362b94c5996635c53367c8f6ebc03774d1e82e3072d73d2a21745e8be/cvi-0.1.1.tar.gz#sha256=55f52eb3761541cd1628ac006ca6731f6658f42fa0f081293a756d5855eb2109 (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.1.1 2022-09-19T17:34:39,162 Fetching project page and analyzing links: https://www.piwheels.org/simple/cvi/ 2022-09-19T17:34:39,163 Getting page https://www.piwheels.org/simple/cvi/ 2022-09-19T17:34:39,165 Found index url https://www.piwheels.org/simple 2022-09-19T17:34:39,371 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) 2022-09-19T17:34:39,371 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) 2022-09-19T17:34:39,372 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) 2022-09-19T17:34:39,372 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) 2022-09-19T17:34:39,373 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) 2022-09-19T17:34:39,373 Skipping link: not a file: https://www.piwheels.org/simple/cvi/ 2022-09-19T17:34:39,374 Skipping link: not a file: https://pypi.org/simple/cvi/ 2022-09-19T17:34:39,409 Given no hashes to check 1 links for project 'cvi': discarding no candidates 2022-09-19T17:34:39,440 Collecting cvi==0.1.1 2022-09-19T17:34:39,445 Created temporary directory: /tmp/pip-unpack-gbr0exot 2022-09-19T17:34:39,674 Downloading cvi-0.1.1.tar.gz (16 kB) 2022-09-19T17:34:39,783 Added cvi==0.1.1 from https://files.pythonhosted.org/packages/b0/ba/998362b94c5996635c53367c8f6ebc03774d1e82e3072d73d2a21745e8be/cvi-0.1.1.tar.gz#sha256=55f52eb3761541cd1628ac006ca6731f6658f42fa0f081293a756d5855eb2109 to build tracker '/tmp/pip-build-tracker-v0l8khzv' 2022-09-19T17:34:39,791 Created temporary directory: /tmp/pip-build-env-ji_yumjd 2022-09-19T17:34:39,805 Created temporary directory: /tmp/pip-standalone-pip-29vflxar 2022-09-19T17:34:42,081 Installing build dependencies: started 2022-09-19T17:34:42,083 Running command pip subprocess to install build dependencies 2022-09-19T17:34:51,662 Using pip 22.1.2 from /tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip (python 3.7) 2022-09-19T17:34:53,549 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2022-09-19T17:34:57,772 Collecting setuptools>=42 2022-09-19T17:34:58,030 Using cached https://www.piwheels.org/simple/setuptools/setuptools-65.3.0-py3-none-any.whl (1.2 MB) 2022-09-19T17:35:09,522 Installing collected packages: setuptools 2022-09-19T17:35:14,447 Successfully installed setuptools-65.3.0 2022-09-19T17:35:14,680 --- Logging error --- 2022-09-19T17:35:14,680 Traceback (most recent call last): 2022-09-19T17:35:14,681 File "/tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip/_internal/utils/logging.py", line 177, in emit 2022-09-19T17:35:14,681 self.console.print(renderable, overflow="ignore", crop=False, style=style) 2022-09-19T17:35:14,681 File "/tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip/_vendor/rich/console.py", line 1752, in print 2022-09-19T17:35:14,681 extend(render(renderable, render_options)) 2022-09-19T17:35:14,682 File "/tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip/_vendor/rich/console.py", line 1390, in render 2022-09-19T17:35:14,682 for render_output in iter_render: 2022-09-19T17:35:14,682 File "/tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip/_internal/utils/logging.py", line 134, in __rich_console__ 2022-09-19T17:35:14,683 for line in lines: 2022-09-19T17:35:14,683 File "/tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip/_vendor/rich/segment.py", line 245, in split_lines 2022-09-19T17:35:14,683 for segment in segments: 2022-09-19T17:35:14,684 File "/tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip/_vendor/rich/console.py", line 1368, in render 2022-09-19T17:35:14,684 renderable = rich_cast(renderable) 2022-09-19T17:35:14,684 File "/tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip/_vendor/rich/protocol.py", line 36, in rich_cast 2022-09-19T17:35:14,684 renderable = cast_method() 2022-09-19T17:35:14,685 File "/tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip/_internal/self_outdated_check.py", line 130, in __rich__ 2022-09-19T17:35:14,685 pip_cmd = get_best_invocation_for_this_pip() 2022-09-19T17:35:14,685 File "/tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip/_internal/utils/entrypoints.py", line 60, in get_best_invocation_for_this_pip 2022-09-19T17:35:14,686 os.path.join(binary_prefix, exe_name), 2022-09-19T17:35:14,686 File "/usr/lib/python3.7/genericpath.py", line 97, in samefile 2022-09-19T17:35:14,686 s2 = os.stat(f2) 2022-09-19T17:35:14,686 FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.7' 2022-09-19T17:35:14,687 Call stack: 2022-09-19T17:35:14,687 File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main 2022-09-19T17:35:14,687 "__main__", mod_spec) 2022-09-19T17:35:14,688 File "/usr/lib/python3.7/runpy.py", line 85, in _run_code 2022-09-19T17:35:14,688 exec(code, run_globals) 2022-09-19T17:35:14,688 File "/tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip/__main__.py", line 31, in 2022-09-19T17:35:14,689 sys.exit(_main()) 2022-09-19T17:35:14,689 File "/tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip/_internal/cli/main.py", line 70, in main 2022-09-19T17:35:14,689 return command.main(cmd_args) 2022-09-19T17:35:14,690 File "/tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip/_internal/cli/base_command.py", line 101, in main 2022-09-19T17:35:14,690 return self._main(args) 2022-09-19T17:35:14,690 File "/tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip/_internal/cli/base_command.py", line 223, in _main 2022-09-19T17:35:14,691 self.handle_pip_version_check(options) 2022-09-19T17:35:14,691 File "/tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip/_internal/cli/req_command.py", line 148, in handle_pip_version_check 2022-09-19T17:35:14,691 pip_self_version_check(session, options) 2022-09-19T17:35:14,692 File "/tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip/_internal/self_outdated_check.py", line 237, in pip_self_version_check 2022-09-19T17:35:14,692 logger.info("[present-rich] %s", upgrade_prompt) 2022-09-19T17:35:14,692 File "/usr/lib/python3.7/logging/__init__.py", line 1383, in info 2022-09-19T17:35:14,693 self._log(INFO, msg, args, **kwargs) 2022-09-19T17:35:14,693 File "/usr/lib/python3.7/logging/__init__.py", line 1519, in _log 2022-09-19T17:35:14,693 self.handle(record) 2022-09-19T17:35:14,693 File "/usr/lib/python3.7/logging/__init__.py", line 1529, in handle 2022-09-19T17:35:14,694 self.callHandlers(record) 2022-09-19T17:35:14,694 File "/usr/lib/python3.7/logging/__init__.py", line 1591, in callHandlers 2022-09-19T17:35:14,694 hdlr.handle(record) 2022-09-19T17:35:14,695 File "/usr/lib/python3.7/logging/__init__.py", line 905, in handle 2022-09-19T17:35:14,695 self.emit(record) 2022-09-19T17:35:14,695 File "/tmp/pip-standalone-pip-29vflxar/__env_pip__.zip/pip/_internal/utils/logging.py", line 179, in emit 2022-09-19T17:35:14,696 self.handleError(record) 2022-09-19T17:35:14,696 Message: '[present-rich] %s' 2022-09-19T17:35:14,696 Arguments: (UpgradePrompt(old='22.1.2', new='22.2.2'),) 2022-09-19T17:35:15,175 Installing build dependencies: finished with status 'done' 2022-09-19T17:35:15,202 Getting requirements to build wheel: started 2022-09-19T17:35:15,204 Running command Getting requirements to build wheel 2022-09-19T17:35:19,595 /usr/local/lib/python3.7/dist-packages/setuptools/config/pyprojecttoml.py:102: _ExperimentalProjectMetadata: Support for project metadata in `pyproject.toml` is still experimental and may be removed (or change) in future releases. 2022-09-19T17:35:19,596 warnings.warn(msg, _ExperimentalProjectMetadata) 2022-09-19T17:35:19,597 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-19T17:35:19,598 ########################################################################## 2022-09-19T17:35:19,598 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-19T17:35:19,599 ########################################################################## 2022-09-19T17:35:19,599 The following seems to be defined outside of `pyproject.toml`: 2022-09-19T17:35:19,600 `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** | **Commits** | **Commits Since Release**\n| [![version][version-img]][version-url] | [![issues][issues-img]][issues-url] | [![commits][commits-img]][commits-url] | [![compare][compare-img]][compare-url] |\n\n| **Zenodo DOI** |\n| :------------: |\n| [![DOI][zenodo-img]][zenodo-url] |\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[commits-img]: https://img.shields.io/github/commit-activity/m/AP6YC/cvi?style=flat\n[commits-url]: https://github.com/AP6YC/cvi/commits/main\n\n[compare-img]: https://img.shields.io/github/commits-since/AP6YC/cvi/latest/develop\n[compare-url]: https://github.com/AP6YC/cvi/compare/v0.1.1...develop\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.1.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__**: the `cvi` package assumes the Numpy **row-major** convention where rows are individual samples and columns are features.\nA 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__**: 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\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"` 2022-09-19T17:35:19,601 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-19T17:35:19,601 consider this value unless 'readme' is listed as `dynamic`. 2022-09-19T17:35:19,602 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-19T17:35:19,603 For the time being, `setuptools` will still consider the given value (as a 2022-09-19T17:35:19,603 **transitional** measure), but please note that future releases of setuptools will 2022-09-19T17:35:19,603 follow strictly the standard. 2022-09-19T17:35:19,604 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2022-09-19T17:35:19,604 remove the `[project]` table from your file and rely entirely on other means of 2022-09-19T17:35:19,605 configuration. 2022-09-19T17:35:19,605 !! 2022-09-19T17:35:19,606 warnings.warn(msg, _WouldIgnoreField) 2022-09-19T17:35:21,155 running egg_info 2022-09-19T17:35:21,785 writing src/cvi.egg-info/PKG-INFO 2022-09-19T17:35:22,381 writing dependency_links to src/cvi.egg-info/dependency_links.txt 2022-09-19T17:35:25,331 writing requirements to src/cvi.egg-info/requires.txt 2022-09-19T17:35:25,923 writing top-level names to src/cvi.egg-info/top_level.txt 2022-09-19T17:35:26,634 reading manifest file 'src/cvi.egg-info/SOURCES.txt' 2022-09-19T17:35:26,638 adding license file 'LICENSE' 2022-09-19T17:35:26,643 writing manifest file 'src/cvi.egg-info/SOURCES.txt' 2022-09-19T17:35:26,648 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-19T17:35:26,649 ########################################################################## 2022-09-19T17:35:26,650 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-19T17:35:26,650 ########################################################################## 2022-09-19T17:35:26,651 The following seems to be defined outside of `pyproject.toml`: 2022-09-19T17:35:26,652 `requires-python = =3.6')>` 2022-09-19T17:35:26,653 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-19T17:35:26,653 consider this value unless 'requires-python' is listed as `dynamic`. 2022-09-19T17:35:26,654 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-19T17:35:26,655 For the time being, `setuptools` will still consider the given value (as a 2022-09-19T17:35:26,656 **transitional** measure), but please note that future releases of setuptools will 2022-09-19T17:35:26,656 follow strictly the standard. 2022-09-19T17:35:26,657 To prevent this warning, you can list 'requires-python' under `dynamic` or alternatively 2022-09-19T17:35:26,658 remove the `[project]` table from your file and rely entirely on other means of 2022-09-19T17:35:26,658 configuration. 2022-09-19T17:35:26,659 !! 2022-09-19T17:35:26,660 warnings.warn(msg, _WouldIgnoreField) 2022-09-19T17:35:26,661 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-19T17:35:26,662 ########################################################################## 2022-09-19T17:35:26,662 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-19T17:35:26,663 ########################################################################## 2022-09-19T17:35:26,663 The following seems to be defined outside of `pyproject.toml`: 2022-09-19T17:35:26,664 `classifiers = ['Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent']` 2022-09-19T17:35:26,665 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-19T17:35:26,665 consider this value unless 'classifiers' is listed as `dynamic`. 2022-09-19T17:35:26,666 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-19T17:35:26,667 For the time being, `setuptools` will still consider the given value (as a 2022-09-19T17:35:26,668 **transitional** measure), but please note that future releases of setuptools will 2022-09-19T17:35:26,668 follow strictly the standard. 2022-09-19T17:35:26,669 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2022-09-19T17:35:26,669 remove the `[project]` table from your file and rely entirely on other means of 2022-09-19T17:35:26,670 configuration. 2022-09-19T17:35:26,671 !! 2022-09-19T17:35:26,672 warnings.warn(msg, _WouldIgnoreField) 2022-09-19T17:35:26,672 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-19T17:35:26,673 ########################################################################## 2022-09-19T17:35:26,674 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-19T17:35:26,674 ########################################################################## 2022-09-19T17:35:26,675 The following seems to be defined outside of `pyproject.toml`: 2022-09-19T17:35:26,676 `urls = {'Bug Tracker': 'https://github.com/AP6YC/cvi/issues', 'Documentation': 'https://cluster-validity-indices.readthedocs.io/'}` 2022-09-19T17:35:26,677 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-19T17:35:26,677 consider this value unless 'urls' is listed as `dynamic`. 2022-09-19T17:35:26,678 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-19T17:35:26,679 For the time being, `setuptools` will still consider the given value (as a 2022-09-19T17:35:26,679 **transitional** measure), but please note that future releases of setuptools will 2022-09-19T17:35:26,680 follow strictly the standard. 2022-09-19T17:35:26,680 To prevent this warning, you can list 'urls' under `dynamic` or alternatively 2022-09-19T17:35:26,681 remove the `[project]` table from your file and rely entirely on other means of 2022-09-19T17:35:26,681 configuration. 2022-09-19T17:35:26,682 !! 2022-09-19T17:35:26,683 warnings.warn(msg, _WouldIgnoreField) 2022-09-19T17:35:26,949 Getting requirements to build wheel: finished with status 'done' 2022-09-19T17:35:26,974 Created temporary directory: /tmp/pip-standalone-pip-tot7pqun 2022-09-19T17:35:29,203 Installing backend dependencies: started 2022-09-19T17:35:29,205 Running command pip subprocess to install backend dependencies 2022-09-19T17:35:38,839 Using pip 22.1.2 from /tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip (python 3.7) 2022-09-19T17:35:40,778 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2022-09-19T17:35:41,702 Collecting wheel 2022-09-19T17:35:41,739 Using cached https://www.piwheels.org/simple/wheel/wheel-0.37.1-py2.py3-none-any.whl (35 kB) 2022-09-19T17:35:52,165 Installing collected packages: wheel 2022-09-19T17:35:52,435 Creating /tmp/pip-build-env-ji_yumjd/normal/bin 2022-09-19T17:35:52,439 changing mode of /tmp/pip-build-env-ji_yumjd/normal/bin/wheel to 755 2022-09-19T17:35:52,465 Successfully installed wheel-0.37.1 2022-09-19T17:35:52,695 --- Logging error --- 2022-09-19T17:35:52,696 Traceback (most recent call last): 2022-09-19T17:35:52,696 File "/tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip/_internal/utils/logging.py", line 177, in emit 2022-09-19T17:35:52,697 self.console.print(renderable, overflow="ignore", crop=False, style=style) 2022-09-19T17:35:52,697 File "/tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip/_vendor/rich/console.py", line 1752, in print 2022-09-19T17:35:52,697 extend(render(renderable, render_options)) 2022-09-19T17:35:52,698 File "/tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip/_vendor/rich/console.py", line 1390, in render 2022-09-19T17:35:52,698 for render_output in iter_render: 2022-09-19T17:35:52,698 File "/tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip/_internal/utils/logging.py", line 134, in __rich_console__ 2022-09-19T17:35:52,699 for line in lines: 2022-09-19T17:35:52,699 File "/tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip/_vendor/rich/segment.py", line 245, in split_lines 2022-09-19T17:35:52,699 for segment in segments: 2022-09-19T17:35:52,700 File "/tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip/_vendor/rich/console.py", line 1368, in render 2022-09-19T17:35:52,700 renderable = rich_cast(renderable) 2022-09-19T17:35:52,700 File "/tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip/_vendor/rich/protocol.py", line 36, in rich_cast 2022-09-19T17:35:52,701 renderable = cast_method() 2022-09-19T17:35:52,701 File "/tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip/_internal/self_outdated_check.py", line 130, in __rich__ 2022-09-19T17:35:52,701 pip_cmd = get_best_invocation_for_this_pip() 2022-09-19T17:35:52,701 File "/tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip/_internal/utils/entrypoints.py", line 60, in get_best_invocation_for_this_pip 2022-09-19T17:35:52,702 os.path.join(binary_prefix, exe_name), 2022-09-19T17:35:52,702 File "/usr/lib/python3.7/genericpath.py", line 97, in samefile 2022-09-19T17:35:52,702 s2 = os.stat(f2) 2022-09-19T17:35:52,703 FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.7' 2022-09-19T17:35:52,703 Call stack: 2022-09-19T17:35:52,703 File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main 2022-09-19T17:35:52,704 "__main__", mod_spec) 2022-09-19T17:35:52,704 File "/usr/lib/python3.7/runpy.py", line 85, in _run_code 2022-09-19T17:35:52,704 exec(code, run_globals) 2022-09-19T17:35:52,705 File "/tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip/__main__.py", line 31, in 2022-09-19T17:35:52,705 sys.exit(_main()) 2022-09-19T17:35:52,705 File "/tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip/_internal/cli/main.py", line 70, in main 2022-09-19T17:35:52,706 return command.main(cmd_args) 2022-09-19T17:35:52,706 File "/tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip/_internal/cli/base_command.py", line 101, in main 2022-09-19T17:35:52,706 return self._main(args) 2022-09-19T17:35:52,706 File "/tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip/_internal/cli/base_command.py", line 223, in _main 2022-09-19T17:35:52,707 self.handle_pip_version_check(options) 2022-09-19T17:35:52,707 File "/tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip/_internal/cli/req_command.py", line 148, in handle_pip_version_check 2022-09-19T17:35:52,707 pip_self_version_check(session, options) 2022-09-19T17:35:52,708 File "/tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip/_internal/self_outdated_check.py", line 237, in pip_self_version_check 2022-09-19T17:35:52,708 logger.info("[present-rich] %s", upgrade_prompt) 2022-09-19T17:35:52,708 File "/usr/lib/python3.7/logging/__init__.py", line 1383, in info 2022-09-19T17:35:52,709 self._log(INFO, msg, args, **kwargs) 2022-09-19T17:35:52,709 File "/usr/lib/python3.7/logging/__init__.py", line 1519, in _log 2022-09-19T17:35:52,709 self.handle(record) 2022-09-19T17:35:52,710 File "/usr/lib/python3.7/logging/__init__.py", line 1529, in handle 2022-09-19T17:35:52,710 self.callHandlers(record) 2022-09-19T17:35:52,710 File "/usr/lib/python3.7/logging/__init__.py", line 1591, in callHandlers 2022-09-19T17:35:52,711 hdlr.handle(record) 2022-09-19T17:35:52,711 File "/usr/lib/python3.7/logging/__init__.py", line 905, in handle 2022-09-19T17:35:52,711 self.emit(record) 2022-09-19T17:35:52,711 File "/tmp/pip-standalone-pip-tot7pqun/__env_pip__.zip/pip/_internal/utils/logging.py", line 179, in emit 2022-09-19T17:35:52,712 self.handleError(record) 2022-09-19T17:35:52,712 Message: '[present-rich] %s' 2022-09-19T17:35:52,712 Arguments: (UpgradePrompt(old='22.1.2', new='22.2.2'),) 2022-09-19T17:35:53,122 Installing backend dependencies: finished with status 'done' 2022-09-19T17:35:53,144 Created temporary directory: /tmp/pip-modern-metadata-3zz5j0b5 2022-09-19T17:35:53,150 Preparing metadata (pyproject.toml): started 2022-09-19T17:35:53,152 Running command Preparing metadata (pyproject.toml) 2022-09-19T17:35:57,349 /usr/local/lib/python3.7/dist-packages/setuptools/config/pyprojecttoml.py:102: _ExperimentalProjectMetadata: Support for project metadata in `pyproject.toml` is still experimental and may be removed (or change) in future releases. 2022-09-19T17:35:57,351 warnings.warn(msg, _ExperimentalProjectMetadata) 2022-09-19T17:35:57,351 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-19T17:35:57,352 ########################################################################## 2022-09-19T17:35:57,353 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-19T17:35:57,353 ########################################################################## 2022-09-19T17:35:57,354 The following seems to be defined outside of `pyproject.toml`: 2022-09-19T17:35:57,354 `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** | **Commits** | **Commits Since Release**\n| [![version][version-img]][version-url] | [![issues][issues-img]][issues-url] | [![commits][commits-img]][commits-url] | [![compare][compare-img]][compare-url] |\n\n| **Zenodo DOI** |\n| :------------: |\n| [![DOI][zenodo-img]][zenodo-url] |\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[commits-img]: https://img.shields.io/github/commit-activity/m/AP6YC/cvi?style=flat\n[commits-url]: https://github.com/AP6YC/cvi/commits/main\n\n[compare-img]: https://img.shields.io/github/commits-since/AP6YC/cvi/latest/develop\n[compare-url]: https://github.com/AP6YC/cvi/compare/v0.1.1...develop\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.1.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__**: the `cvi` package assumes the Numpy **row-major** convention where rows are individual samples and columns are features.\nA 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__**: 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\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"` 2022-09-19T17:35:57,355 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-19T17:35:57,356 consider this value unless 'readme' is listed as `dynamic`. 2022-09-19T17:35:57,356 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-19T17:35:57,357 For the time being, `setuptools` will still consider the given value (as a 2022-09-19T17:35:57,357 **transitional** measure), but please note that future releases of setuptools will 2022-09-19T17:35:57,358 follow strictly the standard. 2022-09-19T17:35:57,358 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2022-09-19T17:35:57,359 remove the `[project]` table from your file and rely entirely on other means of 2022-09-19T17:35:57,359 configuration. 2022-09-19T17:35:57,360 !! 2022-09-19T17:35:57,360 warnings.warn(msg, _WouldIgnoreField) 2022-09-19T17:35:58,950 running dist_info 2022-09-19T17:35:59,591 creating /tmp/pip-modern-metadata-3zz5j0b5/cvi.egg-info 2022-09-19T17:36:00,224 writing /tmp/pip-modern-metadata-3zz5j0b5/cvi.egg-info/PKG-INFO 2022-09-19T17:36:00,827 writing dependency_links to /tmp/pip-modern-metadata-3zz5j0b5/cvi.egg-info/dependency_links.txt 2022-09-19T17:36:03,807 writing requirements to /tmp/pip-modern-metadata-3zz5j0b5/cvi.egg-info/requires.txt 2022-09-19T17:36:04,405 writing top-level names to /tmp/pip-modern-metadata-3zz5j0b5/cvi.egg-info/top_level.txt 2022-09-19T17:36:04,408 writing manifest file '/tmp/pip-modern-metadata-3zz5j0b5/cvi.egg-info/SOURCES.txt' 2022-09-19T17:36:05,120 reading manifest file '/tmp/pip-modern-metadata-3zz5j0b5/cvi.egg-info/SOURCES.txt' 2022-09-19T17:36:05,123 adding license file 'LICENSE' 2022-09-19T17:36:05,128 writing manifest file '/tmp/pip-modern-metadata-3zz5j0b5/cvi.egg-info/SOURCES.txt' 2022-09-19T17:36:05,131 creating '/tmp/pip-modern-metadata-3zz5j0b5/cvi-0.1.1.dist-info' 2022-09-19T17:36:05,269 adding license file "LICENSE" (matched pattern "LICEN[CS]E*") 2022-09-19T17:36:05,282 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-19T17:36:05,283 ########################################################################## 2022-09-19T17:36:05,283 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-19T17:36:05,284 ########################################################################## 2022-09-19T17:36:05,284 The following seems to be defined outside of `pyproject.toml`: 2022-09-19T17:36:05,285 `requires-python = =3.6')>` 2022-09-19T17:36:05,285 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-19T17:36:05,286 consider this value unless 'requires-python' is listed as `dynamic`. 2022-09-19T17:36:05,286 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-19T17:36:05,287 For the time being, `setuptools` will still consider the given value (as a 2022-09-19T17:36:05,287 **transitional** measure), but please note that future releases of setuptools will 2022-09-19T17:36:05,287 follow strictly the standard. 2022-09-19T17:36:05,288 To prevent this warning, you can list 'requires-python' under `dynamic` or alternatively 2022-09-19T17:36:05,289 remove the `[project]` table from your file and rely entirely on other means of 2022-09-19T17:36:05,289 configuration. 2022-09-19T17:36:05,291 !! 2022-09-19T17:36:05,292 warnings.warn(msg, _WouldIgnoreField) 2022-09-19T17:36:05,292 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-19T17:36:05,293 ########################################################################## 2022-09-19T17:36:05,294 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-19T17:36:05,294 ########################################################################## 2022-09-19T17:36:05,295 The following seems to be defined outside of `pyproject.toml`: 2022-09-19T17:36:05,296 `classifiers = ['Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent']` 2022-09-19T17:36:05,297 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-19T17:36:05,297 consider this value unless 'classifiers' is listed as `dynamic`. 2022-09-19T17:36:05,298 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-19T17:36:05,299 For the time being, `setuptools` will still consider the given value (as a 2022-09-19T17:36:05,300 **transitional** measure), but please note that future releases of setuptools will 2022-09-19T17:36:05,300 follow strictly the standard. 2022-09-19T17:36:05,301 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2022-09-19T17:36:05,301 remove the `[project]` table from your file and rely entirely on other means of 2022-09-19T17:36:05,301 configuration. 2022-09-19T17:36:05,303 !! 2022-09-19T17:36:05,304 warnings.warn(msg, _WouldIgnoreField) 2022-09-19T17:36:05,304 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-19T17:36:05,305 ########################################################################## 2022-09-19T17:36:05,306 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-19T17:36:05,306 ########################################################################## 2022-09-19T17:36:05,307 The following seems to be defined outside of `pyproject.toml`: 2022-09-19T17:36:05,308 `urls = {'Bug Tracker': 'https://github.com/AP6YC/cvi/issues', 'Documentation': 'https://cluster-validity-indices.readthedocs.io/'}` 2022-09-19T17:36:05,309 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-19T17:36:05,309 consider this value unless 'urls' is listed as `dynamic`. 2022-09-19T17:36:05,310 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-19T17:36:05,311 For the time being, `setuptools` will still consider the given value (as a 2022-09-19T17:36:05,311 **transitional** measure), but please note that future releases of setuptools will 2022-09-19T17:36:05,312 follow strictly the standard. 2022-09-19T17:36:05,313 To prevent this warning, you can list 'urls' under `dynamic` or alternatively 2022-09-19T17:36:05,313 remove the `[project]` table from your file and rely entirely on other means of 2022-09-19T17:36:05,313 configuration. 2022-09-19T17:36:05,314 !! 2022-09-19T17:36:05,315 warnings.warn(msg, _WouldIgnoreField) 2022-09-19T17:36:05,593 Preparing metadata (pyproject.toml): finished with status 'done' 2022-09-19T17:36:05,608 Source in /tmp/pip-wheel-bb1mfkzm/cvi_0680cbd079a8419da3314966442249c2 has version 0.1.1, which satisfies requirement cvi==0.1.1 from https://files.pythonhosted.org/packages/b0/ba/998362b94c5996635c53367c8f6ebc03774d1e82e3072d73d2a21745e8be/cvi-0.1.1.tar.gz#sha256=55f52eb3761541cd1628ac006ca6731f6658f42fa0f081293a756d5855eb2109 2022-09-19T17:36:05,611 Removed cvi==0.1.1 from https://files.pythonhosted.org/packages/b0/ba/998362b94c5996635c53367c8f6ebc03774d1e82e3072d73d2a21745e8be/cvi-0.1.1.tar.gz#sha256=55f52eb3761541cd1628ac006ca6731f6658f42fa0f081293a756d5855eb2109 from build tracker '/tmp/pip-build-tracker-v0l8khzv' 2022-09-19T17:36:05,625 Created temporary directory: /tmp/pip-unpack-g6ssy5z6 2022-09-19T17:36:05,626 Building wheels for collected packages: cvi 2022-09-19T17:36:05,636 Created temporary directory: /tmp/pip-wheel-3ydh2ydv 2022-09-19T17:36:05,637 Destination directory: /tmp/pip-wheel-3ydh2ydv 2022-09-19T17:36:05,642 Building wheel for cvi (pyproject.toml): started 2022-09-19T17:36:05,644 Running command Building wheel for cvi (pyproject.toml) 2022-09-19T17:36:09,798 /usr/local/lib/python3.7/dist-packages/setuptools/config/pyprojecttoml.py:102: _ExperimentalProjectMetadata: Support for project metadata in `pyproject.toml` is still experimental and may be removed (or change) in future releases. 2022-09-19T17:36:09,799 warnings.warn(msg, _ExperimentalProjectMetadata) 2022-09-19T17:36:09,800 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-19T17:36:09,801 ########################################################################## 2022-09-19T17:36:09,801 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-19T17:36:09,802 ########################################################################## 2022-09-19T17:36:09,802 The following seems to be defined outside of `pyproject.toml`: 2022-09-19T17:36:09,803 `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** | **Commits** | **Commits Since Release**\n| [![version][version-img]][version-url] | [![issues][issues-img]][issues-url] | [![commits][commits-img]][commits-url] | [![compare][compare-img]][compare-url] |\n\n| **Zenodo DOI** |\n| :------------: |\n| [![DOI][zenodo-img]][zenodo-url] |\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[commits-img]: https://img.shields.io/github/commit-activity/m/AP6YC/cvi?style=flat\n[commits-url]: https://github.com/AP6YC/cvi/commits/main\n\n[compare-img]: https://img.shields.io/github/commits-since/AP6YC/cvi/latest/develop\n[compare-url]: https://github.com/AP6YC/cvi/compare/v0.1.1...develop\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.1.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__**: the `cvi` package assumes the Numpy **row-major** convention where rows are individual samples and columns are features.\nA 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__**: 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\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"` 2022-09-19T17:36:09,804 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-19T17:36:09,804 consider this value unless 'readme' is listed as `dynamic`. 2022-09-19T17:36:09,805 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-19T17:36:09,806 For the time being, `setuptools` will still consider the given value (as a 2022-09-19T17:36:09,806 **transitional** measure), but please note that future releases of setuptools will 2022-09-19T17:36:09,806 follow strictly the standard. 2022-09-19T17:36:09,807 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2022-09-19T17:36:09,807 remove the `[project]` table from your file and rely entirely on other means of 2022-09-19T17:36:09,808 configuration. 2022-09-19T17:36:09,809 !! 2022-09-19T17:36:09,809 warnings.warn(msg, _WouldIgnoreField) 2022-09-19T17:36:10,778 running bdist_wheel 2022-09-19T17:36:11,570 running build 2022-09-19T17:36:11,571 running build_py 2022-09-19T17:36:12,200 creating build 2022-09-19T17:36:12,201 creating build/lib 2022-09-19T17:36:12,202 creating build/lib/cvi 2022-09-19T17:36:12,204 copying src/cvi/__init__.py -> build/lib/cvi 2022-09-19T17:36:12,208 copying src/cvi/icvi.py -> build/lib/cvi 2022-09-19T17:36:12,214 creating build/lib/cvi/modules 2022-09-19T17:36:12,215 copying src/cvi/modules/__init__.py -> build/lib/cvi/modules 2022-09-19T17:36:12,219 copying src/cvi/modules/cSIL.py -> build/lib/cvi/modules 2022-09-19T17:36:12,223 copying src/cvi/modules/DB.py -> build/lib/cvi/modules 2022-09-19T17:36:12,227 copying src/cvi/modules/_base.py -> build/lib/cvi/modules 2022-09-19T17:36:12,231 copying src/cvi/modules/CH.py -> build/lib/cvi/modules 2022-09-19T17:36:12,235 running egg_info 2022-09-19T17:36:13,499 writing src/cvi.egg-info/PKG-INFO 2022-09-19T17:36:14,098 writing dependency_links to src/cvi.egg-info/dependency_links.txt 2022-09-19T17:36:17,073 writing requirements to src/cvi.egg-info/requires.txt 2022-09-19T17:36:17,670 writing top-level names to src/cvi.egg-info/top_level.txt 2022-09-19T17:36:17,714 reading manifest file 'src/cvi.egg-info/SOURCES.txt' 2022-09-19T17:36:17,717 adding license file 'LICENSE' 2022-09-19T17:36:17,723 writing manifest file 'src/cvi.egg-info/SOURCES.txt' 2022-09-19T17:36:18,983 installing to build/bdist.linux-armv7l/wheel 2022-09-19T17:36:18,983 running install 2022-09-19T17:36:19,043 running install_lib 2022-09-19T17:36:19,689 creating build/bdist.linux-armv7l 2022-09-19T17:36:19,690 creating build/bdist.linux-armv7l/wheel 2022-09-19T17:36:19,693 creating build/bdist.linux-armv7l/wheel/cvi 2022-09-19T17:36:19,694 copying build/lib/cvi/__init__.py -> build/bdist.linux-armv7l/wheel/cvi 2022-09-19T17:36:19,699 creating build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-19T17:36:19,701 copying build/lib/cvi/modules/__init__.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-19T17:36:19,704 copying build/lib/cvi/modules/cSIL.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-19T17:36:19,708 copying build/lib/cvi/modules/DB.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-19T17:36:19,712 copying build/lib/cvi/modules/_base.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-19T17:36:19,716 copying build/lib/cvi/modules/CH.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-19T17:36:19,719 copying build/lib/cvi/icvi.py -> build/bdist.linux-armv7l/wheel/cvi 2022-09-19T17:36:19,723 running install_egg_info 2022-09-19T17:36:20,351 Copying src/cvi.egg-info to build/bdist.linux-armv7l/wheel/cvi-0.1.1-py3.7.egg-info 2022-09-19T17:36:20,371 running install_scripts 2022-09-19T17:36:20,407 adding license file "LICENSE" (matched pattern "LICEN[CS]E*") 2022-09-19T17:36:20,417 creating build/bdist.linux-armv7l/wheel/cvi-0.1.1.dist-info/WHEEL 2022-09-19T17:36:20,421 creating '/tmp/pip-wheel-3ydh2ydv/tmp4i0ll8e6/cvi-0.1.1-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it 2022-09-19T17:36:20,426 adding 'cvi/__init__.py' 2022-09-19T17:36:20,430 adding 'cvi/icvi.py' 2022-09-19T17:36:20,435 adding 'cvi/modules/CH.py' 2022-09-19T17:36:20,438 adding 'cvi/modules/DB.py' 2022-09-19T17:36:20,441 adding 'cvi/modules/__init__.py' 2022-09-19T17:36:20,444 adding 'cvi/modules/_base.py' 2022-09-19T17:36:20,447 adding 'cvi/modules/cSIL.py' 2022-09-19T17:36:20,452 adding 'cvi-0.1.1.dist-info/LICENSE' 2022-09-19T17:36:20,455 adding 'cvi-0.1.1.dist-info/METADATA' 2022-09-19T17:36:20,457 adding 'cvi-0.1.1.dist-info/WHEEL' 2022-09-19T17:36:20,458 adding 'cvi-0.1.1.dist-info/top_level.txt' 2022-09-19T17:36:20,460 adding 'cvi-0.1.1.dist-info/RECORD' 2022-09-19T17:36:20,463 removing build/bdist.linux-armv7l/wheel 2022-09-19T17:36:20,477 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-19T17:36:20,478 ########################################################################## 2022-09-19T17:36:20,479 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-19T17:36:20,479 ########################################################################## 2022-09-19T17:36:20,480 The following seems to be defined outside of `pyproject.toml`: 2022-09-19T17:36:20,481 `requires-python = =3.6')>` 2022-09-19T17:36:20,482 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-19T17:36:20,482 consider this value unless 'requires-python' is listed as `dynamic`. 2022-09-19T17:36:20,483 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-19T17:36:20,484 For the time being, `setuptools` will still consider the given value (as a 2022-09-19T17:36:20,485 **transitional** measure), but please note that future releases of setuptools will 2022-09-19T17:36:20,485 follow strictly the standard. 2022-09-19T17:36:20,486 To prevent this warning, you can list 'requires-python' under `dynamic` or alternatively 2022-09-19T17:36:20,486 remove the `[project]` table from your file and rely entirely on other means of 2022-09-19T17:36:20,487 configuration. 2022-09-19T17:36:20,488 !! 2022-09-19T17:36:20,489 warnings.warn(msg, _WouldIgnoreField) 2022-09-19T17:36:20,490 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-19T17:36:20,491 ########################################################################## 2022-09-19T17:36:20,491 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-19T17:36:20,491 ########################################################################## 2022-09-19T17:36:20,492 The following seems to be defined outside of `pyproject.toml`: 2022-09-19T17:36:20,493 `classifiers = ['Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent']` 2022-09-19T17:36:20,494 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-19T17:36:20,494 consider this value unless 'classifiers' is listed as `dynamic`. 2022-09-19T17:36:20,495 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-19T17:36:20,496 For the time being, `setuptools` will still consider the given value (as a 2022-09-19T17:36:20,496 **transitional** measure), but please note that future releases of setuptools will 2022-09-19T17:36:20,497 follow strictly the standard. 2022-09-19T17:36:20,498 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2022-09-19T17:36:20,498 remove the `[project]` table from your file and rely entirely on other means of 2022-09-19T17:36:20,498 configuration. 2022-09-19T17:36:20,500 !! 2022-09-19T17:36:20,500 warnings.warn(msg, _WouldIgnoreField) 2022-09-19T17:36:20,501 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-19T17:36:20,502 ########################################################################## 2022-09-19T17:36:20,503 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-19T17:36:20,503 ########################################################################## 2022-09-19T17:36:20,504 The following seems to be defined outside of `pyproject.toml`: 2022-09-19T17:36:20,504 `urls = {'Bug Tracker': 'https://github.com/AP6YC/cvi/issues', 'Documentation': 'https://cluster-validity-indices.readthedocs.io/'}` 2022-09-19T17:36:20,505 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-19T17:36:20,506 consider this value unless 'urls' is listed as `dynamic`. 2022-09-19T17:36:20,506 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-19T17:36:20,507 For the time being, `setuptools` will still consider the given value (as a 2022-09-19T17:36:20,508 **transitional** measure), but please note that future releases of setuptools will 2022-09-19T17:36:20,508 follow strictly the standard. 2022-09-19T17:36:20,509 To prevent this warning, you can list 'urls' under `dynamic` or alternatively 2022-09-19T17:36:20,509 remove the `[project]` table from your file and rely entirely on other means of 2022-09-19T17:36:20,510 configuration. 2022-09-19T17:36:20,511 !! 2022-09-19T17:36:20,512 warnings.warn(msg, _WouldIgnoreField) 2022-09-19T17:36:20,788 Building wheel for cvi (pyproject.toml): finished with status 'done' 2022-09-19T17:36:20,801 Created wheel for cvi: filename=cvi-0.1.1-py3-none-any.whl size=16845 sha256=f2fe4b964e48f116b9009f7836ec22dfbdf55d1626aa77fd7efa49c7da320e87 2022-09-19T17:36:20,803 Stored in directory: /tmp/pip-ephem-wheel-cache-cuukzoik/wheels/7d/11/11/60546742f59ee0098fa9f85aa36d83c9706e683f8c5b504a44 2022-09-19T17:36:20,827 Successfully built cvi 2022-09-19T17:36:20,835 Removed build tracker: '/tmp/pip-build-tracker-v0l8khzv'