2022-09-23T14:23:14,884 Created temporary directory: /tmp/pip-ephem-wheel-cache-djtves6n 2022-09-23T14:23:14,890 Created temporary directory: /tmp/pip-build-tracker-i__0oz3b 2022-09-23T14:23:14,891 Initialized build tracking at /tmp/pip-build-tracker-i__0oz3b 2022-09-23T14:23:14,891 Created build tracker: /tmp/pip-build-tracker-i__0oz3b 2022-09-23T14:23:14,892 Entered build tracker: /tmp/pip-build-tracker-i__0oz3b 2022-09-23T14:23:14,893 Created temporary directory: /tmp/pip-wheel-u36yc__i 2022-09-23T14:23:14,968 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2022-09-23T14:23:14,976 2 location(s) to search for versions of cvi: 2022-09-23T14:23:14,976 * https://pypi.org/simple/cvi/ 2022-09-23T14:23:14,976 * https://www.piwheels.org/simple/cvi/ 2022-09-23T14:23:14,977 Fetching project page and analyzing links: https://pypi.org/simple/cvi/ 2022-09-23T14:23:14,978 Getting page https://pypi.org/simple/cvi/ 2022-09-23T14:23:14,982 Found index url https://pypi.org/simple 2022-09-23T14:23:15,181 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-23T14:23:15,182 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-23T14:23:15,183 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-23T14:23:15,185 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-23T14:23:15,185 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-23T14:23:15,187 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-23T14:23:15,188 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-23T14:23:15,189 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-23T14:23:15,190 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-23T14:23:15,191 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-23T14:23:15,192 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-23T14:23:15,194 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-23T14:23:15,194 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-23T14:23:15,196 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-23T14:23:15,197 Skipping link: No binaries permitted for cvi: https://files.pythonhosted.org/packages/16/b9/8b8a7685432ff74a83e9ac87ea08a3254687ac3df9b214d9a7ce1036c22a/cvi-0.3.0-py3-none-any.whl#sha256=b89ac91b8ed8c3fb3d4cabbad8dff9fa23eaa69d2731fdb49ca07b9ec716217a (from https://pypi.org/simple/cvi/) (requires-python:>=3.6) 2022-09-23T14:23:15,198 Found link https://files.pythonhosted.org/packages/98/6c/bad42645f7b2457a2cd1ad18aeb6cdd3de825e00ec218125bc67408fa9bc/cvi-0.3.0.tar.gz#sha256=a590d4d9bcee8f242b3ed794f2e73dac0f680331c0b7333a51d59a57ae48ace5 (from https://pypi.org/simple/cvi/) (requires-python:>=3.6), version: 0.3.0 2022-09-23T14:23:15,199 Fetching project page and analyzing links: https://www.piwheels.org/simple/cvi/ 2022-09-23T14:23:15,200 Getting page https://www.piwheels.org/simple/cvi/ 2022-09-23T14:23:15,202 Found index url https://www.piwheels.org/simple 2022-09-23T14:23:15,438 Skipping link: No binaries permitted for cvi: https://www.piwheels.org/simple/cvi/cvi-0.2.0-py3-none-any.whl#sha256=d6fdf15585ae4c5ba5d46e0f22bb6e58ab4e9db39fde6ee27b03fd18844b3001 (from https://www.piwheels.org/simple/cvi/) (requires-python:>=3.6) 2022-09-23T14:23:15,438 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-23T14:23:15,439 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-23T14:23:15,439 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-23T14:23:15,440 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-23T14:23:15,441 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-23T14:23:15,441 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-23T14:23:15,442 Skipping link: not a file: https://www.piwheels.org/simple/cvi/ 2022-09-23T14:23:15,442 Skipping link: not a file: https://pypi.org/simple/cvi/ 2022-09-23T14:23:15,480 Given no hashes to check 1 links for project 'cvi': discarding no candidates 2022-09-23T14:23:15,512 Collecting cvi==0.3.0 2022-09-23T14:23:15,516 Created temporary directory: /tmp/pip-unpack-015vlaoi 2022-09-23T14:23:16,040 Downloading cvi-0.3.0.tar.gz (19 kB) 2022-09-23T14:23:16,177 Added cvi==0.3.0 from https://files.pythonhosted.org/packages/98/6c/bad42645f7b2457a2cd1ad18aeb6cdd3de825e00ec218125bc67408fa9bc/cvi-0.3.0.tar.gz#sha256=a590d4d9bcee8f242b3ed794f2e73dac0f680331c0b7333a51d59a57ae48ace5 to build tracker '/tmp/pip-build-tracker-i__0oz3b' 2022-09-23T14:23:16,185 Created temporary directory: /tmp/pip-build-env-elou4str 2022-09-23T14:23:16,201 Created temporary directory: /tmp/pip-standalone-pip-ku2hp8ga 2022-09-23T14:23:18,579 Installing build dependencies: started 2022-09-23T14:23:18,581 Running command pip subprocess to install build dependencies 2022-09-23T14:23:28,297 Using pip 22.1.2 from /tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip (python 3.7) 2022-09-23T14:23:30,196 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2022-09-23T14:23:34,531 Collecting setuptools>=42 2022-09-23T14:23:34,828 Using cached https://www.piwheels.org/simple/setuptools/setuptools-65.3.0-py3-none-any.whl (1.2 MB) 2022-09-23T14:23:48,759 Installing collected packages: setuptools 2022-09-23T14:23:53,896 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-23T14:23:53,897 espnet-onnx 0.1.9 requires espnet-tts-frontend, which is not installed. 2022-09-23T14:23:53,897 espnet-onnx 0.1.9 requires g2p-en, which is not installed. 2022-09-23T14:23:53,898 espnet-onnx 0.1.9 requires jamo==0.4.1, which is not installed. 2022-09-23T14:23:53,898 espnet-onnx 0.1.9 requires librosa>=0.8.0, which is not installed. 2022-09-23T14:23:53,898 espnet-onnx 0.1.9 requires onnxruntime>=1.4.0, which is not installed. 2022-09-23T14:23:53,899 espnet-onnx 0.1.9 requires sentencepiece!=0.1.92,>=0.1.91, which is not installed. 2022-09-23T14:23:53,899 espnet-onnx 0.1.9 requires typeguard>=2.7.0, which is not installed. 2022-09-23T14:23:53,900 espnet-onnx 0.1.9 requires numpy<=1.21.3, but you have numpy 1.21.4 which is incompatible. 2022-09-23T14:23:53,900 Successfully installed setuptools-65.3.0 2022-09-23T14:23:54,155 --- Logging error --- 2022-09-23T14:23:54,155 Traceback (most recent call last): 2022-09-23T14:23:54,156 File "/tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip/_internal/utils/logging.py", line 177, in emit 2022-09-23T14:23:54,156 self.console.print(renderable, overflow="ignore", crop=False, style=style) 2022-09-23T14:23:54,157 File "/tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip/_vendor/rich/console.py", line 1752, in print 2022-09-23T14:23:54,157 extend(render(renderable, render_options)) 2022-09-23T14:23:54,157 File "/tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip/_vendor/rich/console.py", line 1390, in render 2022-09-23T14:23:54,158 for render_output in iter_render: 2022-09-23T14:23:54,158 File "/tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip/_internal/utils/logging.py", line 134, in __rich_console__ 2022-09-23T14:23:54,158 for line in lines: 2022-09-23T14:23:54,159 File "/tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip/_vendor/rich/segment.py", line 245, in split_lines 2022-09-23T14:23:54,159 for segment in segments: 2022-09-23T14:23:54,159 File "/tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip/_vendor/rich/console.py", line 1368, in render 2022-09-23T14:23:54,160 renderable = rich_cast(renderable) 2022-09-23T14:23:54,160 File "/tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip/_vendor/rich/protocol.py", line 36, in rich_cast 2022-09-23T14:23:54,160 renderable = cast_method() 2022-09-23T14:23:54,161 File "/tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip/_internal/self_outdated_check.py", line 130, in __rich__ 2022-09-23T14:23:54,161 pip_cmd = get_best_invocation_for_this_pip() 2022-09-23T14:23:54,161 File "/tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip/_internal/utils/entrypoints.py", line 60, in get_best_invocation_for_this_pip 2022-09-23T14:23:54,162 os.path.join(binary_prefix, exe_name), 2022-09-23T14:23:54,162 File "/usr/lib/python3.7/genericpath.py", line 97, in samefile 2022-09-23T14:23:54,162 s2 = os.stat(f2) 2022-09-23T14:23:54,163 FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.7' 2022-09-23T14:23:54,163 Call stack: 2022-09-23T14:23:54,163 File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main 2022-09-23T14:23:54,164 "__main__", mod_spec) 2022-09-23T14:23:54,164 File "/usr/lib/python3.7/runpy.py", line 85, in _run_code 2022-09-23T14:23:54,164 exec(code, run_globals) 2022-09-23T14:23:54,165 File "/tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip/__main__.py", line 31, in 2022-09-23T14:23:54,165 sys.exit(_main()) 2022-09-23T14:23:54,165 File "/tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip/_internal/cli/main.py", line 70, in main 2022-09-23T14:23:54,165 return command.main(cmd_args) 2022-09-23T14:23:54,166 File "/tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip/_internal/cli/base_command.py", line 101, in main 2022-09-23T14:23:54,166 return self._main(args) 2022-09-23T14:23:54,166 File "/tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip/_internal/cli/base_command.py", line 223, in _main 2022-09-23T14:23:54,167 self.handle_pip_version_check(options) 2022-09-23T14:23:54,167 File "/tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip/_internal/cli/req_command.py", line 148, in handle_pip_version_check 2022-09-23T14:23:54,167 pip_self_version_check(session, options) 2022-09-23T14:23:54,168 File "/tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip/_internal/self_outdated_check.py", line 237, in pip_self_version_check 2022-09-23T14:23:54,168 logger.info("[present-rich] %s", upgrade_prompt) 2022-09-23T14:23:54,169 File "/usr/lib/python3.7/logging/__init__.py", line 1383, in info 2022-09-23T14:23:54,169 self._log(INFO, msg, args, **kwargs) 2022-09-23T14:23:54,169 File "/usr/lib/python3.7/logging/__init__.py", line 1519, in _log 2022-09-23T14:23:54,170 self.handle(record) 2022-09-23T14:23:54,170 File "/usr/lib/python3.7/logging/__init__.py", line 1529, in handle 2022-09-23T14:23:54,170 self.callHandlers(record) 2022-09-23T14:23:54,171 File "/usr/lib/python3.7/logging/__init__.py", line 1591, in callHandlers 2022-09-23T14:23:54,171 hdlr.handle(record) 2022-09-23T14:23:54,171 File "/usr/lib/python3.7/logging/__init__.py", line 905, in handle 2022-09-23T14:23:54,172 self.emit(record) 2022-09-23T14:23:54,172 File "/tmp/pip-standalone-pip-ku2hp8ga/__env_pip__.zip/pip/_internal/utils/logging.py", line 179, in emit 2022-09-23T14:23:54,172 self.handleError(record) 2022-09-23T14:23:54,173 Message: '[present-rich] %s' 2022-09-23T14:23:54,173 Arguments: (UpgradePrompt(old='22.1.2', new='22.2.2'),) 2022-09-23T14:23:54,660 Installing build dependencies: finished with status 'done' 2022-09-23T14:23:54,688 Getting requirements to build wheel: started 2022-09-23T14:23:54,690 Running command Getting requirements to build wheel 2022-09-23T14:23:59,183 /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-23T14:23:59,185 warnings.warn(msg, _ExperimentalProjectMetadata) 2022-09-23T14:23:59,185 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-23T14:23:59,186 ########################################################################## 2022-09-23T14:23:59,187 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-23T14:23:59,187 ########################################################################## 2022-09-23T14:23:59,188 The following seems to be defined outside of `pyproject.toml`: 2022-09-23T14:23:59,189 `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.3.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.3.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-23T14:23:59,190 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-23T14:23:59,190 consider this value unless 'readme' is listed as `dynamic`. 2022-09-23T14:23:59,191 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-23T14:23:59,191 For the time being, `setuptools` will still consider the given value (as a 2022-09-23T14:23:59,192 **transitional** measure), but please note that future releases of setuptools will 2022-09-23T14:23:59,192 follow strictly the standard. 2022-09-23T14:23:59,193 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2022-09-23T14:23:59,193 remove the `[project]` table from your file and rely entirely on other means of 2022-09-23T14:23:59,193 configuration. 2022-09-23T14:23:59,194 !! 2022-09-23T14:23:59,195 warnings.warn(msg, _WouldIgnoreField) 2022-09-23T14:24:00,785 running egg_info 2022-09-23T14:24:01,430 writing src/cvi.egg-info/PKG-INFO 2022-09-23T14:24:02,040 writing dependency_links to src/cvi.egg-info/dependency_links.txt 2022-09-23T14:24:05,053 writing requirements to src/cvi.egg-info/requires.txt 2022-09-23T14:24:05,657 writing top-level names to src/cvi.egg-info/top_level.txt 2022-09-23T14:24:06,384 reading manifest file 'src/cvi.egg-info/SOURCES.txt' 2022-09-23T14:24:06,389 adding license file 'LICENSE' 2022-09-23T14:24:06,395 writing manifest file 'src/cvi.egg-info/SOURCES.txt' 2022-09-23T14:24:06,399 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-23T14:24:06,400 ########################################################################## 2022-09-23T14:24:06,401 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-23T14:24:06,402 ########################################################################## 2022-09-23T14:24:06,402 The following seems to be defined outside of `pyproject.toml`: 2022-09-23T14:24:06,403 `requires-python = =3.6')>` 2022-09-23T14:24:06,404 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-23T14:24:06,405 consider this value unless 'requires-python' is listed as `dynamic`. 2022-09-23T14:24:06,406 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-23T14:24:06,407 For the time being, `setuptools` will still consider the given value (as a 2022-09-23T14:24:06,407 **transitional** measure), but please note that future releases of setuptools will 2022-09-23T14:24:06,408 follow strictly the standard. 2022-09-23T14:24:06,409 To prevent this warning, you can list 'requires-python' under `dynamic` or alternatively 2022-09-23T14:24:06,410 remove the `[project]` table from your file and rely entirely on other means of 2022-09-23T14:24:06,410 configuration. 2022-09-23T14:24:06,412 !! 2022-09-23T14:24:06,413 warnings.warn(msg, _WouldIgnoreField) 2022-09-23T14:24:06,413 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-23T14:24:06,414 ########################################################################## 2022-09-23T14:24:06,415 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-23T14:24:06,415 ########################################################################## 2022-09-23T14:24:06,416 The following seems to be defined outside of `pyproject.toml`: 2022-09-23T14:24:06,417 `classifiers = ['Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent']` 2022-09-23T14:24:06,418 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-23T14:24:06,419 consider this value unless 'classifiers' is listed as `dynamic`. 2022-09-23T14:24:06,419 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-23T14:24:06,420 For the time being, `setuptools` will still consider the given value (as a 2022-09-23T14:24:06,421 **transitional** measure), but please note that future releases of setuptools will 2022-09-23T14:24:06,421 follow strictly the standard. 2022-09-23T14:24:06,422 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2022-09-23T14:24:06,422 remove the `[project]` table from your file and rely entirely on other means of 2022-09-23T14:24:06,423 configuration. 2022-09-23T14:24:06,424 !! 2022-09-23T14:24:06,425 warnings.warn(msg, _WouldIgnoreField) 2022-09-23T14:24:06,426 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-23T14:24:06,427 ########################################################################## 2022-09-23T14:24:06,427 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-23T14:24:06,428 ########################################################################## 2022-09-23T14:24:06,429 The following seems to be defined outside of `pyproject.toml`: 2022-09-23T14:24:06,429 `urls = {'Bug Tracker': 'https://github.com/AP6YC/cvi/issues', 'Documentation': 'https://cluster-validity-indices.readthedocs.io/'}` 2022-09-23T14:24:06,430 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-23T14:24:06,431 consider this value unless 'urls' is listed as `dynamic`. 2022-09-23T14:24:06,432 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-23T14:24:06,432 For the time being, `setuptools` will still consider the given value (as a 2022-09-23T14:24:06,433 **transitional** measure), but please note that future releases of setuptools will 2022-09-23T14:24:06,433 follow strictly the standard. 2022-09-23T14:24:06,434 To prevent this warning, you can list 'urls' under `dynamic` or alternatively 2022-09-23T14:24:06,434 remove the `[project]` table from your file and rely entirely on other means of 2022-09-23T14:24:06,435 configuration. 2022-09-23T14:24:06,436 !! 2022-09-23T14:24:06,437 warnings.warn(msg, _WouldIgnoreField) 2022-09-23T14:24:06,708 Getting requirements to build wheel: finished with status 'done' 2022-09-23T14:24:06,734 Created temporary directory: /tmp/pip-standalone-pip-n_2a4m0i 2022-09-23T14:24:09,022 Installing backend dependencies: started 2022-09-23T14:24:09,024 Running command pip subprocess to install backend dependencies 2022-09-23T14:24:18,917 Using pip 22.1.2 from /tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip (python 3.7) 2022-09-23T14:24:20,786 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2022-09-23T14:24:21,666 Collecting wheel 2022-09-23T14:24:21,701 Using cached https://www.piwheels.org/simple/wheel/wheel-0.37.1-py2.py3-none-any.whl (35 kB) 2022-09-23T14:24:34,893 Installing collected packages: wheel 2022-09-23T14:24:35,172 Creating /tmp/pip-build-env-elou4str/normal/bin 2022-09-23T14:24:35,177 changing mode of /tmp/pip-build-env-elou4str/normal/bin/wheel to 755 2022-09-23T14:24:35,204 Successfully installed wheel-0.37.1 2022-09-23T14:24:35,437 --- Logging error --- 2022-09-23T14:24:35,437 Traceback (most recent call last): 2022-09-23T14:24:35,438 File "/tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip/_internal/utils/logging.py", line 177, in emit 2022-09-23T14:24:35,438 self.console.print(renderable, overflow="ignore", crop=False, style=style) 2022-09-23T14:24:35,439 File "/tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip/_vendor/rich/console.py", line 1752, in print 2022-09-23T14:24:35,439 extend(render(renderable, render_options)) 2022-09-23T14:24:35,439 File "/tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip/_vendor/rich/console.py", line 1390, in render 2022-09-23T14:24:35,440 for render_output in iter_render: 2022-09-23T14:24:35,440 File "/tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip/_internal/utils/logging.py", line 134, in __rich_console__ 2022-09-23T14:24:35,440 for line in lines: 2022-09-23T14:24:35,441 File "/tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip/_vendor/rich/segment.py", line 245, in split_lines 2022-09-23T14:24:35,441 for segment in segments: 2022-09-23T14:24:35,441 File "/tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip/_vendor/rich/console.py", line 1368, in render 2022-09-23T14:24:35,442 renderable = rich_cast(renderable) 2022-09-23T14:24:35,442 File "/tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip/_vendor/rich/protocol.py", line 36, in rich_cast 2022-09-23T14:24:35,442 renderable = cast_method() 2022-09-23T14:24:35,443 File "/tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip/_internal/self_outdated_check.py", line 130, in __rich__ 2022-09-23T14:24:35,443 pip_cmd = get_best_invocation_for_this_pip() 2022-09-23T14:24:35,443 File "/tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip/_internal/utils/entrypoints.py", line 60, in get_best_invocation_for_this_pip 2022-09-23T14:24:35,444 os.path.join(binary_prefix, exe_name), 2022-09-23T14:24:35,444 File "/usr/lib/python3.7/genericpath.py", line 97, in samefile 2022-09-23T14:24:35,444 s2 = os.stat(f2) 2022-09-23T14:24:35,445 FileNotFoundError: [Errno 2] No such file or directory: '/usr/bin/pip3.7' 2022-09-23T14:24:35,445 Call stack: 2022-09-23T14:24:35,445 File "/usr/lib/python3.7/runpy.py", line 193, in _run_module_as_main 2022-09-23T14:24:35,446 "__main__", mod_spec) 2022-09-23T14:24:35,446 File "/usr/lib/python3.7/runpy.py", line 85, in _run_code 2022-09-23T14:24:35,446 exec(code, run_globals) 2022-09-23T14:24:35,446 File "/tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip/__main__.py", line 31, in 2022-09-23T14:24:35,447 sys.exit(_main()) 2022-09-23T14:24:35,447 File "/tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip/_internal/cli/main.py", line 70, in main 2022-09-23T14:24:35,447 return command.main(cmd_args) 2022-09-23T14:24:35,448 File "/tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip/_internal/cli/base_command.py", line 101, in main 2022-09-23T14:24:35,448 return self._main(args) 2022-09-23T14:24:35,448 File "/tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip/_internal/cli/base_command.py", line 223, in _main 2022-09-23T14:24:35,449 self.handle_pip_version_check(options) 2022-09-23T14:24:35,449 File "/tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip/_internal/cli/req_command.py", line 148, in handle_pip_version_check 2022-09-23T14:24:35,449 pip_self_version_check(session, options) 2022-09-23T14:24:35,450 File "/tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip/_internal/self_outdated_check.py", line 237, in pip_self_version_check 2022-09-23T14:24:35,450 logger.info("[present-rich] %s", upgrade_prompt) 2022-09-23T14:24:35,450 File "/usr/lib/python3.7/logging/__init__.py", line 1383, in info 2022-09-23T14:24:35,451 self._log(INFO, msg, args, **kwargs) 2022-09-23T14:24:35,451 File "/usr/lib/python3.7/logging/__init__.py", line 1519, in _log 2022-09-23T14:24:35,451 self.handle(record) 2022-09-23T14:24:35,452 File "/usr/lib/python3.7/logging/__init__.py", line 1529, in handle 2022-09-23T14:24:35,452 self.callHandlers(record) 2022-09-23T14:24:35,452 File "/usr/lib/python3.7/logging/__init__.py", line 1591, in callHandlers 2022-09-23T14:24:35,453 hdlr.handle(record) 2022-09-23T14:24:35,453 File "/usr/lib/python3.7/logging/__init__.py", line 905, in handle 2022-09-23T14:24:35,453 self.emit(record) 2022-09-23T14:24:35,454 File "/tmp/pip-standalone-pip-n_2a4m0i/__env_pip__.zip/pip/_internal/utils/logging.py", line 179, in emit 2022-09-23T14:24:35,454 self.handleError(record) 2022-09-23T14:24:35,455 Message: '[present-rich] %s' 2022-09-23T14:24:35,455 Arguments: (UpgradePrompt(old='22.1.2', new='22.2.2'),) 2022-09-23T14:24:35,899 Installing backend dependencies: finished with status 'done' 2022-09-23T14:24:35,920 Created temporary directory: /tmp/pip-modern-metadata-ks7zyhsp 2022-09-23T14:24:35,927 Preparing metadata (pyproject.toml): started 2022-09-23T14:24:35,929 Running command Preparing metadata (pyproject.toml) 2022-09-23T14:24:40,185 /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-23T14:24:40,187 warnings.warn(msg, _ExperimentalProjectMetadata) 2022-09-23T14:24:40,187 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-23T14:24:40,188 ########################################################################## 2022-09-23T14:24:40,189 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-23T14:24:40,189 ########################################################################## 2022-09-23T14:24:40,190 The following seems to be defined outside of `pyproject.toml`: 2022-09-23T14:24:40,191 `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.3.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.3.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-23T14:24:40,192 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-23T14:24:40,192 consider this value unless 'readme' is listed as `dynamic`. 2022-09-23T14:24:40,193 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-23T14:24:40,194 For the time being, `setuptools` will still consider the given value (as a 2022-09-23T14:24:40,194 **transitional** measure), but please note that future releases of setuptools will 2022-09-23T14:24:40,194 follow strictly the standard. 2022-09-23T14:24:40,195 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2022-09-23T14:24:40,195 remove the `[project]` table from your file and rely entirely on other means of 2022-09-23T14:24:40,195 configuration. 2022-09-23T14:24:40,196 !! 2022-09-23T14:24:40,197 warnings.warn(msg, _WouldIgnoreField) 2022-09-23T14:24:41,810 running dist_info 2022-09-23T14:24:42,464 creating /tmp/pip-modern-metadata-ks7zyhsp/cvi.egg-info 2022-09-23T14:24:43,111 writing /tmp/pip-modern-metadata-ks7zyhsp/cvi.egg-info/PKG-INFO 2022-09-23T14:24:43,727 writing dependency_links to /tmp/pip-modern-metadata-ks7zyhsp/cvi.egg-info/dependency_links.txt 2022-09-23T14:24:46,765 writing requirements to /tmp/pip-modern-metadata-ks7zyhsp/cvi.egg-info/requires.txt 2022-09-23T14:24:47,374 writing top-level names to /tmp/pip-modern-metadata-ks7zyhsp/cvi.egg-info/top_level.txt 2022-09-23T14:24:47,376 writing manifest file '/tmp/pip-modern-metadata-ks7zyhsp/cvi.egg-info/SOURCES.txt' 2022-09-23T14:24:48,105 reading manifest file '/tmp/pip-modern-metadata-ks7zyhsp/cvi.egg-info/SOURCES.txt' 2022-09-23T14:24:48,108 adding license file 'LICENSE' 2022-09-23T14:24:48,114 writing manifest file '/tmp/pip-modern-metadata-ks7zyhsp/cvi.egg-info/SOURCES.txt' 2022-09-23T14:24:48,116 creating '/tmp/pip-modern-metadata-ks7zyhsp/cvi-0.3.0.dist-info' 2022-09-23T14:24:48,256 adding license file "LICENSE" (matched pattern "LICEN[CS]E*") 2022-09-23T14:24:48,269 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-23T14:24:48,270 ########################################################################## 2022-09-23T14:24:48,271 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-23T14:24:48,271 ########################################################################## 2022-09-23T14:24:48,272 The following seems to be defined outside of `pyproject.toml`: 2022-09-23T14:24:48,272 `requires-python = =3.6')>` 2022-09-23T14:24:48,273 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-23T14:24:48,273 consider this value unless 'requires-python' is listed as `dynamic`. 2022-09-23T14:24:48,274 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-23T14:24:48,274 For the time being, `setuptools` will still consider the given value (as a 2022-09-23T14:24:48,274 **transitional** measure), but please note that future releases of setuptools will 2022-09-23T14:24:48,275 follow strictly the standard. 2022-09-23T14:24:48,275 To prevent this warning, you can list 'requires-python' under `dynamic` or alternatively 2022-09-23T14:24:48,276 remove the `[project]` table from your file and rely entirely on other means of 2022-09-23T14:24:48,276 configuration. 2022-09-23T14:24:48,277 !! 2022-09-23T14:24:48,277 warnings.warn(msg, _WouldIgnoreField) 2022-09-23T14:24:48,278 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-23T14:24:48,289 ########################################################################## 2022-09-23T14:24:48,290 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-23T14:24:48,290 ########################################################################## 2022-09-23T14:24:48,291 The following seems to be defined outside of `pyproject.toml`: 2022-09-23T14:24:48,292 `classifiers = ['Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent']` 2022-09-23T14:24:48,293 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-23T14:24:48,293 consider this value unless 'classifiers' is listed as `dynamic`. 2022-09-23T14:24:48,294 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-23T14:24:48,295 For the time being, `setuptools` will still consider the given value (as a 2022-09-23T14:24:48,295 **transitional** measure), but please note that future releases of setuptools will 2022-09-23T14:24:48,296 follow strictly the standard. 2022-09-23T14:24:48,297 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2022-09-23T14:24:48,297 remove the `[project]` table from your file and rely entirely on other means of 2022-09-23T14:24:48,298 configuration. 2022-09-23T14:24:48,299 !! 2022-09-23T14:24:48,300 warnings.warn(msg, _WouldIgnoreField) 2022-09-23T14:24:48,301 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-23T14:24:48,302 ########################################################################## 2022-09-23T14:24:48,303 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-23T14:24:48,303 ########################################################################## 2022-09-23T14:24:48,304 The following seems to be defined outside of `pyproject.toml`: 2022-09-23T14:24:48,305 `urls = {'Bug Tracker': 'https://github.com/AP6YC/cvi/issues', 'Documentation': 'https://cluster-validity-indices.readthedocs.io/'}` 2022-09-23T14:24:48,306 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-23T14:24:48,306 consider this value unless 'urls' is listed as `dynamic`. 2022-09-23T14:24:48,307 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-23T14:24:48,308 For the time being, `setuptools` will still consider the given value (as a 2022-09-23T14:24:48,308 **transitional** measure), but please note that future releases of setuptools will 2022-09-23T14:24:48,309 follow strictly the standard. 2022-09-23T14:24:48,310 To prevent this warning, you can list 'urls' under `dynamic` or alternatively 2022-09-23T14:24:48,310 remove the `[project]` table from your file and rely entirely on other means of 2022-09-23T14:24:48,310 configuration. 2022-09-23T14:24:48,312 !! 2022-09-23T14:24:48,312 warnings.warn(msg, _WouldIgnoreField) 2022-09-23T14:24:48,589 Preparing metadata (pyproject.toml): finished with status 'done' 2022-09-23T14:24:48,605 Source in /tmp/pip-wheel-u36yc__i/cvi_6a1261ac85b447ecb32375a45de5ff2c has version 0.3.0, which satisfies requirement cvi==0.3.0 from https://files.pythonhosted.org/packages/98/6c/bad42645f7b2457a2cd1ad18aeb6cdd3de825e00ec218125bc67408fa9bc/cvi-0.3.0.tar.gz#sha256=a590d4d9bcee8f242b3ed794f2e73dac0f680331c0b7333a51d59a57ae48ace5 2022-09-23T14:24:48,607 Removed cvi==0.3.0 from https://files.pythonhosted.org/packages/98/6c/bad42645f7b2457a2cd1ad18aeb6cdd3de825e00ec218125bc67408fa9bc/cvi-0.3.0.tar.gz#sha256=a590d4d9bcee8f242b3ed794f2e73dac0f680331c0b7333a51d59a57ae48ace5 from build tracker '/tmp/pip-build-tracker-i__0oz3b' 2022-09-23T14:24:48,622 Created temporary directory: /tmp/pip-unpack-c0vta7nl 2022-09-23T14:24:48,623 Building wheels for collected packages: cvi 2022-09-23T14:24:48,632 Created temporary directory: /tmp/pip-wheel-zm5xijo6 2022-09-23T14:24:48,633 Destination directory: /tmp/pip-wheel-zm5xijo6 2022-09-23T14:24:48,638 Building wheel for cvi (pyproject.toml): started 2022-09-23T14:24:48,640 Running command Building wheel for cvi (pyproject.toml) 2022-09-23T14:24:52,890 /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-23T14:24:52,891 warnings.warn(msg, _ExperimentalProjectMetadata) 2022-09-23T14:24:52,892 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-23T14:24:52,893 ########################################################################## 2022-09-23T14:24:52,893 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-23T14:24:52,893 ########################################################################## 2022-09-23T14:24:52,894 The following seems to be defined outside of `pyproject.toml`: 2022-09-23T14:24:52,895 `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.3.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.3.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-23T14:24:52,896 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-23T14:24:52,897 consider this value unless 'readme' is listed as `dynamic`. 2022-09-23T14:24:52,897 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-23T14:24:52,898 For the time being, `setuptools` will still consider the given value (as a 2022-09-23T14:24:52,898 **transitional** measure), but please note that future releases of setuptools will 2022-09-23T14:24:52,899 follow strictly the standard. 2022-09-23T14:24:52,899 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2022-09-23T14:24:52,900 remove the `[project]` table from your file and rely entirely on other means of 2022-09-23T14:24:52,900 configuration. 2022-09-23T14:24:52,901 !! 2022-09-23T14:24:52,901 warnings.warn(msg, _WouldIgnoreField) 2022-09-23T14:24:53,879 running bdist_wheel 2022-09-23T14:24:54,691 running build 2022-09-23T14:24:54,692 running build_py 2022-09-23T14:24:55,344 creating build 2022-09-23T14:24:55,344 creating build/lib 2022-09-23T14:24:55,346 creating build/lib/cvi 2022-09-23T14:24:55,348 copying src/cvi/__init__.py -> build/lib/cvi 2022-09-23T14:24:55,354 creating build/lib/cvi/modules 2022-09-23T14:24:55,355 copying src/cvi/modules/__init__.py -> build/lib/cvi/modules 2022-09-23T14:24:55,359 copying src/cvi/modules/cSIL.py -> build/lib/cvi/modules 2022-09-23T14:24:55,363 copying src/cvi/modules/WB.py -> build/lib/cvi/modules 2022-09-23T14:24:55,367 copying src/cvi/modules/DB.py -> build/lib/cvi/modules 2022-09-23T14:24:55,372 copying src/cvi/modules/GD53.py -> build/lib/cvi/modules 2022-09-23T14:24:55,376 copying src/cvi/modules/XB.py -> build/lib/cvi/modules 2022-09-23T14:24:55,380 copying src/cvi/modules/CH.py -> build/lib/cvi/modules 2022-09-23T14:24:55,384 copying src/cvi/modules/GD43.py -> build/lib/cvi/modules 2022-09-23T14:24:55,389 copying src/cvi/modules/_base.py -> build/lib/cvi/modules 2022-09-23T14:24:55,394 creating build/lib/cvi/compat 2022-09-23T14:24:55,396 copying src/cvi/compat/__init__.py -> build/lib/cvi/compat 2022-09-23T14:24:55,399 copying src/cvi/compat/v0.py -> build/lib/cvi/compat 2022-09-23T14:24:55,404 running egg_info 2022-09-23T14:24:56,709 writing src/cvi.egg-info/PKG-INFO 2022-09-23T14:24:57,327 writing dependency_links to src/cvi.egg-info/dependency_links.txt 2022-09-23T14:25:00,359 writing requirements to src/cvi.egg-info/requires.txt 2022-09-23T14:25:00,968 writing top-level names to src/cvi.egg-info/top_level.txt 2022-09-23T14:25:01,015 reading manifest file 'src/cvi.egg-info/SOURCES.txt' 2022-09-23T14:25:01,019 adding license file 'LICENSE' 2022-09-23T14:25:01,025 writing manifest file 'src/cvi.egg-info/SOURCES.txt' 2022-09-23T14:25:02,314 installing to build/bdist.linux-armv7l/wheel 2022-09-23T14:25:02,314 running install 2022-09-23T14:25:02,375 running install_lib 2022-09-23T14:25:03,018 creating build/bdist.linux-armv7l 2022-09-23T14:25:03,018 creating build/bdist.linux-armv7l/wheel 2022-09-23T14:25:03,022 creating build/bdist.linux-armv7l/wheel/cvi 2022-09-23T14:25:03,023 copying build/lib/cvi/__init__.py -> build/bdist.linux-armv7l/wheel/cvi 2022-09-23T14:25:03,029 creating build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-23T14:25:03,030 copying build/lib/cvi/modules/__init__.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-23T14:25:03,034 copying build/lib/cvi/modules/cSIL.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-23T14:25:03,038 copying build/lib/cvi/modules/WB.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-23T14:25:03,042 copying build/lib/cvi/modules/DB.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-23T14:25:03,047 copying build/lib/cvi/modules/GD53.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-23T14:25:03,051 copying build/lib/cvi/modules/XB.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-23T14:25:03,055 copying build/lib/cvi/modules/CH.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-23T14:25:03,059 copying build/lib/cvi/modules/GD43.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-23T14:25:03,064 copying build/lib/cvi/modules/_base.py -> build/bdist.linux-armv7l/wheel/cvi/modules 2022-09-23T14:25:03,069 creating build/bdist.linux-armv7l/wheel/cvi/compat 2022-09-23T14:25:03,070 copying build/lib/cvi/compat/__init__.py -> build/bdist.linux-armv7l/wheel/cvi/compat 2022-09-23T14:25:03,074 copying build/lib/cvi/compat/v0.py -> build/bdist.linux-armv7l/wheel/cvi/compat 2022-09-23T14:25:03,079 running install_egg_info 2022-09-23T14:25:03,720 Copying src/cvi.egg-info to build/bdist.linux-armv7l/wheel/cvi-0.3.0-py3.7.egg-info 2022-09-23T14:25:03,740 running install_scripts 2022-09-23T14:25:03,775 adding license file "LICENSE" (matched pattern "LICEN[CS]E*") 2022-09-23T14:25:03,785 creating build/bdist.linux-armv7l/wheel/cvi-0.3.0.dist-info/WHEEL 2022-09-23T14:25:03,789 creating '/tmp/pip-wheel-zm5xijo6/tmp90ap210x/cvi-0.3.0-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it 2022-09-23T14:25:03,794 adding 'cvi/__init__.py' 2022-09-23T14:25:03,797 adding 'cvi/compat/__init__.py' 2022-09-23T14:25:03,803 adding 'cvi/compat/v0.py' 2022-09-23T14:25:03,808 adding 'cvi/modules/CH.py' 2022-09-23T14:25:03,811 adding 'cvi/modules/DB.py' 2022-09-23T14:25:03,815 adding 'cvi/modules/GD43.py' 2022-09-23T14:25:03,818 adding 'cvi/modules/GD53.py' 2022-09-23T14:25:03,822 adding 'cvi/modules/WB.py' 2022-09-23T14:25:03,825 adding 'cvi/modules/XB.py' 2022-09-23T14:25:03,827 adding 'cvi/modules/__init__.py' 2022-09-23T14:25:03,830 adding 'cvi/modules/_base.py' 2022-09-23T14:25:03,834 adding 'cvi/modules/cSIL.py' 2022-09-23T14:25:03,839 adding 'cvi-0.3.0.dist-info/LICENSE' 2022-09-23T14:25:03,842 adding 'cvi-0.3.0.dist-info/METADATA' 2022-09-23T14:25:03,844 adding 'cvi-0.3.0.dist-info/WHEEL' 2022-09-23T14:25:03,846 adding 'cvi-0.3.0.dist-info/top_level.txt' 2022-09-23T14:25:03,847 adding 'cvi-0.3.0.dist-info/RECORD' 2022-09-23T14:25:03,854 removing build/bdist.linux-armv7l/wheel 2022-09-23T14:25:03,871 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-23T14:25:03,872 ########################################################################## 2022-09-23T14:25:03,873 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-23T14:25:03,873 ########################################################################## 2022-09-23T14:25:03,874 The following seems to be defined outside of `pyproject.toml`: 2022-09-23T14:25:03,875 `requires-python = =3.6')>` 2022-09-23T14:25:03,876 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-23T14:25:03,877 consider this value unless 'requires-python' is listed as `dynamic`. 2022-09-23T14:25:03,878 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-23T14:25:03,879 For the time being, `setuptools` will still consider the given value (as a 2022-09-23T14:25:03,879 **transitional** measure), but please note that future releases of setuptools will 2022-09-23T14:25:03,880 follow strictly the standard. 2022-09-23T14:25:03,881 To prevent this warning, you can list 'requires-python' under `dynamic` or alternatively 2022-09-23T14:25:03,881 remove the `[project]` table from your file and rely entirely on other means of 2022-09-23T14:25:03,881 configuration. 2022-09-23T14:25:03,883 !! 2022-09-23T14:25:03,884 warnings.warn(msg, _WouldIgnoreField) 2022-09-23T14:25:03,884 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-23T14:25:03,885 ########################################################################## 2022-09-23T14:25:03,886 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-23T14:25:03,886 ########################################################################## 2022-09-23T14:25:03,887 The following seems to be defined outside of `pyproject.toml`: 2022-09-23T14:25:03,888 `classifiers = ['Programming Language :: Python :: 3', 'License :: OSI Approved :: MIT License', 'Operating System :: OS Independent']` 2022-09-23T14:25:03,889 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-23T14:25:03,889 consider this value unless 'classifiers' is listed as `dynamic`. 2022-09-23T14:25:03,890 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-23T14:25:03,891 For the time being, `setuptools` will still consider the given value (as a 2022-09-23T14:25:03,892 **transitional** measure), but please note that future releases of setuptools will 2022-09-23T14:25:03,892 follow strictly the standard. 2022-09-23T14:25:03,893 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2022-09-23T14:25:03,893 remove the `[project]` table from your file and rely entirely on other means of 2022-09-23T14:25:03,894 configuration. 2022-09-23T14:25:03,895 !! 2022-09-23T14:25:03,896 warnings.warn(msg, _WouldIgnoreField) 2022-09-23T14:25:03,897 /usr/local/lib/python3.7/dist-packages/setuptools/config/_apply_pyprojecttoml.py:101: _WouldIgnoreField: !! 2022-09-23T14:25:03,898 ########################################################################## 2022-09-23T14:25:03,898 # configuration would be ignored/result in error due to `pyproject.toml` # 2022-09-23T14:25:03,899 ########################################################################## 2022-09-23T14:25:03,899 The following seems to be defined outside of `pyproject.toml`: 2022-09-23T14:25:03,900 `urls = {'Bug Tracker': 'https://github.com/AP6YC/cvi/issues', 'Documentation': 'https://cluster-validity-indices.readthedocs.io/'}` 2022-09-23T14:25:03,901 According to the spec (see the link bellow), however, setuptools CANNOT 2022-09-23T14:25:03,902 consider this value unless 'urls' is listed as `dynamic`. 2022-09-23T14:25:03,902 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2022-09-23T14:25:03,903 For the time being, `setuptools` will still consider the given value (as a 2022-09-23T14:25:03,904 **transitional** measure), but please note that future releases of setuptools will 2022-09-23T14:25:03,904 follow strictly the standard. 2022-09-23T14:25:03,905 To prevent this warning, you can list 'urls' under `dynamic` or alternatively 2022-09-23T14:25:03,906 remove the `[project]` table from your file and rely entirely on other means of 2022-09-23T14:25:03,906 configuration. 2022-09-23T14:25:03,907 !! 2022-09-23T14:25:03,908 warnings.warn(msg, _WouldIgnoreField) 2022-09-23T14:25:04,189 Building wheel for cvi (pyproject.toml): finished with status 'done' 2022-09-23T14:25:04,203 Created wheel for cvi: filename=cvi-0.3.0-py3-none-any.whl size=27506 sha256=d9108af7344a7f95602de2e5d4d4ff4853ea3f8f056e18581ed591d25d5f1fe4 2022-09-23T14:25:04,205 Stored in directory: /tmp/pip-ephem-wheel-cache-djtves6n/wheels/14/ad/ff/2f30686ddc71963ebf3e912845dd50ff16361649bad17d0cc3 2022-09-23T14:25:04,229 Successfully built cvi 2022-09-23T14:25:04,239 Removed build tracker: '/tmp/pip-build-tracker-i__0oz3b'