2022-09-21T17:33:20,845 Created temporary directory: /tmp/pip-ephem-wheel-cache-510paqgf 2022-09-21T17:33:20,850 Created temporary directory: /tmp/pip-build-tracker-9ww511ri 2022-09-21T17:33:20,851 Initialized build tracking at /tmp/pip-build-tracker-9ww511ri 2022-09-21T17:33:20,852 Created build tracker: /tmp/pip-build-tracker-9ww511ri 2022-09-21T17:33:20,852 Entered build tracker: /tmp/pip-build-tracker-9ww511ri 2022-09-21T17:33:20,853 Created temporary directory: /tmp/pip-wheel-ck5ceajw 2022-09-21T17:33:20,927 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2022-09-21T17:33:20,935 2 location(s) to search for versions of cvi: 2022-09-21T17:33:20,935 * https://pypi.org/simple/cvi/ 2022-09-21T17:33:20,935 * https://www.piwheels.org/simple/cvi/ 2022-09-21T17:33:20,936 Fetching project page and analyzing links: https://pypi.org/simple/cvi/ 2022-09-21T17:33:20,937 Getting page https://pypi.org/simple/cvi/ 2022-09-21T17:33:20,941 Found index url https://pypi.org/simple 2022-09-21T17:33:21,154 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-21T17:33:21,156 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-21T17:33:21,157 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-21T17:33:21,158 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-21T17:33:21,160 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-21T17:33:21,161 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-21T17:33:21,162 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-21T17:33:21,164 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-21T17:33:21,164 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-21T17:33:21,166 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-21T17:33:21,167 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-21T17:33:21,168 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-21T17:33:21,169 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/bb/7c/350ccd0aaa609c3d3db04ffe37b3d14fba0c91885e01b4b9d431153d560d/cvi-0.2.0-py3-none-any.whl#sha256=1dcb4ecbe4aad9ea081069048f78b64ce58ba1cad42e6ecdf8e3051607c3eda8 (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2022-09-21T17:33:21,171 Found link https://files.pythonhosted.org/packages/4c/30/7e5f6486482a9eb5a4773ba70290b7f6860fe7b7cebc248cef06d53f95b4/cvi-0.2.0.tar.gz#sha256=f621935f63fa2028ad1a2aed37477226c905bde4d0006edd031cbefb31a5bd6a (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.2.0 2022-09-21T17:33:21,172 Fetching project page and analyzing links: https://www.piwheels.org/simple/cvi/ 2022-09-21T17:33:21,172 Getting page https://www.piwheels.org/simple/cvi/ 2022-09-21T17:33:21,175 Found index url https://www.piwheels.org/simple 2022-09-21T17:33:21,389 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) 2022-09-21T17:33:21,390 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-21T17:33:21,390 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-21T17:33:21,391 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-21T17:33:21,392 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-21T17:33:21,392 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-21T17:33:21,393 Skipping link: not a file: https://www.piwheels.org/simple/cvi/ 2022-09-21T17:33:21,393 Skipping link: not a file: https://pypi.org/simple/cvi/ 2022-09-21T17:33:21,429 Given no hashes to check 1 links for project 'cvi': discarding no candidates 2022-09-21T17:33:21,461 Collecting cvi==0.2.0 2022-09-21T17:33:21,466 Created temporary directory: /tmp/pip-unpack-iswbyifh 2022-09-21T17:33:21,960 Downloading cvi-0.2.0.tar.gz (17 kB) 2022-09-21T17:33:22,081 Added cvi==0.2.0 from https://files.pythonhosted.org/packages/4c/30/7e5f6486482a9eb5a4773ba70290b7f6860fe7b7cebc248cef06d53f95b4/cvi-0.2.0.tar.gz#sha256=f621935f63fa2028ad1a2aed37477226c905bde4d0006edd031cbefb31a5bd6a to build tracker '/tmp/pip-build-tracker-9ww511ri' 2022-09-21T17:33:22,089 Created temporary directory: /tmp/pip-build-env-clyblxk0 2022-09-21T17:33:22,103 Created temporary directory: /tmp/pip-standalone-pip-8tviq1lh 2022-09-21T17:33:24,479 Installing build dependencies: started 2022-09-21T17:33:24,481 Running command pip subprocess to install build dependencies 2022-09-21T17:33:34,238 Using pip 22.1.2 from /tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip (python 3.7) 2022-09-21T17:33:36,068 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2022-09-21T17:33:40,325 Collecting setuptools>=42 2022-09-21T17:33:40,603 Using cached https://www.piwheels.org/simple/setuptools/setuptools-65.3.0-py3-none-any.whl (1.2 MB) 2022-09-21T17:33:54,502 Installing collected packages: setuptools 2022-09-21T17:33:59,647 ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts. 2022-09-21T17:33:59,648 espnet-onnx 0.1.9 requires espnet-tts-frontend, which is not installed. 2022-09-21T17:33:59,648 espnet-onnx 0.1.9 requires g2p-en, which is not installed. 2022-09-21T17:33:59,648 espnet-onnx 0.1.9 requires jamo==0.4.1, which is not installed. 2022-09-21T17:33:59,649 espnet-onnx 0.1.9 requires librosa>=0.8.0, which is not installed. 2022-09-21T17:33:59,649 espnet-onnx 0.1.9 requires onnxruntime>=1.4.0, which is not installed. 2022-09-21T17:33:59,649 espnet-onnx 0.1.9 requires sentencepiece!=0.1.92,>=0.1.91, which is not installed. 2022-09-21T17:33:59,650 espnet-onnx 0.1.9 requires typeguard>=2.7.0, which is not installed. 2022-09-21T17:33:59,650 espnet-onnx 0.1.9 requires numpy<=1.21.3, but you have numpy 1.21.4 which is incompatible. 2022-09-21T17:33:59,651 Successfully installed setuptools-65.3.0 2022-09-21T17:33:59,900 --- Logging error --- 2022-09-21T17:33:59,901 Traceback (most recent call last): 2022-09-21T17:33:59,901 File "/tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip/_internal/utils/logging.py", line 177, in emit 2022-09-21T17:33:59,902 self.console.print(renderable, overflow="ignore", crop=False, style=style) 2022-09-21T17:33:59,902 File "/tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip/_vendor/rich/console.py", line 1752, in print 2022-09-21T17:33:59,902 extend(render(renderable, render_options)) 2022-09-21T17:33:59,903 File "/tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip/_vendor/rich/console.py", line 1390, in render 2022-09-21T17:33:59,903 for render_output in iter_render: 2022-09-21T17:33:59,903 File "/tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip/_internal/utils/logging.py", line 134, in __rich_console__ 2022-09-21T17:33:59,904 for line in lines: 2022-09-21T17:33:59,904 File "/tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip/_vendor/rich/segment.py", line 245, in split_lines 2022-09-21T17:33:59,904 for segment in segments: 2022-09-21T17:33:59,905 File "/tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip/_vendor/rich/console.py", line 1368, in render 2022-09-21T17:33:59,905 renderable = rich_cast(renderable) 2022-09-21T17:33:59,905 File "/tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip/_vendor/rich/protocol.py", line 36, in rich_cast 2022-09-21T17:33:59,906 renderable = cast_method() 2022-09-21T17:33:59,906 File "/tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip/_internal/self_outdated_check.py", line 130, in __rich__ 2022-09-21T17:33:59,906 pip_cmd = get_best_invocation_for_this_pip() 2022-09-21T17:33:59,907 File "/tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip/_internal/utils/entrypoints.py", line 60, in get_best_invocation_for_this_pip 2022-09-21T17:33:59,907 os.path.join(binary_prefix, exe_name), 2022-09-21T17:33:59,907 File "/usr/lib/python3.7/genericpath.py", line 97, in samefile 2022-09-21T17:33:59,908 s2 = os.stat(f2) 2022-09-21T17:33:59,908 FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.7' 2022-09-21T17:33:59,908 Call stack: 2022-09-21T17:33:59,909 File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main 2022-09-21T17:33:59,909 "__main__", mod_spec) 2022-09-21T17:33:59,909 File "/usr/lib/python3.7/runpy.py", line 85, in _run_code 2022-09-21T17:33:59,910 exec(code, run_globals) 2022-09-21T17:33:59,910 File "/tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip/__main__.py", line 31, in 2022-09-21T17:33:59,910 sys.exit(_main()) 2022-09-21T17:33:59,911 File "/tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip/_internal/cli/main.py", line 70, in main 2022-09-21T17:33:59,911 return command.main(cmd_args) 2022-09-21T17:33:59,911 File "/tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip/_internal/cli/base_command.py", line 101, in main 2022-09-21T17:33:59,912 return self._main(args) 2022-09-21T17:33:59,912 File "/tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip/_internal/cli/base_command.py", line 223, in _main 2022-09-21T17:33:59,912 self.handle_pip_version_check(options) 2022-09-21T17:33:59,912 File "/tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip/_internal/cli/req_command.py", line 148, in handle_pip_version_check 2022-09-21T17:33:59,913 pip_self_version_check(session, options) 2022-09-21T17:33:59,913 File "/tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip/_internal/self_outdated_check.py", line 237, in pip_self_version_check 2022-09-21T17:33:59,913 logger.info("[present-rich] %s", upgrade_prompt) 2022-09-21T17:33:59,914 File "/usr/lib/python3.7/logging/__init__.py", line 1383, in info 2022-09-21T17:33:59,914 self._log(INFO, msg, args, **kwargs) 2022-09-21T17:33:59,914 File "/usr/lib/python3.7/logging/__init__.py", line 1519, in _log 2022-09-21T17:33:59,915 self.handle(record) 2022-09-21T17:33:59,915 File "/usr/lib/python3.7/logging/__init__.py", line 1529, in handle 2022-09-21T17:33:59,915 self.callHandlers(record) 2022-09-21T17:33:59,916 File "/usr/lib/python3.7/logging/__init__.py", line 1591, in callHandlers 2022-09-21T17:33:59,916 hdlr.handle(record) 2022-09-21T17:33:59,916 File "/usr/lib/python3.7/logging/__init__.py", line 905, in handle 2022-09-21T17:33:59,917 self.emit(record) 2022-09-21T17:33:59,917 File "/tmp/pip-standalone-pip-8tviq1lh/__env_pip__.zip/pip/_internal/utils/logging.py", line 179, in emit 2022-09-21T17:33:59,917 self.handleError(record) 2022-09-21T17:33:59,918 Message: '[present-rich] %s' 2022-09-21T17:33:59,918 Arguments: (UpgradePrompt(old='22.1.2', new='22.2.2'),) 2022-09-21T17:34:00,409 Installing build dependencies: finished with status 'done' 2022-09-21T17:34:00,437 Getting requirements to build wheel: started 2022-09-21T17:34:00,440 Running command Getting requirements to build wheel 2022-09-21T17:34:04,840 /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-21T17:34:04,842 warnings.warn(msg, _ExperimentalProjectMetadata) 2022-09-21T17:34:04,842 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-21T17:34:04,843 ########################################################################## 2022-09-21T17:34:04,843 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-21T17:34:04,844 ########################################################################## 2022-09-21T17:34:04,845 The following seems to be defined outside of `pyproject.toml`: 2022-09-21T17:34:04,846 `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.2.0...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.2.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__**: 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-21T17:34:04,847 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-21T17:34:04,847 consider this value unless 'readme' is listed as `dynamic`. 2022-09-21T17:34:04,847 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-21T17:34:04,848 For the time being, `setuptools` will still consider the given value (as a 2022-09-21T17:34:04,849 **transitional** measure), but please note that future releases of setuptools will 2022-09-21T17:34:04,849 follow strictly the standard. 2022-09-21T17:34:04,849 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2022-09-21T17:34:04,850 remove the `[project]` table from your file and rely entirely on other means of 2022-09-21T17:34:04,850 configuration. 2022-09-21T17:34:04,851 !! 2022-09-21T17:34:04,852 warnings.warn(msg, _WouldIgnoreField) 2022-09-21T17:34:06,408 running egg_info 2022-09-21T17:34:07,063 writing src/cvi.egg-info/PKG-INFO 2022-09-21T17:34:07,665 writing dependency_links to src/cvi.egg-info/dependency_links.txt 2022-09-21T17:34:10,644 writing requirements to src/cvi.egg-info/requires.txt 2022-09-21T17:34:11,242 writing top-level names to src/cvi.egg-info/top_level.txt 2022-09-21T17:34:11,957 reading manifest file 'src/cvi.egg-info/SOURCES.txt' 2022-09-21T17:34:11,962 adding license file 'LICENSE' 2022-09-21T17:34:11,967 writing manifest file 'src/cvi.egg-info/SOURCES.txt' 2022-09-21T17:34:11,971 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-21T17:34:11,973 ########################################################################## 2022-09-21T17:34:11,974 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-21T17:34:11,974 ########################################################################## 2022-09-21T17:34:11,975 The following seems to be defined outside of `pyproject.toml`: 2022-09-21T17:34:11,976 `requires-python = =3.6')>` 2022-09-21T17:34:11,977 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-21T17:34:11,977 consider this value unless 'requires-python' is listed as `dynamic`. 2022-09-21T17:34:11,978 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-21T17:34:11,979 For the time being, `setuptools` will still consider the given value (as a 2022-09-21T17:34:11,980 **transitional** measure), but please note that future releases of setuptools will 2022-09-21T17:34:11,980 follow strictly the standard. 2022-09-21T17:34:11,981 To prevent this warning, you can list 'requires-python' under `dynamic` or alternatively 2022-09-21T17:34:11,982 remove the `[project]` table from your file and rely entirely on other means of 2022-09-21T17:34:11,982 configuration. 2022-09-21T17:34:11,984 !! 2022-09-21T17:34:11,984 warnings.warn(msg, _WouldIgnoreField) 2022-09-21T17:34:11,985 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-21T17:34:11,986 ########################################################################## 2022-09-21T17:34:11,987 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-21T17:34:11,987 ########################################################################## 2022-09-21T17:34:11,988 The following seems to be defined outside of `pyproject.toml`: 2022-09-21T17:34:11,988 `classifiers = ['Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent']` 2022-09-21T17:34:11,989 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-21T17:34:11,990 consider this value unless 'classifiers' is listed as `dynamic`. 2022-09-21T17:34:11,991 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-21T17:34:11,992 For the time being, `setuptools` will still consider the given value (as a 2022-09-21T17:34:11,992 **transitional** measure), but please note that future releases of setuptools will 2022-09-21T17:34:11,993 follow strictly the standard. 2022-09-21T17:34:11,993 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2022-09-21T17:34:11,994 remove the `[project]` table from your file and rely entirely on other means of 2022-09-21T17:34:11,994 configuration. 2022-09-21T17:34:11,996 !! 2022-09-21T17:34:11,997 warnings.warn(msg, _WouldIgnoreField) 2022-09-21T17:34:11,997 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-21T17:34:11,998 ########################################################################## 2022-09-21T17:34:11,999 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-21T17:34:11,999 ########################################################################## 2022-09-21T17:34:12,000 The following seems to be defined outside of `pyproject.toml`: 2022-09-21T17:34:12,001 `urls = {'Bug Tracker': 'https://github.com/AP6YC/cvi/issues', 'Documentation': 'https://cluster-validity-indices.readthedocs.io/'}` 2022-09-21T17:34:12,002 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-21T17:34:12,002 consider this value unless 'urls' is listed as `dynamic`. 2022-09-21T17:34:12,003 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-21T17:34:12,004 For the time being, `setuptools` will still consider the given value (as a 2022-09-21T17:34:12,004 **transitional** measure), but please note that future releases of setuptools will 2022-09-21T17:34:12,005 follow strictly the standard. 2022-09-21T17:34:12,006 To prevent this warning, you can list 'urls' under `dynamic` or alternatively 2022-09-21T17:34:12,006 remove the `[project]` table from your file and rely entirely on other means of 2022-09-21T17:34:12,006 configuration. 2022-09-21T17:34:12,007 !! 2022-09-21T17:34:12,008 warnings.warn(msg, _WouldIgnoreField) 2022-09-21T17:34:12,280 Getting requirements to build wheel: finished with status 'done' 2022-09-21T17:34:12,305 Created temporary directory: /tmp/pip-standalone-pip-72s0nnqk 2022-09-21T17:34:14,736 Installing backend dependencies: started 2022-09-21T17:34:14,738 Running command pip subprocess to install backend dependencies 2022-09-21T17:34:24,533 Using pip 22.1.2 from /tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip (python 3.7) 2022-09-21T17:34:26,419 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2022-09-21T17:34:27,299 Collecting wheel 2022-09-21T17:34:27,341 Using cached https://www.piwheels.org/simple/wheel/wheel-0.37.1-py2.py3-none-any.whl (35 kB) 2022-09-21T17:34:40,526 Installing collected packages: wheel 2022-09-21T17:34:40,801 Creating /tmp/pip-build-env-clyblxk0/normal/bin 2022-09-21T17:34:40,805 changing mode of /tmp/pip-build-env-clyblxk0/normal/bin/wheel to 755 2022-09-21T17:34:40,832 Successfully installed wheel-0.37.1 2022-09-21T17:34:41,064 --- Logging error --- 2022-09-21T17:34:41,064 Traceback (most recent call last): 2022-09-21T17:34:41,065 File "/tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip/_internal/utils/logging.py", line 177, in emit 2022-09-21T17:34:41,065 self.console.print(renderable, overflow="ignore", crop=False, style=style) 2022-09-21T17:34:41,066 File "/tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip/_vendor/rich/console.py", line 1752, in print 2022-09-21T17:34:41,066 extend(render(renderable, render_options)) 2022-09-21T17:34:41,066 File "/tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip/_vendor/rich/console.py", line 1390, in render 2022-09-21T17:34:41,067 for render_output in iter_render: 2022-09-21T17:34:41,067 File "/tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip/_internal/utils/logging.py", line 134, in __rich_console__ 2022-09-21T17:34:41,067 for line in lines: 2022-09-21T17:34:41,068 File "/tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip/_vendor/rich/segment.py", line 245, in split_lines 2022-09-21T17:34:41,068 for segment in segments: 2022-09-21T17:34:41,068 File "/tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip/_vendor/rich/console.py", line 1368, in render 2022-09-21T17:34:41,069 renderable = rich_cast(renderable) 2022-09-21T17:34:41,069 File "/tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip/_vendor/rich/protocol.py", line 36, in rich_cast 2022-09-21T17:34:41,069 renderable = cast_method() 2022-09-21T17:34:41,070 File "/tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip/_internal/self_outdated_check.py", line 130, in __rich__ 2022-09-21T17:34:41,070 pip_cmd = get_best_invocation_for_this_pip() 2022-09-21T17:34:41,070 File "/tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip/_internal/utils/entrypoints.py", line 60, in get_best_invocation_for_this_pip 2022-09-21T17:34:41,071 os.path.join(binary_prefix, exe_name), 2022-09-21T17:34:41,071 File "/usr/lib/python3.7/genericpath.py", line 97, in samefile 2022-09-21T17:34:41,071 s2 = os.stat(f2) 2022-09-21T17:34:41,072 FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.7' 2022-09-21T17:34:41,072 Call stack: 2022-09-21T17:34:41,072 File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main 2022-09-21T17:34:41,073 "__main__", mod_spec) 2022-09-21T17:34:41,073 File "/usr/lib/python3.7/runpy.py", line 85, in _run_code 2022-09-21T17:34:41,073 exec(code, run_globals) 2022-09-21T17:34:41,074 File "/tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip/__main__.py", line 31, in 2022-09-21T17:34:41,074 sys.exit(_main()) 2022-09-21T17:34:41,074 File "/tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip/_internal/cli/main.py", line 70, in main 2022-09-21T17:34:41,075 return command.main(cmd_args) 2022-09-21T17:34:41,075 File "/tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip/_internal/cli/base_command.py", line 101, in main 2022-09-21T17:34:41,075 return self._main(args) 2022-09-21T17:34:41,076 File "/tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip/_internal/cli/base_command.py", line 223, in _main 2022-09-21T17:34:41,076 self.handle_pip_version_check(options) 2022-09-21T17:34:41,076 File "/tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip/_internal/cli/req_command.py", line 148, in handle_pip_version_check 2022-09-21T17:34:41,076 pip_self_version_check(session, options) 2022-09-21T17:34:41,077 File "/tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip/_internal/self_outdated_check.py", line 237, in pip_self_version_check 2022-09-21T17:34:41,077 logger.info("[present-rich] %s", upgrade_prompt) 2022-09-21T17:34:41,077 File "/usr/lib/python3.7/logging/__init__.py", line 1383, in info 2022-09-21T17:34:41,078 self._log(INFO, msg, args, **kwargs) 2022-09-21T17:34:41,078 File "/usr/lib/python3.7/logging/__init__.py", line 1519, in _log 2022-09-21T17:34:41,078 self.handle(record) 2022-09-21T17:34:41,079 File "/usr/lib/python3.7/logging/__init__.py", line 1529, in handle 2022-09-21T17:34:41,079 self.callHandlers(record) 2022-09-21T17:34:41,079 File "/usr/lib/python3.7/logging/__init__.py", line 1591, in callHandlers 2022-09-21T17:34:41,080 hdlr.handle(record) 2022-09-21T17:34:41,080 File "/usr/lib/python3.7/logging/__init__.py", line 905, in handle 2022-09-21T17:34:41,080 self.emit(record) 2022-09-21T17:34:41,081 File "/tmp/pip-standalone-pip-72s0nnqk/__env_pip__.zip/pip/_internal/utils/logging.py", line 179, in emit 2022-09-21T17:34:41,081 self.handleError(record) 2022-09-21T17:34:41,081 Message: '[present-rich] %s' 2022-09-21T17:34:41,082 Arguments: (UpgradePrompt(old='22.1.2', new='22.2.2'),) 2022-09-21T17:34:41,526 Installing backend dependencies: finished with status 'done' 2022-09-21T17:34:41,547 Created temporary directory: /tmp/pip-modern-metadata-1p_m6ill 2022-09-21T17:34:41,554 Preparing metadata (pyproject.toml): started 2022-09-21T17:34:41,556 Running command Preparing metadata (pyproject.toml) 2022-09-21T17:34:45,817 /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-21T17:34:45,819 warnings.warn(msg, _ExperimentalProjectMetadata) 2022-09-21T17:34:45,819 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-21T17:34:45,820 ########################################################################## 2022-09-21T17:34:45,821 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-21T17:34:45,821 ########################################################################## 2022-09-21T17:34:45,822 The following seems to be defined outside of `pyproject.toml`: 2022-09-21T17:34:45,823 `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.2.0...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.2.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__**: 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-21T17:34:45,824 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-21T17:34:45,825 consider this value unless 'readme' is listed as `dynamic`. 2022-09-21T17:34:45,825 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-21T17:34:45,826 For the time being, `setuptools` will still consider the given value (as a 2022-09-21T17:34:45,826 **transitional** measure), but please note that future releases of setuptools will 2022-09-21T17:34:45,827 follow strictly the standard. 2022-09-21T17:34:45,827 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2022-09-21T17:34:45,828 remove the `[project]` table from your file and rely entirely on other means of 2022-09-21T17:34:45,828 configuration. 2022-09-21T17:34:45,829 !! 2022-09-21T17:34:45,829 warnings.warn(msg, _WouldIgnoreField) 2022-09-21T17:34:47,446 running dist_info 2022-09-21T17:34:48,101 creating /tmp/pip-modern-metadata-1p_m6ill/cvi.egg-info 2022-09-21T17:34:48,746 writing /tmp/pip-modern-metadata-1p_m6ill/cvi.egg-info/PKG-INFO 2022-09-21T17:34:49,359 writing dependency_links to /tmp/pip-modern-metadata-1p_m6ill/cvi.egg-info/dependency_links.txt 2022-09-21T17:34:52,388 writing requirements to /tmp/pip-modern-metadata-1p_m6ill/cvi.egg-info/requires.txt 2022-09-21T17:34:52,993 writing top-level names to /tmp/pip-modern-metadata-1p_m6ill/cvi.egg-info/top_level.txt 2022-09-21T17:34:52,996 writing manifest file '/tmp/pip-modern-metadata-1p_m6ill/cvi.egg-info/SOURCES.txt' 2022-09-21T17:34:53,724 reading manifest file '/tmp/pip-modern-metadata-1p_m6ill/cvi.egg-info/SOURCES.txt' 2022-09-21T17:34:53,727 adding license file 'LICENSE' 2022-09-21T17:34:53,732 writing manifest file '/tmp/pip-modern-metadata-1p_m6ill/cvi.egg-info/SOURCES.txt' 2022-09-21T17:34:53,735 creating '/tmp/pip-modern-metadata-1p_m6ill/cvi-0.2.0.dist-info' 2022-09-21T17:34:53,879 adding license file "LICENSE" (matched pattern "LICEN[CS]E*") 2022-09-21T17:34:53,891 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-21T17:34:53,893 ########################################################################## 2022-09-21T17:34:53,894 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-21T17:34:53,894 ########################################################################## 2022-09-21T17:34:53,895 The following seems to be defined outside of `pyproject.toml`: 2022-09-21T17:34:53,896 `requires-python = =3.6')>` 2022-09-21T17:34:53,897 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-21T17:34:53,897 consider this value unless 'requires-python' is listed as `dynamic`. 2022-09-21T17:34:53,898 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-21T17:34:53,899 For the time being, `setuptools` will still consider the given value (as a 2022-09-21T17:34:53,900 **transitional** measure), but please note that future releases of setuptools will 2022-09-21T17:34:53,900 follow strictly the standard. 2022-09-21T17:34:53,901 To prevent this warning, you can list 'requires-python' under `dynamic` or alternatively 2022-09-21T17:34:53,902 remove the `[project]` table from your file and rely entirely on other means of 2022-09-21T17:34:53,902 configuration. 2022-09-21T17:34:53,904 !! 2022-09-21T17:34:53,905 warnings.warn(msg, _WouldIgnoreField) 2022-09-21T17:34:53,905 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-21T17:34:53,907 ########################################################################## 2022-09-21T17:34:53,907 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-21T17:34:53,908 ########################################################################## 2022-09-21T17:34:53,908 The following seems to be defined outside of `pyproject.toml`: 2022-09-21T17:34:53,909 `classifiers = ['Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent']` 2022-09-21T17:34:53,910 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-21T17:34:53,911 consider this value unless 'classifiers' is listed as `dynamic`. 2022-09-21T17:34:53,912 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-21T17:34:53,912 For the time being, `setuptools` will still consider the given value (as a 2022-09-21T17:34:53,913 **transitional** measure), but please note that future releases of setuptools will 2022-09-21T17:34:53,913 follow strictly the standard. 2022-09-21T17:34:53,914 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2022-09-21T17:34:53,915 remove the `[project]` table from your file and rely entirely on other means of 2022-09-21T17:34:53,915 configuration. 2022-09-21T17:34:53,916 !! 2022-09-21T17:34:53,917 warnings.warn(msg, _WouldIgnoreField) 2022-09-21T17:34:53,918 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-21T17:34:53,919 ########################################################################## 2022-09-21T17:34:53,919 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-21T17:34:53,920 ########################################################################## 2022-09-21T17:34:53,921 The following seems to be defined outside of `pyproject.toml`: 2022-09-21T17:34:53,921 `urls = {'Bug Tracker': 'https://github.com/AP6YC/cvi/issues', 'Documentation': 'https://cluster-validity-indices.readthedocs.io/'}` 2022-09-21T17:34:53,922 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-21T17:34:53,923 consider this value unless 'urls' is listed as `dynamic`. 2022-09-21T17:34:53,924 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-21T17:34:53,924 For the time being, `setuptools` will still consider the given value (as a 2022-09-21T17:34:53,925 **transitional** measure), but please note that future releases of setuptools will 2022-09-21T17:34:53,925 follow strictly the standard. 2022-09-21T17:34:53,926 To prevent this warning, you can list 'urls' under `dynamic` or alternatively 2022-09-21T17:34:53,926 remove the `[project]` table from your file and rely entirely on other means of 2022-09-21T17:34:53,927 configuration. 2022-09-21T17:34:53,928 !! 2022-09-21T17:34:53,929 warnings.warn(msg, _WouldIgnoreField) 2022-09-21T17:34:54,205 Preparing metadata (pyproject.toml): finished with status 'done' 2022-09-21T17:34:54,222 Source in /tmp/pip-wheel-ck5ceajw/cvi_6b0a6002c46844699ca5e0dca0ffcc74 has version 0.2.0, which satisfies requirement cvi==0.2.0 from https://files.pythonhosted.org/packages/4c/30/7e5f6486482a9eb5a4773ba70290b7f6860fe7b7cebc248cef06d53f95b4/cvi-0.2.0.tar.gz#sha256=f621935f63fa2028ad1a2aed37477226c905bde4d0006edd031cbefb31a5bd6a 2022-09-21T17:34:54,224 Removed cvi==0.2.0 from https://files.pythonhosted.org/packages/4c/30/7e5f6486482a9eb5a4773ba70290b7f6860fe7b7cebc248cef06d53f95b4/cvi-0.2.0.tar.gz#sha256=f621935f63fa2028ad1a2aed37477226c905bde4d0006edd031cbefb31a5bd6a from build tracker '/tmp/pip-build-tracker-9ww511ri' 2022-09-21T17:34:54,238 Created temporary directory: /tmp/pip-unpack-055c3flp 2022-09-21T17:34:54,239 Building wheels for collected packages: cvi 2022-09-21T17:34:54,250 Created temporary directory: /tmp/pip-wheel-ruhmjdk1 2022-09-21T17:34:54,251 Destination directory: /tmp/pip-wheel-ruhmjdk1 2022-09-21T17:34:54,256 Building wheel for cvi (pyproject.toml): started 2022-09-21T17:34:54,258 Running command Building wheel for cvi (pyproject.toml) 2022-09-21T17:34:58,473 /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-21T17:34:58,475 warnings.warn(msg, _ExperimentalProjectMetadata) 2022-09-21T17:34:58,475 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-21T17:34:58,476 ########################################################################## 2022-09-21T17:34:58,477 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-21T17:34:58,477 ########################################################################## 2022-09-21T17:34:58,478 The following seems to be defined outside of `pyproject.toml`: 2022-09-21T17:34:58,479 `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.2.0...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.2.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__**: 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-21T17:34:58,480 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-21T17:34:58,481 consider this value unless 'readme' is listed as `dynamic`. 2022-09-21T17:34:58,481 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-21T17:34:58,482 For the time being, `setuptools` will still consider the given value (as a 2022-09-21T17:34:58,482 **transitional** measure), but please note that future releases of setuptools will 2022-09-21T17:34:58,482 follow strictly the standard. 2022-09-21T17:34:58,483 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2022-09-21T17:34:58,483 remove the `[project]` table from your file and rely entirely on other means of 2022-09-21T17:34:58,484 configuration. 2022-09-21T17:34:58,485 !! 2022-09-21T17:34:58,485 warnings.warn(msg, _WouldIgnoreField) 2022-09-21T17:34:59,461 running bdist_wheel 2022-09-21T17:35:00,261 running build 2022-09-21T17:35:00,262 running build_py 2022-09-21T17:35:00,897 creating build 2022-09-21T17:35:00,899 creating build/lib 2022-09-21T17:35:00,900 creating build/lib/cvi 2022-09-21T17:35:00,902 copying src/cvi/__init__.py -> build/lib/cvi 2022-09-21T17:35:00,906 copying src/cvi/icvi.py -> build/lib/cvi 2022-09-21T17:35:00,913 creating build/lib/cvi/modules 2022-09-21T17:35:00,914 copying src/cvi/modules/__init__.py -> build/lib/cvi/modules 2022-09-21T17:35:00,918 copying src/cvi/modules/cSIL.py -> build/lib/cvi/modules 2022-09-21T17:35:00,923 copying src/cvi/modules/DB.py -> build/lib/cvi/modules 2022-09-21T17:35:00,927 copying src/cvi/modules/GD53.py -> build/lib/cvi/modules 2022-09-21T17:35:00,931 copying src/cvi/modules/CH.py -> build/lib/cvi/modules 2022-09-21T17:35:00,935 copying src/cvi/modules/GD43.py -> build/lib/cvi/modules 2022-09-21T17:35:00,940 copying src/cvi/modules/_base.py -> build/lib/cvi/modules 2022-09-21T17:35:00,944 running egg_info 2022-09-21T17:35:02,222 writing src/cvi.egg-info/PKG-INFO 2022-09-21T17:35:02,824 writing dependency_links to src/cvi.egg-info/dependency_links.txt 2022-09-21T17:35:05,816 writing requirements to src/cvi.egg-info/requires.txt 2022-09-21T17:35:06,415 writing top-level names to src/cvi.egg-info/top_level.txt 2022-09-21T17:35:06,462 reading manifest file 'src/cvi.egg-info/SOURCES.txt' 2022-09-21T17:35:06,466 adding license file 'LICENSE' 2022-09-21T17:35:06,472 writing manifest file 'src/cvi.egg-info/SOURCES.txt' 2022-09-21T17:35:07,746 installing to build/bdist.linux-armv7l/wheel 2022-09-21T17:35:07,747 running install 2022-09-21T17:35:07,809 running install_lib 2022-09-21T17:35:08,447 creating build/bdist.linux-armv7l 2022-09-21T17:35:08,448 creating build/bdist.linux-armv7l/wheel 2022-09-21T17:35:08,453 creating build/bdist.linux-armv7l/wheel/cvi 2022-09-21T17:35:08,455 copying build/lib/cvi/__init__.py -> build/bdist.linux-armv7l/wheel/cvi 2022-09-21T17:35:08,461 creating build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-21T17:35:08,464 copying build/lib/cvi/modules/__init__.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-21T17:35:08,468 copying build/lib/cvi/modules/cSIL.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-21T17:35:08,474 copying build/lib/cvi/modules/DB.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-21T17:35:08,479 copying build/lib/cvi/modules/GD53.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-21T17:35:08,484 copying build/lib/cvi/modules/CH.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-21T17:35:08,489 copying build/lib/cvi/modules/GD43.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-21T17:35:08,494 copying build/lib/cvi/modules/_base.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-21T17:35:08,499 copying build/lib/cvi/icvi.py -> build/bdist.linux-armv7l/wheel/cvi 2022-09-21T17:35:08,504 running install_egg_info 2022-09-21T17:35:09,138 Copying src/cvi.egg-info to build/bdist.linux-armv7l/wheel/cvi-0.2.0-py3.7.egg-info 2022-09-21T17:35:09,162 running install_scripts 2022-09-21T17:35:09,199 adding license file "LICENSE" (matched pattern "LICEN[CS]E*") 2022-09-21T17:35:09,209 creating build/bdist.linux-armv7l/wheel/cvi-0.2.0.dist-info/WHEEL 2022-09-21T17:35:09,215 creating '/tmp/pip-wheel-ruhmjdk1/tmpnl8rhtq9/cvi-0.2.0-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it 2022-09-21T17:35:09,220 adding 'cvi/__init__.py' 2022-09-21T17:35:09,225 adding 'cvi/icvi.py' 2022-09-21T17:35:09,231 adding 'cvi/modules/CH.py' 2022-09-21T17:35:09,235 adding 'cvi/modules/DB.py' 2022-09-21T17:35:09,239 adding 'cvi/modules/GD43.py' 2022-09-21T17:35:09,244 adding 'cvi/modules/GD53.py' 2022-09-21T17:35:09,247 adding 'cvi/modules/__init__.py' 2022-09-21T17:35:09,251 adding 'cvi/modules/_base.py' 2022-09-21T17:35:09,255 adding 'cvi/modules/cSIL.py' 2022-09-21T17:35:09,260 adding 'cvi-0.2.0.dist-info/LICENSE' 2022-09-21T17:35:09,264 adding 'cvi-0.2.0.dist-info/METADATA' 2022-09-21T17:35:09,267 adding 'cvi-0.2.0.dist-info/WHEEL' 2022-09-21T17:35:09,269 adding 'cvi-0.2.0.dist-info/top_level.txt' 2022-09-21T17:35:09,271 adding 'cvi-0.2.0.dist-info/RECORD' 2022-09-21T17:35:09,274 removing build/bdist.linux-armv7l/wheel 2022-09-21T17:35:09,290 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-21T17:35:09,291 ########################################################################## 2022-09-21T17:35:09,291 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-21T17:35:09,292 ########################################################################## 2022-09-21T17:35:09,292 The following seems to be defined outside of `pyproject.toml`: 2022-09-21T17:35:09,293 `requires-python = =3.6')>` 2022-09-21T17:35:09,293 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-21T17:35:09,294 consider this value unless 'requires-python' is listed as `dynamic`. 2022-09-21T17:35:09,294 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-21T17:35:09,295 For the time being, `setuptools` will still consider the given value (as a 2022-09-21T17:35:09,295 **transitional** measure), but please note that future releases of setuptools will 2022-09-21T17:35:09,295 follow strictly the standard. 2022-09-21T17:35:09,296 To prevent this warning, you can list 'requires-python' under `dynamic` or alternatively 2022-09-21T17:35:09,296 remove the `[project]` table from your file and rely entirely on other means of 2022-09-21T17:35:09,297 configuration. 2022-09-21T17:35:09,297 !! 2022-09-21T17:35:09,298 warnings.warn(msg, _WouldIgnoreField) 2022-09-21T17:35:09,298 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-21T17:35:09,299 ########################################################################## 2022-09-21T17:35:09,299 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-21T17:35:09,300 ########################################################################## 2022-09-21T17:35:09,300 The following seems to be defined outside of `pyproject.toml`: 2022-09-21T17:35:09,301 `classifiers = ['Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent']` 2022-09-21T17:35:09,301 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-21T17:35:09,302 consider this value unless 'classifiers' is listed as `dynamic`. 2022-09-21T17:35:09,302 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-21T17:35:09,303 For the time being, `setuptools` will still consider the given value (as a 2022-09-21T17:35:09,303 **transitional** measure), but please note that future releases of setuptools will 2022-09-21T17:35:09,303 follow strictly the standard. 2022-09-21T17:35:09,304 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2022-09-21T17:35:09,304 remove the `[project]` table from your file and rely entirely on other means of 2022-09-21T17:35:09,305 configuration. 2022-09-21T17:35:09,305 !! 2022-09-21T17:35:09,306 warnings.warn(msg, _WouldIgnoreField) 2022-09-21T17:35:09,306 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-21T17:35:09,307 ########################################################################## 2022-09-21T17:35:09,307 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-21T17:35:09,308 ########################################################################## 2022-09-21T17:35:09,309 The following seems to be defined outside of `pyproject.toml`: 2022-09-21T17:35:09,310 `urls = {'Bug Tracker': 'https://github.com/AP6YC/cvi/issues', 'Documentation': 'https://cluster-validity-indices.readthedocs.io/'}` 2022-09-21T17:35:09,310 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-21T17:35:09,311 consider this value unless 'urls' is listed as `dynamic`. 2022-09-21T17:35:09,312 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-21T17:35:09,313 For the time being, `setuptools` will still consider the given value (as a 2022-09-21T17:35:09,313 **transitional** measure), but please note that future releases of setuptools will 2022-09-21T17:35:09,314 follow strictly the standard. 2022-09-21T17:35:09,314 To prevent this warning, you can list 'urls' under `dynamic` or alternatively 2022-09-21T17:35:09,315 remove the `[project]` table from your file and rely entirely on other means of 2022-09-21T17:35:09,315 configuration. 2022-09-21T17:35:09,317 !! 2022-09-21T17:35:09,318 warnings.warn(msg, _WouldIgnoreField) 2022-09-21T17:35:09,622 Building wheel for cvi (pyproject.toml): finished with status 'done' 2022-09-21T17:35:09,636 Created wheel for cvi: filename=cvi-0.2.0-py3-none-any.whl size=21706 sha256=d6fdf15585ae4c5ba5d46e0f22bb6e58ab4e9db39fde6ee27b03fd18844b3001 2022-09-21T17:35:09,638 Stored in directory: /tmp/pip-ephem-wheel-cache-510paqgf/wheels/c4/7f/e1/2330e68ba9cfb2d7a45fc00a5ccf0e8d66378c0c5ee2291f98 2022-09-21T17:35:09,663 Successfully built cvi 2022-09-21T17:35:09,672 Removed build tracker: '/tmp/pip-build-tracker-9ww511ri'