2023-03-04T00:52:25,753 Created temporary directory: /tmp/pip-ephem-wheel-cache-jjsgrh0h 2023-03-04T00:52:25,756 Created temporary directory: /tmp/pip-build-tracker-we7abz39 2023-03-04T00:52:25,756 Initialized build tracking at /tmp/pip-build-tracker-we7abz39 2023-03-04T00:52:25,756 Created build tracker: /tmp/pip-build-tracker-we7abz39 2023-03-04T00:52:25,757 Entered build tracker: /tmp/pip-build-tracker-we7abz39 2023-03-04T00:52:25,757 Created temporary directory: /tmp/pip-wheel-w6rcdyhj 2023-03-04T00:52:25,762 DEPRECATION: --no-binary currently disables reading from the cache of locally built wheels. In the future --no-binary will not influence the wheel cache. pip 23.1 will enforce this behaviour change. A possible replacement is to use the --no-cache-dir option. You can use the flag --use-feature=no-binary-enable-wheel-cache to test the upcoming behaviour. Discussion can be found at https://github.com/pypa/pip/issues/11453 2023-03-04T00:52:25,765 Created temporary directory: /tmp/pip-ephem-wheel-cache-0azmo6k6 2023-03-04T00:52:25,794 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-03-04T00:52:25,796 2 location(s) to search for versions of difpy: 2023-03-04T00:52:25,796 * https://pypi.org/simple/difpy/ 2023-03-04T00:52:25,796 * https://www.piwheels.org/simple/difpy/ 2023-03-04T00:52:25,797 Fetching project page and analyzing links: https://pypi.org/simple/difpy/ 2023-03-04T00:52:25,797 Getting page https://pypi.org/simple/difpy/ 2023-03-04T00:52:25,799 Found index url https://pypi.org/simple 2023-03-04T00:52:25,852 Fetched page https://pypi.org/simple/difpy/ as application/vnd.pypi.simple.v1+json 2023-03-04T00:52:25,856 Found link https://files.pythonhosted.org/packages/a6/cf/39ed4e4c766169aac47956b553f67d99601fb118d2f218c80b097a77184c/difPy-1.0.1.tar.gz (from https://pypi.org/simple/difpy/), version: 1.0.1 2023-03-04T00:52:25,857 Found link https://files.pythonhosted.org/packages/44/a2/3ebf42ff6fb28d32ed439afde5eb23d50069ab5b0073d4427ebc811e9a0d/difPy-1.2.tar.gz (from https://pypi.org/simple/difpy/), version: 1.2 2023-03-04T00:52:25,857 Found link https://files.pythonhosted.org/packages/e1/12/d663f2b8b4e82b4d540525f2d97897cefbfc337d85ad0ae4540117223e7e/difPy-2.0.tar.gz (from https://pypi.org/simple/difpy/), version: 2.0 2023-03-04T00:52:25,857 Found link https://files.pythonhosted.org/packages/79/ab/812accfaf4e5a5e81388fd687a6f6f717db52b4c3a8c6b94699e57acbaa7/difPy-2.2.tar.gz (from https://pypi.org/simple/difpy/), version: 2.2 2023-03-04T00:52:25,857 Found link https://files.pythonhosted.org/packages/da/df/1164ab8c485bd4b3d0b53e23af6c4c13d3b6285e7ab5ce50d1c695713f1c/difPy-2.3.tar.gz (from https://pypi.org/simple/difpy/), version: 2.3 2023-03-04T00:52:25,858 Found link https://files.pythonhosted.org/packages/ad/e0/1c5e4b256c23d175de226ec36b043adb195c4c7103bec13fd1c79ab5fe39/difPy-2.4.tar.gz (from https://pypi.org/simple/difpy/), version: 2.4 2023-03-04T00:52:25,858 Found link https://files.pythonhosted.org/packages/b3/22/4015f00d6daa5cdde207b1e309c4413cf238e5ab9310b7f6bcf57f48f0d5/difPy-2.4.1.tar.gz (from https://pypi.org/simple/difpy/), version: 2.4.1 2023-03-04T00:52:25,858 Found link https://files.pythonhosted.org/packages/3f/82/81a1fb09b81875108c99d3a7b6330f0c350f64f7d1178a3874acbb33a924/difPy-2.4.2.tar.gz (from https://pypi.org/simple/difpy/), version: 2.4.2 2023-03-04T00:52:25,859 Found link https://files.pythonhosted.org/packages/28/90/f7a45c8874d1d2cdf4ce95acbd09787cd6f90903f4ed563a41a030867f1f/difPy-2.4.3.tar.gz (from https://pypi.org/simple/difpy/), version: 2.4.3 2023-03-04T00:52:25,859 Found link https://files.pythonhosted.org/packages/5a/2b/b33c48b4bc5a90fce4fd997c18707feb77d45307902e3fc0bc0e424ab587/difPy-2.4.4.tar.gz (from https://pypi.org/simple/difpy/), version: 2.4.4 2023-03-04T00:52:25,859 Found link https://files.pythonhosted.org/packages/35/8d/a38010f7628126da6f39a53907925ae54fd21e49517b9048dbff7682d082/difPy-2.4.5.tar.gz (from https://pypi.org/simple/difpy/), version: 2.4.5 2023-03-04T00:52:25,860 Found link https://files.pythonhosted.org/packages/42/26/946ca1b2200ca6db18430243946b1e02f531ec1ee37582afbd78430ae6ef/difPy-3.0.0.tar.gz (from https://pypi.org/simple/difpy/), version: 3.0.0 2023-03-04T00:52:25,860 Found link https://files.pythonhosted.org/packages/42/03/f84bc687bca6f79024fb8ff61ad6143ef15060d1a7bc75d781aa5e5ffaa6/difPy-3.0.1.tar.gz (from https://pypi.org/simple/difpy/), version: 3.0.1 2023-03-04T00:52:25,860 Found link https://files.pythonhosted.org/packages/bb/31/9100ede4efde89841fd3f344763917e96e22a43ad2236fdf561c744e17b0/difPy-3.0.2.tar.gz (from https://pypi.org/simple/difpy/), version: 3.0.2 2023-03-04T00:52:25,860 Found link https://files.pythonhosted.org/packages/74/41/01e2d49e17098d6d9097eadd6cc0504140ffc38bfa281dd4af9a28c7d5dd/difPy-3.0.3.tar.gz (from https://pypi.org/simple/difpy/), version: 3.0.3 2023-03-04T00:52:25,861 Found link https://files.pythonhosted.org/packages/20/5f/efceb5f789de92d0da5e8adb27f2464316c5c41f676dea4fda5179881b62/difPy-3.0.4.tar.gz (from https://pypi.org/simple/difpy/), version: 3.0.4 2023-03-04T00:52:25,861 Found link https://files.pythonhosted.org/packages/00/3e/126c99700195d8fd57a00a9c7c2723a2ee2623c2c2276cf704556cfa9581/difPy-3.0.5.tar.gz (from https://pypi.org/simple/difpy/), version: 3.0.5 2023-03-04T00:52:25,861 Fetching project page and analyzing links: https://www.piwheels.org/simple/difpy/ 2023-03-04T00:52:25,862 Getting page https://www.piwheels.org/simple/difpy/ 2023-03-04T00:52:25,862 Found index url https://www.piwheels.org/simple 2023-03-04T00:52:26,055 Fetched page https://www.piwheels.org/simple/difpy/ as text/html 2023-03-04T00:52:26,063 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-3.0.4-py3-none-any.whl#sha256=c37c34523382d4d0dc301837e8c311ab25e7f5839ea2439f0ae9162e6106006e (from https://www.piwheels.org/simple/difpy/) 2023-03-04T00:52:26,063 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-3.0.3-py3-none-any.whl#sha256=86b84e109f34812bbf6bcd0affd073ef7ee2ac296265b577cf0d52c0d2a3106d (from https://www.piwheels.org/simple/difpy/) 2023-03-04T00:52:26,064 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-3.0.2-py3-none-any.whl#sha256=dd8ad43bb20c6b537cb919c75d3398e45c3e34b4d6d63e778c74c6a73b3c0532 (from https://www.piwheels.org/simple/difpy/) 2023-03-04T00:52:26,064 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-3.0.1-py3-none-any.whl#sha256=59b2cbe0e35662f4e812627887c87bbe02d6d02b2dc9a26c32dbf0f173ae368a (from https://www.piwheels.org/simple/difpy/) 2023-03-04T00:52:26,064 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-3.0.0-py3-none-any.whl#sha256=19f8eddc5081486f8e266bb3e1b7cf6343bd06d7f0ead8defd2c964a6d63a572 (from https://www.piwheels.org/simple/difpy/) 2023-03-04T00:52:26,065 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-2.4.5-py3-none-any.whl#sha256=7beebd2677487d648041639ac027c8640276a5f839ab9a0b12cd046765397c39 (from https://www.piwheels.org/simple/difpy/) 2023-03-04T00:52:26,065 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-2.4.4-py3-none-any.whl#sha256=cd66a6d15e358190f49177168d617543677493ed16b078c092543e479e4d9150 (from https://www.piwheels.org/simple/difpy/) 2023-03-04T00:52:26,065 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-2.4.3-py3-none-any.whl#sha256=126d888b9e2f408f7f1916c35338dbfde23dfb74c8aff324966e6e313de01339 (from https://www.piwheels.org/simple/difpy/) 2023-03-04T00:52:26,066 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-2.4.2-py3-none-any.whl#sha256=5ff7356350459c2ca00ebe25d22b0ff53a377e806db030813289df74fb707224 (from https://www.piwheels.org/simple/difpy/) 2023-03-04T00:52:26,066 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-2.4.1-py3-none-any.whl#sha256=f7d2fbd379e11231aaff9d376f27bce3ac722ae866ebd18179661c1b63df8f61 (from https://www.piwheels.org/simple/difpy/) 2023-03-04T00:52:26,066 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-2.4-py3-none-any.whl#sha256=b59f64587207940482bb854e09edcc11d2a0617c48c0daf381bff27278eec63d (from https://www.piwheels.org/simple/difpy/) 2023-03-04T00:52:26,066 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-2.3-py3-none-any.whl#sha256=136ed69ecf22c5c77ad955fb058a6b14798367281fe7fdfc0f740ba9a44d4965 (from https://www.piwheels.org/simple/difpy/) 2023-03-04T00:52:26,067 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-2.2-py3-none-any.whl#sha256=8ce8279bd7e806bb30343e7fa1c545351f172492f4dd2656a1b1f9c0492b1c16 (from https://www.piwheels.org/simple/difpy/) 2023-03-04T00:52:26,067 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-2.0-py3-none-any.whl#sha256=c1798d9d73e915e0fd0fbc765bccde1ad60d77aa10d5983158da3d2b29db6eca (from https://www.piwheels.org/simple/difpy/) 2023-03-04T00:52:26,067 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-1.2-py3-none-any.whl#sha256=2f41cbd839d19322ab06549739554ce49a137c7dc5bfc2f848a99d50e45f8829 (from https://www.piwheels.org/simple/difpy/) 2023-03-04T00:52:26,068 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-1.0.1-py3-none-any.whl#sha256=065e42e39ece614ffd34ca63cbb076a77f36e0e925148abc727a54eaeb30be26 (from https://www.piwheels.org/simple/difpy/) 2023-03-04T00:52:26,068 Skipping link: not a file: https://www.piwheels.org/simple/difpy/ 2023-03-04T00:52:26,068 Skipping link: not a file: https://pypi.org/simple/difpy/ 2023-03-04T00:52:26,098 Given no hashes to check 1 links for project 'difpy': discarding no candidates 2023-03-04T00:52:26,123 Collecting difpy==3.0.5 2023-03-04T00:52:26,126 Created temporary directory: /tmp/pip-unpack-28np9_zz 2023-03-04T00:52:26,175 Downloading difPy-3.0.5.tar.gz (12 kB) 2023-03-04T00:52:26,217 Added difpy==3.0.5 from https://files.pythonhosted.org/packages/00/3e/126c99700195d8fd57a00a9c7c2723a2ee2623c2c2276cf704556cfa9581/difPy-3.0.5.tar.gz to build tracker '/tmp/pip-build-tracker-we7abz39' 2023-03-04T00:52:26,224 Created temporary directory: /tmp/pip-build-env-5fdcln_f 2023-03-04T00:52:26,234 Installing build dependencies: started 2023-03-04T00:52:26,235 Running command pip subprocess to install build dependencies 2023-03-04T00:52:27,436 Using pip 23.0.1 from /usr/local/lib/python3.9/dist-packages/pip (python 3.9) 2023-03-04T00:52:28,017 DEPRECATION: --no-binary currently disables reading from the cache of locally built wheels. In the future --no-binary will not influence the wheel cache. pip 23.1 will enforce this behaviour change. A possible replacement is to use the --no-cache-dir option. You can use the flag --use-feature=no-binary-enable-wheel-cache to test the upcoming behaviour. Discussion can be found at https://github.com/pypa/pip/issues/11453 2023-03-04T00:52:28,043 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-03-04T00:52:29,549 Collecting numpy>=1.24.2 2023-03-04T00:52:30,863 Using cached https://www.piwheels.org/simple/numpy/numpy-1.24.2-cp39-cp39-linux_armv7l.whl (12.3 MB) 2023-03-04T00:52:32,206 Collecting matplotlib>=3.7.0 2023-03-04T00:52:33,236 Using cached https://www.piwheels.org/simple/matplotlib/matplotlib-3.7.0-cp39-cp39-linux_armv7l.whl (10.6 MB) 2023-03-04T00:52:34,857 Collecting Pillow>=9.4.0 2023-03-04T00:52:35,037 Using cached https://www.piwheels.org/simple/pillow/Pillow-9.4.0-cp39-cp39-linux_armv7l.whl (1.1 MB) 2023-03-04T00:52:36,557 Collecting setuptools>=40.8.0 2023-03-04T00:52:36,791 Using cached https://www.piwheels.org/simple/setuptools/setuptools-67.4.0-py3-none-any.whl (1.1 MB) 2023-03-04T00:52:37,162 Collecting python-dateutil>=2.7 2023-03-04T00:52:37,270 Using cached https://www.piwheels.org/simple/python-dateutil/python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB) 2023-03-04T00:52:37,583 Collecting importlib-resources>=3.2.0 2023-03-04T00:52:37,617 Using cached https://www.piwheels.org/simple/importlib-resources/importlib_resources-5.12.0-py3-none-any.whl (36 kB) 2023-03-04T00:52:37,945 Collecting kiwisolver>=1.0.1 2023-03-04T00:52:38,107 Using cached https://www.piwheels.org/simple/kiwisolver/kiwisolver-1.4.4-cp39-cp39-linux_armv7l.whl (1.1 MB) 2023-03-04T00:52:38,426 Collecting pyparsing>=2.3.1 2023-03-04T00:52:38,457 Using cached https://www.piwheels.org/simple/pyparsing/pyparsing-3.0.9-py3-none-any.whl (98 kB) 2023-03-04T00:52:38,654 Collecting packaging>=20.0 2023-03-04T00:52:38,672 Using cached https://www.piwheels.org/simple/packaging/packaging-23.0-py3-none-any.whl (42 kB) 2023-03-04T00:52:39,087 Collecting contourpy>=1.0.1 2023-03-04T00:52:39,124 Using cached https://www.piwheels.org/simple/contourpy/contourpy-1.0.7-cp39-cp39-linux_armv7l.whl (224 kB) 2023-03-04T00:52:39,459 Collecting cycler>=0.10 2023-03-04T00:52:39,477 Using cached https://www.piwheels.org/simple/cycler/cycler-0.11.0-py3-none-any.whl (6.4 kB) 2023-03-04T00:52:40,134 Collecting fonttools>=4.22.0 2023-03-04T00:52:40,388 Using cached https://www.piwheels.org/simple/fonttools/fonttools-4.38.0-cp39-cp39-linux_armv7l.whl (2.4 MB) 2023-03-04T00:52:41,019 Collecting zipp>=3.1.0 2023-03-04T00:52:41,035 Using cached https://www.piwheels.org/simple/zipp/zipp-3.15.0-py3-none-any.whl (6.8 kB) 2023-03-04T00:52:41,186 Collecting six>=1.5 2023-03-04T00:52:41,202 Using cached https://www.piwheels.org/simple/six/six-1.16.0-py2.py3-none-any.whl (11 kB) 2023-03-04T00:52:43,524 Installing collected packages: zipp, six, setuptools, pyparsing, Pillow, packaging, numpy, kiwisolver, fonttools, cycler, python-dateutil, importlib-resources, contourpy, matplotlib 2023-03-04T00:52:56,027 Creating /tmp/pip-build-env-5fdcln_f/overlay/bin 2023-03-04T00:52:56,029 changing mode of /tmp/pip-build-env-5fdcln_f/overlay/bin/f2py to 755 2023-03-04T00:52:56,032 changing mode of /tmp/pip-build-env-5fdcln_f/overlay/bin/f2py3 to 755 2023-03-04T00:52:56,034 changing mode of /tmp/pip-build-env-5fdcln_f/overlay/bin/f2py3.9 to 755 2023-03-04T00:52:59,497 changing mode of /tmp/pip-build-env-5fdcln_f/overlay/bin/fonttools to 755 2023-03-04T00:52:59,500 changing mode of /tmp/pip-build-env-5fdcln_f/overlay/bin/pyftmerge to 755 2023-03-04T00:52:59,502 changing mode of /tmp/pip-build-env-5fdcln_f/overlay/bin/pyftsubset to 755 2023-03-04T00:52:59,504 changing mode of /tmp/pip-build-env-5fdcln_f/overlay/bin/ttx to 755 2023-03-04T00:53:06,135 Successfully installed Pillow-9.4.0 contourpy-1.0.7 cycler-0.11.0 fonttools-4.38.0 importlib-resources-5.12.0 kiwisolver-1.4.4 matplotlib-3.7.0 numpy-1.24.2 packaging-23.0 pyparsing-3.0.9 python-dateutil-2.8.2 setuptools-67.4.0 six-1.16.0 zipp-3.15.0 2023-03-04T00:53:06,871 Installing build dependencies: finished with status 'done' 2023-03-04T00:53:06,889 Getting requirements to build wheel: started 2023-03-04T00:53:06,890 Running command Getting requirements to build wheel 2023-03-04T00:53:07,492 /tmp/pip-build-env-5fdcln_f/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. 2023-03-04T00:53:07,492 !! 2023-03-04T00:53:07,493 ########################################################################## 2023-03-04T00:53:07,493 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-04T00:53:07,494 ########################################################################## 2023-03-04T00:53:07,494 The following seems to be defined outside of `pyproject.toml`: 2023-03-04T00:53:07,494 `readme = '# Duplicate Image Finder (difPy)\n\n![PyPIv](https://img.shields.io/pypi/v/difPy)\n![PyPI status](https://img.shields.io/pypi/status/difPy)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/difPy)\n[![Downloads](https://static.pepy.tech/badge/difpy)](https://pepy.tech/project/difpy)\n![PyPI - License](https://img.shields.io/pypi/l/difPy)\n\n\n**Tired of going through all images in a folder and comparing them manually to check if they are duplicates?**\n\n:white_check_mark: The Duplicate Image Finder (difPy) Python package **automates** this task for you!\n\n```python\npip install difPy\n```\n> :point_right: :new: **[difPy v3.0](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.1)** has been released! Count on signifcant **performance increases**, **new features** and **bug fixes**. Check out the [release notes](https://github.com/elisemercury/Duplicate-Image-Finder/releases/) for a detailed listing. \n\n> :open_hands: Our motto? We :heart: Open Source! **Contributions and new ideas for difPy are always welcome** - check our [Contributor Guidelines](https://github.com/elisemercury/Duplicate-Image-Finder/wiki/Contributing-to-difPy) for more information.\n\nRead more on how the algorithm of difPy works in my Medium article [Finding Duplicate Images with Python](https://towardsdatascience.com/finding-duplicate-images-with-python-71c04ec8051).\n\nCheck out the [difPy package on PyPI.org](https://pypi.org/project/difPy/)\n\n-------\n\n## Description\nDifPy searches for images in **one or more different folders**, compares the images it found and checks whether these are duplicates. It then outputs the **image files classified as duplicates** as well as the **images having the lowest resolutions**, so you know which of the duplicate images are safe to be deleted. You can then either delete them manually, or let difPy delete them for you.\n\n

\n \n

\n\nDifPy does not compare images based on their hashes. It compares them based on their tensors i. e. the image content - this allows difPy to **not only search for duplicate images, but also for similar images**.\n\n## Basic Usage\nUse the following function to make difPy search for duplicates within one specific folder and its subfolders:\n\n```python\nfrom difPy import dif\nsearch = dif("C:/Path/to/Folder/")\n``` \n:new: **[difPy v3.0](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.1)** now supports **multi-folder search**! To search for duplicates within mutliple folders and their subfolders:\n\n```python\nfrom difPy import dif\nsearch = dif(["C:/Path/to/Folder_A/", "C:/Path/to/Folder_B/", "C:/Path/to/Folder_C/", ... ])\n``` \nFolder paths must be specified as standalone Python strings, or within a Python list.\n\n:notebook: For a **detailed usage guide**, please view the official **[difPy Usage Documentation](https://github.com/elisemercury/Duplicate-Image-Finder/wiki/difPy-Usage-Documentation)**.\n\n## Output\nDifPy returns various types of output that you may use depending on your use case: \n\nA **JSON formatted collection** of duplicates/similar images (i. e. **match groups**) that were found, where the keys are a **randomly generated unique id** for each image file:\n\n```python\nsearch.result\n\n> Output:\n{20220819171549 : {"location" : "C:/Path/to/Image/image1.jpg",\n "matches" : {30270813251529 : "location": "C:/Path/to/Image/matched_image1.jpg",\n "mse": 0.0},\n {72214282557852 : "location": "C:/Path/to/Image/matched_image2.jpg",\n "mse": 0.0},\n ... }\n ...\n}\n``` \n:new: **[difPy v3.0](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.1)** now outputs the **MSE** value for each matched image!\n\nA **list** of duplicates/similar images that have the **lowest quality** among match groups: \n\n```python\nsearch.lower_quality\n\n> Output:\n["C:/Path/to/Image/duplicate_image1.jpg", \n "C:/Path/to/Image/duplicate_image2.jpg", ...]\n``` \nA **JSON formatted collection** with statistics on the completed difPy process:\n\n```python\nsearch.stats\n\n> Output:\n{"directory" : ("C:/Path/to/Folder_A/", "C:/Path/to/Folder_B/", ... ),\n "duration" : {"start_date": "2023-02-15",\n "start_time" : "18:44:19",\n "end_date" : "2023-02-15",\n "end_time" : "18:44:38",\n "seconds_elapsed" : 18.6113},\n "fast_search": True,\n "recursive" : True,\n "match_mse" : 200,\n "files_searched" : 1032,\n "matches_found" : 852,\n "invalid_files": {"count": 4}}\n``` \n:new: **[difPy v3.0](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.1)** now outputs the count of **invalid files** in the target directory that could not be processed as images, as well as information on whether difPy\'s **Fast Search Algorithm (FSA)** was used.\n\n## Additional Parameters\nDifPy supports the following parameters:\n\n```python\ndif(*directory, fast_search=True, recursive=True, similarity="normal", px_size=50, \n show_progress=True, show_output=False, delete=False, silent_del=False, logs=False)\n```\n:new: **[difPy v3.0](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.1)** now supports the use of its new **Fast Search Algorithm (FSA)**, capable of providing significant performance increases.\n\n:notebook: For a **detailed usage guide**, please view the official **[difPy Usage Documentation](https://github.com/elisemercury/Duplicate-Image-Finder/wiki/difPy-Usage-Documentation)**.\n\n## CLI Usage\nYou can make use of difPy through a CLI interface by using the following commands:\n\n```python\npython dif.py -D "C:/Path/to/Folder/"\n\npython dif.py -D"C:/Path/to/Folder_A/" "C:/Path/to/Folder_B/" "C:/Path/to/Folder_C/"\n```\nIt supports the following arguments:\n\n```python\ndif.py [-h] -D DIRECTORY [-Z [OUTPUT_DIRECTORY]] [-f [FAST_SEARCH]]\n [-r [{True,False}]] [-s [{low,normal,high,int}]] [-px [PX_SIZE]] \n [-p [{True,False}]] [-o [{True,False}]]\n [-d [{True,False}]] [-sd [{True,False}]]\n [-l [{True,False}]]\n```\n\n| | Parameter | | Parameter |\n| :---: | ------ | :---: | ------ | \n| `-D` | directory | `-px` | px_size | \n| `-Z` | output_directory | `-p` | show_progress |\n| `-f`| fast_search | `-o` | show_output |\n| `-r`| recursive | `-d` | delete |\n| `-s` | similarity | `-sd` | silent_del |\n\n\nWhen running from the CLI, the output of difPy is written to files and saved in the working directory by default. To change the default output directory, specify the `-Z / -output_directory` parameter. The "xxx" in the output filenames is a unique timestamp:\n\n```python\ndifPy_results_xxx.json\ndifPy_lower_quality_xxx.csv\ndifPy_stats_xxx.json\n```\n\n:notebook: For a **detailed usage guide**, please view the official **[difPy Usage Documentation](https://github.com/elisemercury/Duplicate-Image-Finder/wiki/difPy-Usage-Documentation)**.\n\n## Related Projects\n\nThe below sections feature third-party work that has been **built with** or **inspired by** difPy. We would like to express a big thank you for any contributions made to difPy!\n\n-------\n\n### I. DifPy as Webapp\n\n[A Streamlit based Webapp to find duplicate images from single/multiple directories](https://github.com/prateekralhan/Streamlit-based-Duplicate-Images-Finder) by @prateekralhan - :dna: **built with difPy**\n\n

\n \n

\n\n### II. photosdup - Mac Photos Tool to Find Duplicates\n\n[Tool to scan a Mac Photos library for duplicates, thumbnails etc.](https://github.com/peter-sk/photosdup) by @peter-sk - :sparkles: **inspired by difPy**\n\n-------\n\n

\n:thought_balloon: Also want to be featured in the "Related Projects" section? Check our Contributor Guidelines to find out how!\n

\n\n-------\n\n

\nWe :heart: Open Source\n

\n'` 2023-03-04T00:53:07,495 According to the spec (see the link below), however, setuptools CANNOT 2023-03-04T00:53:07,495 consider this value unless 'readme' is listed as `dynamic`. 2023-03-04T00:53:07,496 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-04T00:53:07,496 For the time being, `setuptools` will still consider the given value (as a 2023-03-04T00:53:07,496 **transitional** measure), but please note that future releases of setuptools will 2023-03-04T00:53:07,496 follow strictly the standard. 2023-03-04T00:53:07,496 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2023-03-04T00:53:07,497 remove the `[project]` table from your file and rely entirely on other means of 2023-03-04T00:53:07,497 configuration. 2023-03-04T00:53:07,497 !! 2023-03-04T00:53:07,497 warnings.warn(msg, _WouldIgnoreField) 2023-03-04T00:53:07,497 /tmp/pip-build-env-5fdcln_f/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. 2023-03-04T00:53:07,498 !! 2023-03-04T00:53:07,498 ########################################################################## 2023-03-04T00:53:07,498 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-04T00:53:07,498 ########################################################################## 2023-03-04T00:53:07,498 The following seems to be defined outside of `pyproject.toml`: 2023-03-04T00:53:07,499 `license = 'MIT'` 2023-03-04T00:53:07,499 According to the spec (see the link below), however, setuptools CANNOT 2023-03-04T00:53:07,499 consider this value unless 'license' is listed as `dynamic`. 2023-03-04T00:53:07,499 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-04T00:53:07,500 For the time being, `setuptools` will still consider the given value (as a 2023-03-04T00:53:07,500 **transitional** measure), but please note that future releases of setuptools will 2023-03-04T00:53:07,500 follow strictly the standard. 2023-03-04T00:53:07,500 To prevent this warning, you can list 'license' under `dynamic` or alternatively 2023-03-04T00:53:07,500 remove the `[project]` table from your file and rely entirely on other means of 2023-03-04T00:53:07,500 configuration. 2023-03-04T00:53:07,501 !! 2023-03-04T00:53:07,501 warnings.warn(msg, _WouldIgnoreField) 2023-03-04T00:53:07,501 /tmp/pip-build-env-5fdcln_f/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'keywords' defined outside of `pyproject.toml` would be ignored. 2023-03-04T00:53:07,501 !! 2023-03-04T00:53:07,502 ########################################################################## 2023-03-04T00:53:07,502 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-04T00:53:07,502 ########################################################################## 2023-03-04T00:53:07,502 The following seems to be defined outside of `pyproject.toml`: 2023-03-04T00:53:07,502 `keywords = ['duplicate', 'image', 'finder', 'similarity', 'pictures']` 2023-03-04T00:53:07,502 According to the spec (see the link below), however, setuptools CANNOT 2023-03-04T00:53:07,503 consider this value unless 'keywords' is listed as `dynamic`. 2023-03-04T00:53:07,503 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-04T00:53:07,503 For the time being, `setuptools` will still consider the given value (as a 2023-03-04T00:53:07,503 **transitional** measure), but please note that future releases of setuptools will 2023-03-04T00:53:07,503 follow strictly the standard. 2023-03-04T00:53:07,504 To prevent this warning, you can list 'keywords' under `dynamic` or alternatively 2023-03-04T00:53:07,504 remove the `[project]` table from your file and rely entirely on other means of 2023-03-04T00:53:07,504 configuration. 2023-03-04T00:53:07,504 !! 2023-03-04T00:53:07,504 warnings.warn(msg, _WouldIgnoreField) 2023-03-04T00:53:07,505 /tmp/pip-build-env-5fdcln_f/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'classifiers' defined outside of `pyproject.toml` would be ignored. 2023-03-04T00:53:07,505 !! 2023-03-04T00:53:07,505 ########################################################################## 2023-03-04T00:53:07,505 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-04T00:53:07,506 ########################################################################## 2023-03-04T00:53:07,506 The following seems to be defined outside of `pyproject.toml`: 2023-03-04T00:53:07,506 `classifiers = ['Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Topic :: Software Development :: Build Tools', 'License :: OSI Approved :: MIT License', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11']` 2023-03-04T00:53:07,506 According to the spec (see the link below), however, setuptools CANNOT 2023-03-04T00:53:07,507 consider this value unless 'classifiers' is listed as `dynamic`. 2023-03-04T00:53:07,507 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-04T00:53:07,507 For the time being, `setuptools` will still consider the given value (as a 2023-03-04T00:53:07,507 **transitional** measure), but please note that future releases of setuptools will 2023-03-04T00:53:07,507 follow strictly the standard. 2023-03-04T00:53:07,508 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2023-03-04T00:53:07,508 remove the `[project]` table from your file and rely entirely on other means of 2023-03-04T00:53:07,508 configuration. 2023-03-04T00:53:07,508 !! 2023-03-04T00:53:07,508 warnings.warn(msg, _WouldIgnoreField) 2023-03-04T00:53:07,509 /tmp/pip-build-env-5fdcln_f/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. 2023-03-04T00:53:07,509 !! 2023-03-04T00:53:07,509 ########################################################################## 2023-03-04T00:53:07,509 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-04T00:53:07,509 ########################################################################## 2023-03-04T00:53:07,510 The following seems to be defined outside of `pyproject.toml`: 2023-03-04T00:53:07,510 `dependencies = ['matplotlib', 'numpy', 'Pillow']` 2023-03-04T00:53:07,510 According to the spec (see the link below), however, setuptools CANNOT 2023-03-04T00:53:07,510 consider this value unless 'dependencies' is listed as `dynamic`. 2023-03-04T00:53:07,511 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-04T00:53:07,511 For the time being, `setuptools` will still consider the given value (as a 2023-03-04T00:53:07,511 **transitional** measure), but please note that future releases of setuptools will 2023-03-04T00:53:07,511 follow strictly the standard. 2023-03-04T00:53:07,511 To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively 2023-03-04T00:53:07,511 remove the `[project]` table from your file and rely entirely on other means of 2023-03-04T00:53:07,512 configuration. 2023-03-04T00:53:07,512 !! 2023-03-04T00:53:07,512 warnings.warn(msg, _WouldIgnoreField) 2023-03-04T00:53:07,845 running egg_info 2023-03-04T00:53:07,852 writing difPy.egg-info/PKG-INFO 2023-03-04T00:53:07,855 writing dependency_links to difPy.egg-info/dependency_links.txt 2023-03-04T00:53:07,857 writing requirements to difPy.egg-info/requires.txt 2023-03-04T00:53:07,859 writing top-level names to difPy.egg-info/top_level.txt 2023-03-04T00:53:07,883 reading manifest file 'difPy.egg-info/SOURCES.txt' 2023-03-04T00:53:07,885 adding license file 'LICENSE.txt' 2023-03-04T00:53:07,887 writing manifest file 'difPy.egg-info/SOURCES.txt' 2023-03-04T00:53:07,983 Getting requirements to build wheel: finished with status 'done' 2023-03-04T00:53:08,011 Installing backend dependencies: started 2023-03-04T00:53:08,012 Running command pip subprocess to install backend dependencies 2023-03-04T00:53:09,245 Using pip 23.0.1 from /usr/local/lib/python3.9/dist-packages/pip (python 3.9) 2023-03-04T00:53:09,819 DEPRECATION: --no-binary currently disables reading from the cache of locally built wheels. In the future --no-binary will not influence the wheel cache. pip 23.1 will enforce this behaviour change. A possible replacement is to use the --no-cache-dir option. You can use the flag --use-feature=no-binary-enable-wheel-cache to test the upcoming behaviour. Discussion can be found at https://github.com/pypa/pip/issues/11453 2023-03-04T00:53:09,847 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-03-04T00:53:10,312 Collecting wheel 2023-03-04T00:53:10,331 Using cached https://www.piwheels.org/simple/wheel/wheel-0.38.4-py3-none-any.whl (36 kB) 2023-03-04T00:53:11,783 Installing collected packages: wheel 2023-03-04T00:53:11,937 Creating /tmp/pip-build-env-5fdcln_f/normal/bin 2023-03-04T00:53:11,940 changing mode of /tmp/pip-build-env-5fdcln_f/normal/bin/wheel to 755 2023-03-04T00:53:11,954 Successfully installed wheel-0.38.4 2023-03-04T00:53:12,384 Installing backend dependencies: finished with status 'done' 2023-03-04T00:53:12,386 Created temporary directory: /tmp/pip-modern-metadata-sq14qp8h 2023-03-04T00:53:12,390 Preparing metadata (pyproject.toml): started 2023-03-04T00:53:12,391 Running command Preparing metadata (pyproject.toml) 2023-03-04T00:53:12,948 /tmp/pip-build-env-5fdcln_f/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. 2023-03-04T00:53:12,949 !! 2023-03-04T00:53:12,950 ########################################################################## 2023-03-04T00:53:12,950 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-04T00:53:12,950 ########################################################################## 2023-03-04T00:53:12,950 The following seems to be defined outside of `pyproject.toml`: 2023-03-04T00:53:12,951 `readme = '# Duplicate Image Finder (difPy)\n\n![PyPIv](https://img.shields.io/pypi/v/difPy)\n![PyPI status](https://img.shields.io/pypi/status/difPy)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/difPy)\n[![Downloads](https://static.pepy.tech/badge/difpy)](https://pepy.tech/project/difpy)\n![PyPI - License](https://img.shields.io/pypi/l/difPy)\n\n\n**Tired of going through all images in a folder and comparing them manually to check if they are duplicates?**\n\n:white_check_mark: The Duplicate Image Finder (difPy) Python package **automates** this task for you!\n\n```python\npip install difPy\n```\n> :point_right: :new: **[difPy v3.0](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.1)** has been released! Count on signifcant **performance increases**, **new features** and **bug fixes**. Check out the [release notes](https://github.com/elisemercury/Duplicate-Image-Finder/releases/) for a detailed listing. \n\n> :open_hands: Our motto? We :heart: Open Source! **Contributions and new ideas for difPy are always welcome** - check our [Contributor Guidelines](https://github.com/elisemercury/Duplicate-Image-Finder/wiki/Contributing-to-difPy) for more information.\n\nRead more on how the algorithm of difPy works in my Medium article [Finding Duplicate Images with Python](https://towardsdatascience.com/finding-duplicate-images-with-python-71c04ec8051).\n\nCheck out the [difPy package on PyPI.org](https://pypi.org/project/difPy/)\n\n-------\n\n## Description\nDifPy searches for images in **one or more different folders**, compares the images it found and checks whether these are duplicates. It then outputs the **image files classified as duplicates** as well as the **images having the lowest resolutions**, so you know which of the duplicate images are safe to be deleted. You can then either delete them manually, or let difPy delete them for you.\n\n

\n \n

\n\nDifPy does not compare images based on their hashes. It compares them based on their tensors i. e. the image content - this allows difPy to **not only search for duplicate images, but also for similar images**.\n\n## Basic Usage\nUse the following function to make difPy search for duplicates within one specific folder and its subfolders:\n\n```python\nfrom difPy import dif\nsearch = dif("C:/Path/to/Folder/")\n``` \n:new: **[difPy v3.0](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.1)** now supports **multi-folder search**! To search for duplicates within mutliple folders and their subfolders:\n\n```python\nfrom difPy import dif\nsearch = dif(["C:/Path/to/Folder_A/", "C:/Path/to/Folder_B/", "C:/Path/to/Folder_C/", ... ])\n``` \nFolder paths must be specified as standalone Python strings, or within a Python list.\n\n:notebook: For a **detailed usage guide**, please view the official **[difPy Usage Documentation](https://github.com/elisemercury/Duplicate-Image-Finder/wiki/difPy-Usage-Documentation)**.\n\n## Output\nDifPy returns various types of output that you may use depending on your use case: \n\nA **JSON formatted collection** of duplicates/similar images (i. e. **match groups**) that were found, where the keys are a **randomly generated unique id** for each image file:\n\n```python\nsearch.result\n\n> Output:\n{20220819171549 : {"location" : "C:/Path/to/Image/image1.jpg",\n "matches" : {30270813251529 : "location": "C:/Path/to/Image/matched_image1.jpg",\n "mse": 0.0},\n {72214282557852 : "location": "C:/Path/to/Image/matched_image2.jpg",\n "mse": 0.0},\n ... }\n ...\n}\n``` \n:new: **[difPy v3.0](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.1)** now outputs the **MSE** value for each matched image!\n\nA **list** of duplicates/similar images that have the **lowest quality** among match groups: \n\n```python\nsearch.lower_quality\n\n> Output:\n["C:/Path/to/Image/duplicate_image1.jpg", \n "C:/Path/to/Image/duplicate_image2.jpg", ...]\n``` \nA **JSON formatted collection** with statistics on the completed difPy process:\n\n```python\nsearch.stats\n\n> Output:\n{"directory" : ("C:/Path/to/Folder_A/", "C:/Path/to/Folder_B/", ... ),\n "duration" : {"start_date": "2023-02-15",\n "start_time" : "18:44:19",\n "end_date" : "2023-02-15",\n "end_time" : "18:44:38",\n "seconds_elapsed" : 18.6113},\n "fast_search": True,\n "recursive" : True,\n "match_mse" : 200,\n "files_searched" : 1032,\n "matches_found" : 852,\n "invalid_files": {"count": 4}}\n``` \n:new: **[difPy v3.0](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.1)** now outputs the count of **invalid files** in the target directory that could not be processed as images, as well as information on whether difPy\'s **Fast Search Algorithm (FSA)** was used.\n\n## Additional Parameters\nDifPy supports the following parameters:\n\n```python\ndif(*directory, fast_search=True, recursive=True, similarity="normal", px_size=50, \n show_progress=True, show_output=False, delete=False, silent_del=False, logs=False)\n```\n:new: **[difPy v3.0](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.1)** now supports the use of its new **Fast Search Algorithm (FSA)**, capable of providing significant performance increases.\n\n:notebook: For a **detailed usage guide**, please view the official **[difPy Usage Documentation](https://github.com/elisemercury/Duplicate-Image-Finder/wiki/difPy-Usage-Documentation)**.\n\n## CLI Usage\nYou can make use of difPy through a CLI interface by using the following commands:\n\n```python\npython dif.py -D "C:/Path/to/Folder/"\n\npython dif.py -D"C:/Path/to/Folder_A/" "C:/Path/to/Folder_B/" "C:/Path/to/Folder_C/"\n```\nIt supports the following arguments:\n\n```python\ndif.py [-h] -D DIRECTORY [-Z [OUTPUT_DIRECTORY]] [-f [FAST_SEARCH]]\n [-r [{True,False}]] [-s [{low,normal,high,int}]] [-px [PX_SIZE]] \n [-p [{True,False}]] [-o [{True,False}]]\n [-d [{True,False}]] [-sd [{True,False}]]\n [-l [{True,False}]]\n```\n\n| | Parameter | | Parameter |\n| :---: | ------ | :---: | ------ | \n| `-D` | directory | `-px` | px_size | \n| `-Z` | output_directory | `-p` | show_progress |\n| `-f`| fast_search | `-o` | show_output |\n| `-r`| recursive | `-d` | delete |\n| `-s` | similarity | `-sd` | silent_del |\n\n\nWhen running from the CLI, the output of difPy is written to files and saved in the working directory by default. To change the default output directory, specify the `-Z / -output_directory` parameter. The "xxx" in the output filenames is a unique timestamp:\n\n```python\ndifPy_results_xxx.json\ndifPy_lower_quality_xxx.csv\ndifPy_stats_xxx.json\n```\n\n:notebook: For a **detailed usage guide**, please view the official **[difPy Usage Documentation](https://github.com/elisemercury/Duplicate-Image-Finder/wiki/difPy-Usage-Documentation)**.\n\n## Related Projects\n\nThe below sections feature third-party work that has been **built with** or **inspired by** difPy. We would like to express a big thank you for any contributions made to difPy!\n\n-------\n\n### I. DifPy as Webapp\n\n[A Streamlit based Webapp to find duplicate images from single/multiple directories](https://github.com/prateekralhan/Streamlit-based-Duplicate-Images-Finder) by @prateekralhan - :dna: **built with difPy**\n\n

\n \n

\n\n### II. photosdup - Mac Photos Tool to Find Duplicates\n\n[Tool to scan a Mac Photos library for duplicates, thumbnails etc.](https://github.com/peter-sk/photosdup) by @peter-sk - :sparkles: **inspired by difPy**\n\n-------\n\n

\n:thought_balloon: Also want to be featured in the "Related Projects" section? Check our Contributor Guidelines to find out how!\n

\n\n-------\n\n

\nWe :heart: Open Source\n

\n'` 2023-03-04T00:53:12,951 According to the spec (see the link below), however, setuptools CANNOT 2023-03-04T00:53:12,951 consider this value unless 'readme' is listed as `dynamic`. 2023-03-04T00:53:12,951 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-04T00:53:12,952 For the time being, `setuptools` will still consider the given value (as a 2023-03-04T00:53:12,952 **transitional** measure), but please note that future releases of setuptools will 2023-03-04T00:53:12,952 follow strictly the standard. 2023-03-04T00:53:12,952 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2023-03-04T00:53:12,952 remove the `[project]` table from your file and rely entirely on other means of 2023-03-04T00:53:12,952 configuration. 2023-03-04T00:53:12,953 !! 2023-03-04T00:53:12,953 warnings.warn(msg, _WouldIgnoreField) 2023-03-04T00:53:12,953 /tmp/pip-build-env-5fdcln_f/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. 2023-03-04T00:53:12,953 !! 2023-03-04T00:53:12,954 ########################################################################## 2023-03-04T00:53:12,954 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-04T00:53:12,954 ########################################################################## 2023-03-04T00:53:12,954 The following seems to be defined outside of `pyproject.toml`: 2023-03-04T00:53:12,954 `license = 'MIT'` 2023-03-04T00:53:12,955 According to the spec (see the link below), however, setuptools CANNOT 2023-03-04T00:53:12,955 consider this value unless 'license' is listed as `dynamic`. 2023-03-04T00:53:12,955 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-04T00:53:12,955 For the time being, `setuptools` will still consider the given value (as a 2023-03-04T00:53:12,956 **transitional** measure), but please note that future releases of setuptools will 2023-03-04T00:53:12,956 follow strictly the standard. 2023-03-04T00:53:12,956 To prevent this warning, you can list 'license' under `dynamic` or alternatively 2023-03-04T00:53:12,956 remove the `[project]` table from your file and rely entirely on other means of 2023-03-04T00:53:12,956 configuration. 2023-03-04T00:53:12,957 !! 2023-03-04T00:53:12,957 warnings.warn(msg, _WouldIgnoreField) 2023-03-04T00:53:12,957 /tmp/pip-build-env-5fdcln_f/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'keywords' defined outside of `pyproject.toml` would be ignored. 2023-03-04T00:53:12,957 !! 2023-03-04T00:53:12,957 ########################################################################## 2023-03-04T00:53:12,958 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-04T00:53:12,958 ########################################################################## 2023-03-04T00:53:12,958 The following seems to be defined outside of `pyproject.toml`: 2023-03-04T00:53:12,958 `keywords = ['duplicate', 'image', 'finder', 'similarity', 'pictures']` 2023-03-04T00:53:12,959 According to the spec (see the link below), however, setuptools CANNOT 2023-03-04T00:53:12,959 consider this value unless 'keywords' is listed as `dynamic`. 2023-03-04T00:53:12,959 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-04T00:53:12,959 For the time being, `setuptools` will still consider the given value (as a 2023-03-04T00:53:12,959 **transitional** measure), but please note that future releases of setuptools will 2023-03-04T00:53:12,959 follow strictly the standard. 2023-03-04T00:53:12,960 To prevent this warning, you can list 'keywords' under `dynamic` or alternatively 2023-03-04T00:53:12,960 remove the `[project]` table from your file and rely entirely on other means of 2023-03-04T00:53:12,960 configuration. 2023-03-04T00:53:12,960 !! 2023-03-04T00:53:12,961 warnings.warn(msg, _WouldIgnoreField) 2023-03-04T00:53:12,961 /tmp/pip-build-env-5fdcln_f/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'classifiers' defined outside of `pyproject.toml` would be ignored. 2023-03-04T00:53:12,961 !! 2023-03-04T00:53:12,961 ########################################################################## 2023-03-04T00:53:12,961 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-04T00:53:12,961 ########################################################################## 2023-03-04T00:53:12,962 The following seems to be defined outside of `pyproject.toml`: 2023-03-04T00:53:12,962 `classifiers = ['Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Topic :: Software Development :: Build Tools', 'License :: OSI Approved :: MIT License', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11']` 2023-03-04T00:53:12,962 According to the spec (see the link below), however, setuptools CANNOT 2023-03-04T00:53:12,962 consider this value unless 'classifiers' is listed as `dynamic`. 2023-03-04T00:53:12,963 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-04T00:53:12,963 For the time being, `setuptools` will still consider the given value (as a 2023-03-04T00:53:12,963 **transitional** measure), but please note that future releases of setuptools will 2023-03-04T00:53:12,963 follow strictly the standard. 2023-03-04T00:53:12,963 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2023-03-04T00:53:12,964 remove the `[project]` table from your file and rely entirely on other means of 2023-03-04T00:53:12,964 configuration. 2023-03-04T00:53:12,964 !! 2023-03-04T00:53:12,964 warnings.warn(msg, _WouldIgnoreField) 2023-03-04T00:53:12,964 /tmp/pip-build-env-5fdcln_f/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. 2023-03-04T00:53:12,965 !! 2023-03-04T00:53:12,965 ########################################################################## 2023-03-04T00:53:12,965 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-04T00:53:12,965 ########################################################################## 2023-03-04T00:53:12,965 The following seems to be defined outside of `pyproject.toml`: 2023-03-04T00:53:12,966 `dependencies = ['matplotlib', 'numpy', 'Pillow']` 2023-03-04T00:53:12,966 According to the spec (see the link below), however, setuptools CANNOT 2023-03-04T00:53:12,966 consider this value unless 'dependencies' is listed as `dynamic`. 2023-03-04T00:53:12,966 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-04T00:53:12,966 For the time being, `setuptools` will still consider the given value (as a 2023-03-04T00:53:12,967 **transitional** measure), but please note that future releases of setuptools will 2023-03-04T00:53:12,967 follow strictly the standard. 2023-03-04T00:53:12,967 To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively 2023-03-04T00:53:12,967 remove the `[project]` table from your file and rely entirely on other means of 2023-03-04T00:53:12,967 configuration. 2023-03-04T00:53:12,968 !! 2023-03-04T00:53:12,968 warnings.warn(msg, _WouldIgnoreField) 2023-03-04T00:53:13,254 running dist_info 2023-03-04T00:53:13,263 creating /tmp/pip-modern-metadata-sq14qp8h/difPy.egg-info 2023-03-04T00:53:13,270 writing /tmp/pip-modern-metadata-sq14qp8h/difPy.egg-info/PKG-INFO 2023-03-04T00:53:13,273 writing dependency_links to /tmp/pip-modern-metadata-sq14qp8h/difPy.egg-info/dependency_links.txt 2023-03-04T00:53:13,275 writing requirements to /tmp/pip-modern-metadata-sq14qp8h/difPy.egg-info/requires.txt 2023-03-04T00:53:13,276 writing top-level names to /tmp/pip-modern-metadata-sq14qp8h/difPy.egg-info/top_level.txt 2023-03-04T00:53:13,277 writing manifest file '/tmp/pip-modern-metadata-sq14qp8h/difPy.egg-info/SOURCES.txt' 2023-03-04T00:53:13,300 reading manifest file '/tmp/pip-modern-metadata-sq14qp8h/difPy.egg-info/SOURCES.txt' 2023-03-04T00:53:13,302 adding license file 'LICENSE.txt' 2023-03-04T00:53:13,304 writing manifest file '/tmp/pip-modern-metadata-sq14qp8h/difPy.egg-info/SOURCES.txt' 2023-03-04T00:53:13,305 creating '/tmp/pip-modern-metadata-sq14qp8h/difPy-3.0.5.dist-info' 2023-03-04T00:53:13,444 Preparing metadata (pyproject.toml): finished with status 'done' 2023-03-04T00:53:13,451 Source in /tmp/pip-wheel-w6rcdyhj/difpy_65ccab175a8246f5b01a3672fd218c93 has version 3.0.5, which satisfies requirement difpy==3.0.5 from https://files.pythonhosted.org/packages/00/3e/126c99700195d8fd57a00a9c7c2723a2ee2623c2c2276cf704556cfa9581/difPy-3.0.5.tar.gz 2023-03-04T00:53:13,452 Removed difpy==3.0.5 from https://files.pythonhosted.org/packages/00/3e/126c99700195d8fd57a00a9c7c2723a2ee2623c2c2276cf704556cfa9581/difPy-3.0.5.tar.gz from build tracker '/tmp/pip-build-tracker-we7abz39' 2023-03-04T00:53:13,457 Created temporary directory: /tmp/pip-unpack-t1spzrjg 2023-03-04T00:53:13,458 Building wheels for collected packages: difpy 2023-03-04T00:53:13,462 Created temporary directory: /tmp/pip-wheel-2wv877ad 2023-03-04T00:53:13,463 Destination directory: /tmp/pip-wheel-2wv877ad 2023-03-04T00:53:13,465 Building wheel for difpy (pyproject.toml): started 2023-03-04T00:53:13,466 Running command Building wheel for difpy (pyproject.toml) 2023-03-04T00:53:14,028 /tmp/pip-build-env-5fdcln_f/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. 2023-03-04T00:53:14,029 !! 2023-03-04T00:53:14,029 ########################################################################## 2023-03-04T00:53:14,029 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-04T00:53:14,030 ########################################################################## 2023-03-04T00:53:14,030 The following seems to be defined outside of `pyproject.toml`: 2023-03-04T00:53:14,030 `readme = '# Duplicate Image Finder (difPy)\n\n![PyPIv](https://img.shields.io/pypi/v/difPy)\n![PyPI status](https://img.shields.io/pypi/status/difPy)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/difPy)\n[![Downloads](https://static.pepy.tech/badge/difpy)](https://pepy.tech/project/difpy)\n![PyPI - License](https://img.shields.io/pypi/l/difPy)\n\n\n**Tired of going through all images in a folder and comparing them manually to check if they are duplicates?**\n\n:white_check_mark: The Duplicate Image Finder (difPy) Python package **automates** this task for you!\n\n```python\npip install difPy\n```\n> :point_right: :new: **[difPy v3.0](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.1)** has been released! Count on signifcant **performance increases**, **new features** and **bug fixes**. Check out the [release notes](https://github.com/elisemercury/Duplicate-Image-Finder/releases/) for a detailed listing. \n\n> :open_hands: Our motto? We :heart: Open Source! **Contributions and new ideas for difPy are always welcome** - check our [Contributor Guidelines](https://github.com/elisemercury/Duplicate-Image-Finder/wiki/Contributing-to-difPy) for more information.\n\nRead more on how the algorithm of difPy works in my Medium article [Finding Duplicate Images with Python](https://towardsdatascience.com/finding-duplicate-images-with-python-71c04ec8051).\n\nCheck out the [difPy package on PyPI.org](https://pypi.org/project/difPy/)\n\n-------\n\n## Description\nDifPy searches for images in **one or more different folders**, compares the images it found and checks whether these are duplicates. It then outputs the **image files classified as duplicates** as well as the **images having the lowest resolutions**, so you know which of the duplicate images are safe to be deleted. You can then either delete them manually, or let difPy delete them for you.\n\n

\n \n

\n\nDifPy does not compare images based on their hashes. It compares them based on their tensors i. e. the image content - this allows difPy to **not only search for duplicate images, but also for similar images**.\n\n## Basic Usage\nUse the following function to make difPy search for duplicates within one specific folder and its subfolders:\n\n```python\nfrom difPy import dif\nsearch = dif("C:/Path/to/Folder/")\n``` \n:new: **[difPy v3.0](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.1)** now supports **multi-folder search**! To search for duplicates within mutliple folders and their subfolders:\n\n```python\nfrom difPy import dif\nsearch = dif(["C:/Path/to/Folder_A/", "C:/Path/to/Folder_B/", "C:/Path/to/Folder_C/", ... ])\n``` \nFolder paths must be specified as standalone Python strings, or within a Python list.\n\n:notebook: For a **detailed usage guide**, please view the official **[difPy Usage Documentation](https://github.com/elisemercury/Duplicate-Image-Finder/wiki/difPy-Usage-Documentation)**.\n\n## Output\nDifPy returns various types of output that you may use depending on your use case: \n\nA **JSON formatted collection** of duplicates/similar images (i. e. **match groups**) that were found, where the keys are a **randomly generated unique id** for each image file:\n\n```python\nsearch.result\n\n> Output:\n{20220819171549 : {"location" : "C:/Path/to/Image/image1.jpg",\n "matches" : {30270813251529 : "location": "C:/Path/to/Image/matched_image1.jpg",\n "mse": 0.0},\n {72214282557852 : "location": "C:/Path/to/Image/matched_image2.jpg",\n "mse": 0.0},\n ... }\n ...\n}\n``` \n:new: **[difPy v3.0](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.1)** now outputs the **MSE** value for each matched image!\n\nA **list** of duplicates/similar images that have the **lowest quality** among match groups: \n\n```python\nsearch.lower_quality\n\n> Output:\n["C:/Path/to/Image/duplicate_image1.jpg", \n "C:/Path/to/Image/duplicate_image2.jpg", ...]\n``` \nA **JSON formatted collection** with statistics on the completed difPy process:\n\n```python\nsearch.stats\n\n> Output:\n{"directory" : ("C:/Path/to/Folder_A/", "C:/Path/to/Folder_B/", ... ),\n "duration" : {"start_date": "2023-02-15",\n "start_time" : "18:44:19",\n "end_date" : "2023-02-15",\n "end_time" : "18:44:38",\n "seconds_elapsed" : 18.6113},\n "fast_search": True,\n "recursive" : True,\n "match_mse" : 200,\n "files_searched" : 1032,\n "matches_found" : 852,\n "invalid_files": {"count": 4}}\n``` \n:new: **[difPy v3.0](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.1)** now outputs the count of **invalid files** in the target directory that could not be processed as images, as well as information on whether difPy\'s **Fast Search Algorithm (FSA)** was used.\n\n## Additional Parameters\nDifPy supports the following parameters:\n\n```python\ndif(*directory, fast_search=True, recursive=True, similarity="normal", px_size=50, \n show_progress=True, show_output=False, delete=False, silent_del=False, logs=False)\n```\n:new: **[difPy v3.0](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.1)** now supports the use of its new **Fast Search Algorithm (FSA)**, capable of providing significant performance increases.\n\n:notebook: For a **detailed usage guide**, please view the official **[difPy Usage Documentation](https://github.com/elisemercury/Duplicate-Image-Finder/wiki/difPy-Usage-Documentation)**.\n\n## CLI Usage\nYou can make use of difPy through a CLI interface by using the following commands:\n\n```python\npython dif.py -D "C:/Path/to/Folder/"\n\npython dif.py -D"C:/Path/to/Folder_A/" "C:/Path/to/Folder_B/" "C:/Path/to/Folder_C/"\n```\nIt supports the following arguments:\n\n```python\ndif.py [-h] -D DIRECTORY [-Z [OUTPUT_DIRECTORY]] [-f [FAST_SEARCH]]\n [-r [{True,False}]] [-s [{low,normal,high,int}]] [-px [PX_SIZE]] \n [-p [{True,False}]] [-o [{True,False}]]\n [-d [{True,False}]] [-sd [{True,False}]]\n [-l [{True,False}]]\n```\n\n| | Parameter | | Parameter |\n| :---: | ------ | :---: | ------ | \n| `-D` | directory | `-px` | px_size | \n| `-Z` | output_directory | `-p` | show_progress |\n| `-f`| fast_search | `-o` | show_output |\n| `-r`| recursive | `-d` | delete |\n| `-s` | similarity | `-sd` | silent_del |\n\n\nWhen running from the CLI, the output of difPy is written to files and saved in the working directory by default. To change the default output directory, specify the `-Z / -output_directory` parameter. The "xxx" in the output filenames is a unique timestamp:\n\n```python\ndifPy_results_xxx.json\ndifPy_lower_quality_xxx.csv\ndifPy_stats_xxx.json\n```\n\n:notebook: For a **detailed usage guide**, please view the official **[difPy Usage Documentation](https://github.com/elisemercury/Duplicate-Image-Finder/wiki/difPy-Usage-Documentation)**.\n\n## Related Projects\n\nThe below sections feature third-party work that has been **built with** or **inspired by** difPy. We would like to express a big thank you for any contributions made to difPy!\n\n-------\n\n### I. DifPy as Webapp\n\n[A Streamlit based Webapp to find duplicate images from single/multiple directories](https://github.com/prateekralhan/Streamlit-based-Duplicate-Images-Finder) by @prateekralhan - :dna: **built with difPy**\n\n

\n \n

\n\n### II. photosdup - Mac Photos Tool to Find Duplicates\n\n[Tool to scan a Mac Photos library for duplicates, thumbnails etc.](https://github.com/peter-sk/photosdup) by @peter-sk - :sparkles: **inspired by difPy**\n\n-------\n\n

\n:thought_balloon: Also want to be featured in the "Related Projects" section? Check our Contributor Guidelines to find out how!\n

\n\n-------\n\n

\nWe :heart: Open Source\n

\n'` 2023-03-04T00:53:14,031 According to the spec (see the link below), however, setuptools CANNOT 2023-03-04T00:53:14,031 consider this value unless 'readme' is listed as `dynamic`. 2023-03-04T00:53:14,031 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-04T00:53:14,031 For the time being, `setuptools` will still consider the given value (as a 2023-03-04T00:53:14,031 **transitional** measure), but please note that future releases of setuptools will 2023-03-04T00:53:14,032 follow strictly the standard. 2023-03-04T00:53:14,032 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2023-03-04T00:53:14,032 remove the `[project]` table from your file and rely entirely on other means of 2023-03-04T00:53:14,032 configuration. 2023-03-04T00:53:14,032 !! 2023-03-04T00:53:14,033 warnings.warn(msg, _WouldIgnoreField) 2023-03-04T00:53:14,033 /tmp/pip-build-env-5fdcln_f/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. 2023-03-04T00:53:14,033 !! 2023-03-04T00:53:14,033 ########################################################################## 2023-03-04T00:53:14,033 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-04T00:53:14,034 ########################################################################## 2023-03-04T00:53:14,034 The following seems to be defined outside of `pyproject.toml`: 2023-03-04T00:53:14,034 `license = 'MIT'` 2023-03-04T00:53:14,034 According to the spec (see the link below), however, setuptools CANNOT 2023-03-04T00:53:14,034 consider this value unless 'license' is listed as `dynamic`. 2023-03-04T00:53:14,035 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-04T00:53:14,035 For the time being, `setuptools` will still consider the given value (as a 2023-03-04T00:53:14,035 **transitional** measure), but please note that future releases of setuptools will 2023-03-04T00:53:14,035 follow strictly the standard. 2023-03-04T00:53:14,035 To prevent this warning, you can list 'license' under `dynamic` or alternatively 2023-03-04T00:53:14,036 remove the `[project]` table from your file and rely entirely on other means of 2023-03-04T00:53:14,036 configuration. 2023-03-04T00:53:14,036 !! 2023-03-04T00:53:14,036 warnings.warn(msg, _WouldIgnoreField) 2023-03-04T00:53:14,036 /tmp/pip-build-env-5fdcln_f/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'keywords' defined outside of `pyproject.toml` would be ignored. 2023-03-04T00:53:14,037 !! 2023-03-04T00:53:14,037 ########################################################################## 2023-03-04T00:53:14,037 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-04T00:53:14,037 ########################################################################## 2023-03-04T00:53:14,037 The following seems to be defined outside of `pyproject.toml`: 2023-03-04T00:53:14,038 `keywords = ['duplicate', 'image', 'finder', 'similarity', 'pictures']` 2023-03-04T00:53:14,038 According to the spec (see the link below), however, setuptools CANNOT 2023-03-04T00:53:14,038 consider this value unless 'keywords' is listed as `dynamic`. 2023-03-04T00:53:14,038 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-04T00:53:14,039 For the time being, `setuptools` will still consider the given value (as a 2023-03-04T00:53:14,039 **transitional** measure), but please note that future releases of setuptools will 2023-03-04T00:53:14,039 follow strictly the standard. 2023-03-04T00:53:14,039 To prevent this warning, you can list 'keywords' under `dynamic` or alternatively 2023-03-04T00:53:14,039 remove the `[project]` table from your file and rely entirely on other means of 2023-03-04T00:53:14,039 configuration. 2023-03-04T00:53:14,040 !! 2023-03-04T00:53:14,040 warnings.warn(msg, _WouldIgnoreField) 2023-03-04T00:53:14,040 /tmp/pip-build-env-5fdcln_f/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'classifiers' defined outside of `pyproject.toml` would be ignored. 2023-03-04T00:53:14,040 !! 2023-03-04T00:53:14,041 ########################################################################## 2023-03-04T00:53:14,041 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-04T00:53:14,041 ########################################################################## 2023-03-04T00:53:14,041 The following seems to be defined outside of `pyproject.toml`: 2023-03-04T00:53:14,042 `classifiers = ['Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', 'Topic :: Software Development :: Build Tools', 'License :: OSI Approved :: MIT License', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11']` 2023-03-04T00:53:14,042 According to the spec (see the link below), however, setuptools CANNOT 2023-03-04T00:53:14,042 consider this value unless 'classifiers' is listed as `dynamic`. 2023-03-04T00:53:14,042 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-04T00:53:14,042 For the time being, `setuptools` will still consider the given value (as a 2023-03-04T00:53:14,043 **transitional** measure), but please note that future releases of setuptools will 2023-03-04T00:53:14,043 follow strictly the standard. 2023-03-04T00:53:14,043 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2023-03-04T00:53:14,043 remove the `[project]` table from your file and rely entirely on other means of 2023-03-04T00:53:14,043 configuration. 2023-03-04T00:53:14,044 !! 2023-03-04T00:53:14,044 warnings.warn(msg, _WouldIgnoreField) 2023-03-04T00:53:14,044 /tmp/pip-build-env-5fdcln_f/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. 2023-03-04T00:53:14,044 !! 2023-03-04T00:53:14,045 ########################################################################## 2023-03-04T00:53:14,045 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-04T00:53:14,045 ########################################################################## 2023-03-04T00:53:14,045 The following seems to be defined outside of `pyproject.toml`: 2023-03-04T00:53:14,045 `dependencies = ['matplotlib', 'numpy', 'Pillow']` 2023-03-04T00:53:14,046 According to the spec (see the link below), however, setuptools CANNOT 2023-03-04T00:53:14,046 consider this value unless 'dependencies' is listed as `dynamic`. 2023-03-04T00:53:14,046 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-04T00:53:14,046 For the time being, `setuptools` will still consider the given value (as a 2023-03-04T00:53:14,046 **transitional** measure), but please note that future releases of setuptools will 2023-03-04T00:53:14,046 follow strictly the standard. 2023-03-04T00:53:14,047 To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively 2023-03-04T00:53:14,047 remove the `[project]` table from your file and rely entirely on other means of 2023-03-04T00:53:14,047 configuration. 2023-03-04T00:53:14,047 !! 2023-03-04T00:53:14,047 warnings.warn(msg, _WouldIgnoreField) 2023-03-04T00:53:14,335 running bdist_wheel 2023-03-04T00:53:14,361 running build 2023-03-04T00:53:14,361 running build_py 2023-03-04T00:53:14,370 creating build 2023-03-04T00:53:14,370 creating build/lib 2023-03-04T00:53:14,371 creating build/lib/difPy 2023-03-04T00:53:14,372 copying difPy/__init__.py -> build/lib/difPy 2023-03-04T00:53:14,374 copying difPy/dif.py -> build/lib/difPy 2023-03-04T00:53:14,377 copying difPy/version.py -> build/lib/difPy 2023-03-04T00:53:14,379 running egg_info 2023-03-04T00:53:14,394 writing difPy.egg-info/PKG-INFO 2023-03-04T00:53:14,396 writing dependency_links to difPy.egg-info/dependency_links.txt 2023-03-04T00:53:14,398 writing requirements to difPy.egg-info/requires.txt 2023-03-04T00:53:14,399 writing top-level names to difPy.egg-info/top_level.txt 2023-03-04T00:53:14,409 reading manifest file 'difPy.egg-info/SOURCES.txt' 2023-03-04T00:53:14,411 adding license file 'LICENSE.txt' 2023-03-04T00:53:14,413 writing manifest file 'difPy.egg-info/SOURCES.txt' 2023-03-04T00:53:14,428 installing to build/bdist.linux-armv7l/wheel 2023-03-04T00:53:14,428 running install 2023-03-04T00:53:14,453 running install_lib 2023-03-04T00:53:14,461 creating build/bdist.linux-armv7l 2023-03-04T00:53:14,462 creating build/bdist.linux-armv7l/wheel 2023-03-04T00:53:14,464 creating build/bdist.linux-armv7l/wheel/difPy 2023-03-04T00:53:14,465 copying build/lib/difPy/__init__.py -> build/bdist.linux-armv7l/wheel/difPy 2023-03-04T00:53:14,467 copying build/lib/difPy/dif.py -> build/bdist.linux-armv7l/wheel/difPy 2023-03-04T00:53:14,470 copying build/lib/difPy/version.py -> build/bdist.linux-armv7l/wheel/difPy 2023-03-04T00:53:14,472 running install_egg_info 2023-03-04T00:53:14,480 Copying difPy.egg-info to build/bdist.linux-armv7l/wheel/difPy-3.0.5-py3.9.egg-info 2023-03-04T00:53:14,492 running install_scripts 2023-03-04T00:53:14,509 creating build/bdist.linux-armv7l/wheel/difPy-3.0.5.dist-info/WHEEL 2023-03-04T00:53:14,512 creating '/tmp/pip-wheel-2wv877ad/.tmp-2bwzh1g0/difPy-3.0.5-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it 2023-03-04T00:53:14,515 adding 'difPy/__init__.py' 2023-03-04T00:53:14,518 adding 'difPy/dif.py' 2023-03-04T00:53:14,519 adding 'difPy/version.py' 2023-03-04T00:53:14,522 adding 'difPy-3.0.5.dist-info/LICENSE.txt' 2023-03-04T00:53:14,524 adding 'difPy-3.0.5.dist-info/METADATA' 2023-03-04T00:53:14,525 adding 'difPy-3.0.5.dist-info/WHEEL' 2023-03-04T00:53:14,526 adding 'difPy-3.0.5.dist-info/top_level.txt' 2023-03-04T00:53:14,526 adding 'difPy-3.0.5.dist-info/RECORD' 2023-03-04T00:53:14,528 removing build/bdist.linux-armv7l/wheel 2023-03-04T00:53:14,633 Building wheel for difpy (pyproject.toml): finished with status 'done' 2023-03-04T00:53:14,640 Created wheel for difpy: filename=difPy-3.0.5-py3-none-any.whl size=11111 sha256=15c1e780303252326ffb924af1f042820eef36feab2885729682e2b426b6f4be 2023-03-04T00:53:14,641 Stored in directory: /tmp/pip-ephem-wheel-cache-0azmo6k6/wheels/e0/13/ff/bae5f9b5bbd1c6393069898e56c469770e8c6c7a35d36027ec 2023-03-04T00:53:14,653 Successfully built difpy 2023-03-04T00:53:14,657 Removed build tracker: '/tmp/pip-build-tracker-we7abz39'