2023-03-05T17:06:25,816 Created temporary directory: /tmp/pip-ephem-wheel-cache-tf2fie9t 2023-03-05T17:06:25,818 Created temporary directory: /tmp/pip-build-tracker-kyb0_dkb 2023-03-05T17:06:25,819 Initialized build tracking at /tmp/pip-build-tracker-kyb0_dkb 2023-03-05T17:06:25,819 Created build tracker: /tmp/pip-build-tracker-kyb0_dkb 2023-03-05T17:06:25,819 Entered build tracker: /tmp/pip-build-tracker-kyb0_dkb 2023-03-05T17:06:25,820 Created temporary directory: /tmp/pip-wheel-_he7j3xm 2023-03-05T17:06:25,824 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-05T17:06:25,827 Created temporary directory: /tmp/pip-ephem-wheel-cache-6x5oa9s2 2023-03-05T17:06:25,856 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-03-05T17:06:25,859 2 location(s) to search for versions of difpy: 2023-03-05T17:06:25,859 * https://pypi.org/simple/difpy/ 2023-03-05T17:06:25,859 * https://www.piwheels.org/simple/difpy/ 2023-03-05T17:06:25,860 Fetching project page and analyzing links: https://pypi.org/simple/difpy/ 2023-03-05T17:06:25,860 Getting page https://pypi.org/simple/difpy/ 2023-03-05T17:06:25,862 Found index url https://pypi.org/simple 2023-03-05T17:06:25,915 Fetched page https://pypi.org/simple/difpy/ as application/vnd.pypi.simple.v1+json 2023-03-05T17:06:25,919 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-05T17:06:25,920 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-05T17:06:25,920 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-05T17:06:25,920 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-05T17:06:25,920 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-05T17:06:25,921 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-05T17:06:25,921 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-05T17:06:25,921 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-05T17:06:25,922 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-05T17:06:25,922 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-05T17:06:25,922 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-05T17:06:25,922 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-05T17:06:25,923 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-05T17:06:25,923 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-05T17:06:25,923 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-05T17:06:25,924 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-05T17:06:25,924 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-05T17:06:25,924 Found link https://files.pythonhosted.org/packages/15/5b/c79874a47f841dac832d84eaa726326a9124844c2cff33a26e12af1f36a8/difPy-3.0.6.tar.gz (from https://pypi.org/simple/difpy/), version: 3.0.6 2023-03-05T17:06:25,924 Fetching project page and analyzing links: https://www.piwheels.org/simple/difpy/ 2023-03-05T17:06:25,925 Getting page https://www.piwheels.org/simple/difpy/ 2023-03-05T17:06:25,926 Found index url https://www.piwheels.org/simple 2023-03-05T17:06:26,154 Fetched page https://www.piwheels.org/simple/difpy/ as text/html 2023-03-05T17:06:26,163 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-3.0.5-py3-none-any.whl#sha256=15c1e780303252326ffb924af1f042820eef36feab2885729682e2b426b6f4be (from https://www.piwheels.org/simple/difpy/) 2023-03-05T17:06:26,163 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-05T17:06:26,163 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-05T17:06:26,164 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-05T17:06:26,164 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-05T17:06:26,164 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-05T17:06:26,165 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-05T17:06:26,165 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-05T17:06:26,165 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-05T17:06:26,166 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-05T17:06:26,166 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-05T17:06:26,166 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-05T17:06:26,167 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-05T17:06:26,167 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-05T17:06:26,167 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-05T17:06:26,168 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-05T17:06:26,168 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-05T17:06:26,168 Skipping link: not a file: https://www.piwheels.org/simple/difpy/ 2023-03-05T17:06:26,169 Skipping link: not a file: https://pypi.org/simple/difpy/ 2023-03-05T17:06:26,200 Given no hashes to check 1 links for project 'difpy': discarding no candidates 2023-03-05T17:06:26,228 Collecting difpy==3.0.6 2023-03-05T17:06:26,231 Created temporary directory: /tmp/pip-unpack-w29gi1bu 2023-03-05T17:06:26,294 Downloading difPy-3.0.6.tar.gz (13 kB) 2023-03-05T17:06:26,336 Added difpy==3.0.6 from https://files.pythonhosted.org/packages/15/5b/c79874a47f841dac832d84eaa726326a9124844c2cff33a26e12af1f36a8/difPy-3.0.6.tar.gz to build tracker '/tmp/pip-build-tracker-kyb0_dkb' 2023-03-05T17:06:26,343 Created temporary directory: /tmp/pip-build-env-f6bs6_4v 2023-03-05T17:06:26,354 Installing build dependencies: started 2023-03-05T17:06:26,355 Running command pip subprocess to install build dependencies 2023-03-05T17:06:27,571 Using pip 23.0.1 from /usr/local/lib/python3.9/dist-packages/pip (python 3.9) 2023-03-05T17:06:28,150 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-05T17:06:28,178 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-03-05T17:06:29,644 Collecting numpy>=1.24.2 2023-03-05T17:06:30,745 Using cached https://www.piwheels.org/simple/numpy/numpy-1.24.2-cp39-cp39-linux_armv7l.whl (12.3 MB) 2023-03-05T17:06:32,188 Collecting matplotlib>=3.7.0 2023-03-05T17:06:32,210 Downloading https://www.piwheels.org/simple/matplotlib/matplotlib-3.7.1-cp39-cp39-linux_armv7l.whl (10.6 MB) 2023-03-05T17:06:33,242 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 10.6/10.6 MB 10.3 MB/s eta 0:00:00 2023-03-05T17:06:34,803 Collecting Pillow>=9.4.0 2023-03-05T17:06:34,942 Using cached https://www.piwheels.org/simple/pillow/Pillow-9.4.0-cp39-cp39-linux_armv7l.whl (1.1 MB) 2023-03-05T17:06:36,516 Collecting setuptools>=40.8.0 2023-03-05T17:06:36,629 Using cached https://www.piwheels.org/simple/setuptools/setuptools-67.4.0-py3-none-any.whl (1.1 MB) 2023-03-05T17:06:36,976 Collecting pyparsing>=2.3.1 2023-03-05T17:06:37,021 Using cached https://www.piwheels.org/simple/pyparsing/pyparsing-3.0.9-py3-none-any.whl (98 kB) 2023-03-05T17:06:37,413 Collecting contourpy>=1.0.1 2023-03-05T17:06:37,460 Using cached https://www.piwheels.org/simple/contourpy/contourpy-1.0.7-cp39-cp39-linux_armv7l.whl (224 kB) 2023-03-05T17:06:37,556 Collecting cycler>=0.10 2023-03-05T17:06:37,595 Using cached https://www.piwheels.org/simple/cycler/cycler-0.11.0-py3-none-any.whl (6.4 kB) 2023-03-05T17:06:37,930 Collecting kiwisolver>=1.0.1 2023-03-05T17:06:38,072 Using cached https://www.piwheels.org/simple/kiwisolver/kiwisolver-1.4.4-cp39-cp39-linux_armv7l.whl (1.1 MB) 2023-03-05T17:06:38,228 Collecting python-dateutil>=2.7 2023-03-05T17:06:38,265 Using cached https://www.piwheels.org/simple/python-dateutil/python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB) 2023-03-05T17:06:38,852 Collecting fonttools>=4.22.0 2023-03-05T17:06:39,103 Using cached https://www.piwheels.org/simple/fonttools/fonttools-4.38.0-cp39-cp39-linux_armv7l.whl (2.4 MB) 2023-03-05T17:06:39,466 Collecting importlib-resources>=3.2.0 2023-03-05T17:06:39,485 Using cached https://www.piwheels.org/simple/importlib-resources/importlib_resources-5.12.0-py3-none-any.whl (36 kB) 2023-03-05T17:06:39,665 Collecting packaging>=20.0 2023-03-05T17:06:39,682 Using cached https://www.piwheels.org/simple/packaging/packaging-23.0-py3-none-any.whl (42 kB) 2023-03-05T17:06:40,213 Collecting zipp>=3.1.0 2023-03-05T17:06:40,230 Using cached https://www.piwheels.org/simple/zipp/zipp-3.15.0-py3-none-any.whl (6.8 kB) 2023-03-05T17:06:40,401 Collecting six>=1.5 2023-03-05T17:06:40,418 Using cached https://www.piwheels.org/simple/six/six-1.16.0-py2.py3-none-any.whl (11 kB) 2023-03-05T17:06:42,725 Installing collected packages: zipp, six, setuptools, pyparsing, Pillow, packaging, numpy, kiwisolver, fonttools, cycler, python-dateutil, importlib-resources, contourpy, matplotlib 2023-03-05T17:06:55,087 Creating /tmp/pip-build-env-f6bs6_4v/overlay/bin 2023-03-05T17:06:55,271 changing mode of /tmp/pip-build-env-f6bs6_4v/overlay/bin/f2py to 755 2023-03-05T17:06:55,273 changing mode of /tmp/pip-build-env-f6bs6_4v/overlay/bin/f2py3 to 755 2023-03-05T17:06:55,276 changing mode of /tmp/pip-build-env-f6bs6_4v/overlay/bin/f2py3.9 to 755 2023-03-05T17:06:58,730 changing mode of /tmp/pip-build-env-f6bs6_4v/overlay/bin/fonttools to 755 2023-03-05T17:06:58,733 changing mode of /tmp/pip-build-env-f6bs6_4v/overlay/bin/pyftmerge to 755 2023-03-05T17:06:58,735 changing mode of /tmp/pip-build-env-f6bs6_4v/overlay/bin/pyftsubset to 755 2023-03-05T17:06:58,737 changing mode of /tmp/pip-build-env-f6bs6_4v/overlay/bin/ttx to 755 2023-03-05T17:07:06,281 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.1 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-05T17:07:07,018 Installing build dependencies: finished with status 'done' 2023-03-05T17:07:07,036 Getting requirements to build wheel: started 2023-03-05T17:07:07,037 Running command Getting requirements to build wheel 2023-03-05T17:07:07,645 /tmp/pip-build-env-f6bs6_4v/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. 2023-03-05T17:07:07,646 !! 2023-03-05T17:07:07,647 ########################################################################## 2023-03-05T17:07:07,647 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-05T17:07:07,647 ########################################################################## 2023-03-05T17:07:07,647 The following seems to be defined outside of `pyproject.toml`: 2023-03-05T17:07:07,648 `readme = '# Duplicate Image Finder (difPy)\n\n[![PyPIv](https://img.shields.io/pypi/v/difPy)](https://pypi.org/project/difPy/)\n[![PyPI status](https://img.shields.io/pypi/status/difPy)](https://pypi.org/project/difPy/)\n[![Documentation Status](https://readthedocs.org/projects/difpy/badge/?version=latest)](https://difpy.readthedocs.io/en/latest/?badge=latest)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/difPy)](https://pypi.org/project/difPy/)\n[![Downloads](https://static.pepy.tech/badge/difpy)](https://pepy.tech/project/difpy)\n[![PyPI - License](https://img.shields.io/pypi/l/difPy)](https://github.com/elisemercury/Duplicate-Image-Finder/blob/main/LICENSE.txt)\n[](https://github.com/elisemercury/Duplicate-Image-Finder/)\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://difpy.readthedocs.io/)**.\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, move_to=None,\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://difpy.readthedocs.io/)**.\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 {True,False}]\n [-r {True,False}] [-s SIMILARITY] [-px PX_SIZE] \n [-p {True,False}] [-o {True,False}] [-mv MOVE_TO]\n [-d {True,False}] [-sd {True,False}] [-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://difpy.readthedocs.io/)**.\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-05T17:07:07,649 According to the spec (see the link below), however, setuptools CANNOT 2023-03-05T17:07:07,649 consider this value unless 'readme' is listed as `dynamic`. 2023-03-05T17:07:07,649 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-05T17:07:07,649 For the time being, `setuptools` will still consider the given value (as a 2023-03-05T17:07:07,650 **transitional** measure), but please note that future releases of setuptools will 2023-03-05T17:07:07,650 follow strictly the standard. 2023-03-05T17:07:07,650 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2023-03-05T17:07:07,650 remove the `[project]` table from your file and rely entirely on other means of 2023-03-05T17:07:07,650 configuration. 2023-03-05T17:07:07,651 !! 2023-03-05T17:07:07,651 warnings.warn(msg, _WouldIgnoreField) 2023-03-05T17:07:07,651 /tmp/pip-build-env-f6bs6_4v/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. 2023-03-05T17:07:07,651 !! 2023-03-05T17:07:07,652 ########################################################################## 2023-03-05T17:07:07,652 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-05T17:07:07,652 ########################################################################## 2023-03-05T17:07:07,652 The following seems to be defined outside of `pyproject.toml`: 2023-03-05T17:07:07,652 `license = 'MIT'` 2023-03-05T17:07:07,653 According to the spec (see the link below), however, setuptools CANNOT 2023-03-05T17:07:07,653 consider this value unless 'license' is listed as `dynamic`. 2023-03-05T17:07:07,653 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-05T17:07:07,653 For the time being, `setuptools` will still consider the given value (as a 2023-03-05T17:07:07,653 **transitional** measure), but please note that future releases of setuptools will 2023-03-05T17:07:07,653 follow strictly the standard. 2023-03-05T17:07:07,654 To prevent this warning, you can list 'license' under `dynamic` or alternatively 2023-03-05T17:07:07,654 remove the `[project]` table from your file and rely entirely on other means of 2023-03-05T17:07:07,654 configuration. 2023-03-05T17:07:07,654 !! 2023-03-05T17:07:07,655 warnings.warn(msg, _WouldIgnoreField) 2023-03-05T17:07:07,655 /tmp/pip-build-env-f6bs6_4v/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'keywords' defined outside of `pyproject.toml` would be ignored. 2023-03-05T17:07:07,655 !! 2023-03-05T17:07:07,655 ########################################################################## 2023-03-05T17:07:07,655 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-05T17:07:07,655 ########################################################################## 2023-03-05T17:07:07,656 The following seems to be defined outside of `pyproject.toml`: 2023-03-05T17:07:07,656 `keywords = ['duplicate', 'image', 'finder', 'similarity', 'pictures']` 2023-03-05T17:07:07,656 According to the spec (see the link below), however, setuptools CANNOT 2023-03-05T17:07:07,656 consider this value unless 'keywords' is listed as `dynamic`. 2023-03-05T17:07:07,657 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-05T17:07:07,657 For the time being, `setuptools` will still consider the given value (as a 2023-03-05T17:07:07,657 **transitional** measure), but please note that future releases of setuptools will 2023-03-05T17:07:07,657 follow strictly the standard. 2023-03-05T17:07:07,657 To prevent this warning, you can list 'keywords' under `dynamic` or alternatively 2023-03-05T17:07:07,658 remove the `[project]` table from your file and rely entirely on other means of 2023-03-05T17:07:07,658 configuration. 2023-03-05T17:07:07,658 !! 2023-03-05T17:07:07,658 warnings.warn(msg, _WouldIgnoreField) 2023-03-05T17:07:07,659 /tmp/pip-build-env-f6bs6_4v/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'classifiers' defined outside of `pyproject.toml` would be ignored. 2023-03-05T17:07:07,659 !! 2023-03-05T17:07:07,659 ########################################################################## 2023-03-05T17:07:07,659 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-05T17:07:07,659 ########################################################################## 2023-03-05T17:07:07,660 The following seems to be defined outside of `pyproject.toml`: 2023-03-05T17:07:07,660 `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-05T17:07:07,660 According to the spec (see the link below), however, setuptools CANNOT 2023-03-05T17:07:07,660 consider this value unless 'classifiers' is listed as `dynamic`. 2023-03-05T17:07:07,661 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-05T17:07:07,661 For the time being, `setuptools` will still consider the given value (as a 2023-03-05T17:07:07,661 **transitional** measure), but please note that future releases of setuptools will 2023-03-05T17:07:07,661 follow strictly the standard. 2023-03-05T17:07:07,661 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2023-03-05T17:07:07,661 remove the `[project]` table from your file and rely entirely on other means of 2023-03-05T17:07:07,662 configuration. 2023-03-05T17:07:07,662 !! 2023-03-05T17:07:07,662 warnings.warn(msg, _WouldIgnoreField) 2023-03-05T17:07:07,662 /tmp/pip-build-env-f6bs6_4v/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. 2023-03-05T17:07:07,662 !! 2023-03-05T17:07:07,663 ########################################################################## 2023-03-05T17:07:07,663 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-05T17:07:07,663 ########################################################################## 2023-03-05T17:07:07,663 The following seems to be defined outside of `pyproject.toml`: 2023-03-05T17:07:07,664 `dependencies = ['matplotlib', 'numpy', 'Pillow']` 2023-03-05T17:07:07,664 According to the spec (see the link below), however, setuptools CANNOT 2023-03-05T17:07:07,664 consider this value unless 'dependencies' is listed as `dynamic`. 2023-03-05T17:07:07,664 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-05T17:07:07,665 For the time being, `setuptools` will still consider the given value (as a 2023-03-05T17:07:07,665 **transitional** measure), but please note that future releases of setuptools will 2023-03-05T17:07:07,665 follow strictly the standard. 2023-03-05T17:07:07,665 To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively 2023-03-05T17:07:07,665 remove the `[project]` table from your file and rely entirely on other means of 2023-03-05T17:07:07,665 configuration. 2023-03-05T17:07:07,666 !! 2023-03-05T17:07:07,666 warnings.warn(msg, _WouldIgnoreField) 2023-03-05T17:07:07,951 running egg_info 2023-03-05T17:07:07,959 writing difPy.egg-info/PKG-INFO 2023-03-05T17:07:07,961 writing dependency_links to difPy.egg-info/dependency_links.txt 2023-03-05T17:07:07,963 writing requirements to difPy.egg-info/requires.txt 2023-03-05T17:07:07,965 writing top-level names to difPy.egg-info/top_level.txt 2023-03-05T17:07:07,988 reading manifest file 'difPy.egg-info/SOURCES.txt' 2023-03-05T17:07:07,990 adding license file 'LICENSE.txt' 2023-03-05T17:07:07,992 writing manifest file 'difPy.egg-info/SOURCES.txt' 2023-03-05T17:07:08,090 Getting requirements to build wheel: finished with status 'done' 2023-03-05T17:07:08,117 Installing backend dependencies: started 2023-03-05T17:07:08,118 Running command pip subprocess to install backend dependencies 2023-03-05T17:07:09,320 Using pip 23.0.1 from /usr/local/lib/python3.9/dist-packages/pip (python 3.9) 2023-03-05T17:07:09,901 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-05T17:07:09,927 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-03-05T17:07:10,402 Collecting wheel 2023-03-05T17:07:10,628 Using cached https://www.piwheels.org/simple/wheel/wheel-0.38.4-py3-none-any.whl (36 kB) 2023-03-05T17:07:12,068 Installing collected packages: wheel 2023-03-05T17:07:12,213 Creating /tmp/pip-build-env-f6bs6_4v/normal/bin 2023-03-05T17:07:12,216 changing mode of /tmp/pip-build-env-f6bs6_4v/normal/bin/wheel to 755 2023-03-05T17:07:12,229 Successfully installed wheel-0.38.4 2023-03-05T17:07:12,657 Installing backend dependencies: finished with status 'done' 2023-03-05T17:07:12,660 Created temporary directory: /tmp/pip-modern-metadata-1f7nr8wy 2023-03-05T17:07:12,663 Preparing metadata (pyproject.toml): started 2023-03-05T17:07:12,664 Running command Preparing metadata (pyproject.toml) 2023-03-05T17:07:13,210 /tmp/pip-build-env-f6bs6_4v/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. 2023-03-05T17:07:13,211 !! 2023-03-05T17:07:13,212 ########################################################################## 2023-03-05T17:07:13,212 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-05T17:07:13,212 ########################################################################## 2023-03-05T17:07:13,212 The following seems to be defined outside of `pyproject.toml`: 2023-03-05T17:07:13,213 `readme = '# Duplicate Image Finder (difPy)\n\n[![PyPIv](https://img.shields.io/pypi/v/difPy)](https://pypi.org/project/difPy/)\n[![PyPI status](https://img.shields.io/pypi/status/difPy)](https://pypi.org/project/difPy/)\n[![Documentation Status](https://readthedocs.org/projects/difpy/badge/?version=latest)](https://difpy.readthedocs.io/en/latest/?badge=latest)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/difPy)](https://pypi.org/project/difPy/)\n[![Downloads](https://static.pepy.tech/badge/difpy)](https://pepy.tech/project/difpy)\n[![PyPI - License](https://img.shields.io/pypi/l/difPy)](https://github.com/elisemercury/Duplicate-Image-Finder/blob/main/LICENSE.txt)\n[](https://github.com/elisemercury/Duplicate-Image-Finder/)\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://difpy.readthedocs.io/)**.\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, move_to=None,\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://difpy.readthedocs.io/)**.\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 {True,False}]\n [-r {True,False}] [-s SIMILARITY] [-px PX_SIZE] \n [-p {True,False}] [-o {True,False}] [-mv MOVE_TO]\n [-d {True,False}] [-sd {True,False}] [-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://difpy.readthedocs.io/)**.\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-05T17:07:13,213 According to the spec (see the link below), however, setuptools CANNOT 2023-03-05T17:07:13,213 consider this value unless 'readme' is listed as `dynamic`. 2023-03-05T17:07:13,214 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-05T17:07:13,214 For the time being, `setuptools` will still consider the given value (as a 2023-03-05T17:07:13,214 **transitional** measure), but please note that future releases of setuptools will 2023-03-05T17:07:13,214 follow strictly the standard. 2023-03-05T17:07:13,214 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2023-03-05T17:07:13,214 remove the `[project]` table from your file and rely entirely on other means of 2023-03-05T17:07:13,215 configuration. 2023-03-05T17:07:13,215 !! 2023-03-05T17:07:13,215 warnings.warn(msg, _WouldIgnoreField) 2023-03-05T17:07:13,215 /tmp/pip-build-env-f6bs6_4v/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. 2023-03-05T17:07:13,215 !! 2023-03-05T17:07:13,216 ########################################################################## 2023-03-05T17:07:13,216 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-05T17:07:13,216 ########################################################################## 2023-03-05T17:07:13,216 The following seems to be defined outside of `pyproject.toml`: 2023-03-05T17:07:13,217 `license = 'MIT'` 2023-03-05T17:07:13,217 According to the spec (see the link below), however, setuptools CANNOT 2023-03-05T17:07:13,217 consider this value unless 'license' is listed as `dynamic`. 2023-03-05T17:07:13,217 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-05T17:07:13,218 For the time being, `setuptools` will still consider the given value (as a 2023-03-05T17:07:13,218 **transitional** measure), but please note that future releases of setuptools will 2023-03-05T17:07:13,218 follow strictly the standard. 2023-03-05T17:07:13,218 To prevent this warning, you can list 'license' under `dynamic` or alternatively 2023-03-05T17:07:13,218 remove the `[project]` table from your file and rely entirely on other means of 2023-03-05T17:07:13,218 configuration. 2023-03-05T17:07:13,219 !! 2023-03-05T17:07:13,219 warnings.warn(msg, _WouldIgnoreField) 2023-03-05T17:07:13,219 /tmp/pip-build-env-f6bs6_4v/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'keywords' defined outside of `pyproject.toml` would be ignored. 2023-03-05T17:07:13,219 !! 2023-03-05T17:07:13,220 ########################################################################## 2023-03-05T17:07:13,220 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-05T17:07:13,220 ########################################################################## 2023-03-05T17:07:13,220 The following seems to be defined outside of `pyproject.toml`: 2023-03-05T17:07:13,220 `keywords = ['duplicate', 'image', 'finder', 'similarity', 'pictures']` 2023-03-05T17:07:13,221 According to the spec (see the link below), however, setuptools CANNOT 2023-03-05T17:07:13,221 consider this value unless 'keywords' is listed as `dynamic`. 2023-03-05T17:07:13,221 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-05T17:07:13,221 For the time being, `setuptools` will still consider the given value (as a 2023-03-05T17:07:13,221 **transitional** measure), but please note that future releases of setuptools will 2023-03-05T17:07:13,222 follow strictly the standard. 2023-03-05T17:07:13,222 To prevent this warning, you can list 'keywords' under `dynamic` or alternatively 2023-03-05T17:07:13,222 remove the `[project]` table from your file and rely entirely on other means of 2023-03-05T17:07:13,222 configuration. 2023-03-05T17:07:13,223 !! 2023-03-05T17:07:13,223 warnings.warn(msg, _WouldIgnoreField) 2023-03-05T17:07:13,223 /tmp/pip-build-env-f6bs6_4v/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'classifiers' defined outside of `pyproject.toml` would be ignored. 2023-03-05T17:07:13,223 !! 2023-03-05T17:07:13,223 ########################################################################## 2023-03-05T17:07:13,224 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-05T17:07:13,224 ########################################################################## 2023-03-05T17:07:13,224 The following seems to be defined outside of `pyproject.toml`: 2023-03-05T17:07:13,224 `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-05T17:07:13,225 According to the spec (see the link below), however, setuptools CANNOT 2023-03-05T17:07:13,225 consider this value unless 'classifiers' is listed as `dynamic`. 2023-03-05T17:07:13,225 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-05T17:07:13,225 For the time being, `setuptools` will still consider the given value (as a 2023-03-05T17:07:13,225 **transitional** measure), but please note that future releases of setuptools will 2023-03-05T17:07:13,225 follow strictly the standard. 2023-03-05T17:07:13,226 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2023-03-05T17:07:13,226 remove the `[project]` table from your file and rely entirely on other means of 2023-03-05T17:07:13,226 configuration. 2023-03-05T17:07:13,226 !! 2023-03-05T17:07:13,227 warnings.warn(msg, _WouldIgnoreField) 2023-03-05T17:07:13,227 /tmp/pip-build-env-f6bs6_4v/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. 2023-03-05T17:07:13,227 !! 2023-03-05T17:07:13,227 ########################################################################## 2023-03-05T17:07:13,227 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-05T17:07:13,228 ########################################################################## 2023-03-05T17:07:13,228 The following seems to be defined outside of `pyproject.toml`: 2023-03-05T17:07:13,228 `dependencies = ['matplotlib', 'numpy', 'Pillow']` 2023-03-05T17:07:13,228 According to the spec (see the link below), however, setuptools CANNOT 2023-03-05T17:07:13,228 consider this value unless 'dependencies' is listed as `dynamic`. 2023-03-05T17:07:13,229 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-05T17:07:13,229 For the time being, `setuptools` will still consider the given value (as a 2023-03-05T17:07:13,229 **transitional** measure), but please note that future releases of setuptools will 2023-03-05T17:07:13,229 follow strictly the standard. 2023-03-05T17:07:13,229 To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively 2023-03-05T17:07:13,230 remove the `[project]` table from your file and rely entirely on other means of 2023-03-05T17:07:13,230 configuration. 2023-03-05T17:07:13,230 !! 2023-03-05T17:07:13,230 warnings.warn(msg, _WouldIgnoreField) 2023-03-05T17:07:13,518 running dist_info 2023-03-05T17:07:13,526 creating /tmp/pip-modern-metadata-1f7nr8wy/difPy.egg-info 2023-03-05T17:07:13,534 writing /tmp/pip-modern-metadata-1f7nr8wy/difPy.egg-info/PKG-INFO 2023-03-05T17:07:13,537 writing dependency_links to /tmp/pip-modern-metadata-1f7nr8wy/difPy.egg-info/dependency_links.txt 2023-03-05T17:07:13,539 writing requirements to /tmp/pip-modern-metadata-1f7nr8wy/difPy.egg-info/requires.txt 2023-03-05T17:07:13,540 writing top-level names to /tmp/pip-modern-metadata-1f7nr8wy/difPy.egg-info/top_level.txt 2023-03-05T17:07:13,541 writing manifest file '/tmp/pip-modern-metadata-1f7nr8wy/difPy.egg-info/SOURCES.txt' 2023-03-05T17:07:13,564 reading manifest file '/tmp/pip-modern-metadata-1f7nr8wy/difPy.egg-info/SOURCES.txt' 2023-03-05T17:07:13,566 adding license file 'LICENSE.txt' 2023-03-05T17:07:13,569 writing manifest file '/tmp/pip-modern-metadata-1f7nr8wy/difPy.egg-info/SOURCES.txt' 2023-03-05T17:07:13,570 creating '/tmp/pip-modern-metadata-1f7nr8wy/difPy-3.0.6.dist-info' 2023-03-05T17:07:13,710 Preparing metadata (pyproject.toml): finished with status 'done' 2023-03-05T17:07:13,717 Source in /tmp/pip-wheel-_he7j3xm/difpy_c0c8b45d4d1b481fb6e58ef676b8856e has version 3.0.6, which satisfies requirement difpy==3.0.6 from https://files.pythonhosted.org/packages/15/5b/c79874a47f841dac832d84eaa726326a9124844c2cff33a26e12af1f36a8/difPy-3.0.6.tar.gz 2023-03-05T17:07:13,718 Removed difpy==3.0.6 from https://files.pythonhosted.org/packages/15/5b/c79874a47f841dac832d84eaa726326a9124844c2cff33a26e12af1f36a8/difPy-3.0.6.tar.gz from build tracker '/tmp/pip-build-tracker-kyb0_dkb' 2023-03-05T17:07:13,723 Created temporary directory: /tmp/pip-unpack-omfwvcc1 2023-03-05T17:07:13,723 Building wheels for collected packages: difpy 2023-03-05T17:07:13,728 Created temporary directory: /tmp/pip-wheel-4g2n47sh 2023-03-05T17:07:13,728 Destination directory: /tmp/pip-wheel-4g2n47sh 2023-03-05T17:07:13,731 Building wheel for difpy (pyproject.toml): started 2023-03-05T17:07:13,732 Running command Building wheel for difpy (pyproject.toml) 2023-03-05T17:07:14,297 /tmp/pip-build-env-f6bs6_4v/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. 2023-03-05T17:07:14,297 !! 2023-03-05T17:07:14,298 ########################################################################## 2023-03-05T17:07:14,298 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-05T17:07:14,298 ########################################################################## 2023-03-05T17:07:14,298 The following seems to be defined outside of `pyproject.toml`: 2023-03-05T17:07:14,299 `readme = '# Duplicate Image Finder (difPy)\n\n[![PyPIv](https://img.shields.io/pypi/v/difPy)](https://pypi.org/project/difPy/)\n[![PyPI status](https://img.shields.io/pypi/status/difPy)](https://pypi.org/project/difPy/)\n[![Documentation Status](https://readthedocs.org/projects/difpy/badge/?version=latest)](https://difpy.readthedocs.io/en/latest/?badge=latest)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/difPy)](https://pypi.org/project/difPy/)\n[![Downloads](https://static.pepy.tech/badge/difpy)](https://pepy.tech/project/difpy)\n[![PyPI - License](https://img.shields.io/pypi/l/difPy)](https://github.com/elisemercury/Duplicate-Image-Finder/blob/main/LICENSE.txt)\n[](https://github.com/elisemercury/Duplicate-Image-Finder/)\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://difpy.readthedocs.io/)**.\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, move_to=None,\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://difpy.readthedocs.io/)**.\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 {True,False}]\n [-r {True,False}] [-s SIMILARITY] [-px PX_SIZE] \n [-p {True,False}] [-o {True,False}] [-mv MOVE_TO]\n [-d {True,False}] [-sd {True,False}] [-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://difpy.readthedocs.io/)**.\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-05T17:07:14,299 According to the spec (see the link below), however, setuptools CANNOT 2023-03-05T17:07:14,299 consider this value unless 'readme' is listed as `dynamic`. 2023-03-05T17:07:14,300 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-05T17:07:14,300 For the time being, `setuptools` will still consider the given value (as a 2023-03-05T17:07:14,300 **transitional** measure), but please note that future releases of setuptools will 2023-03-05T17:07:14,300 follow strictly the standard. 2023-03-05T17:07:14,301 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2023-03-05T17:07:14,301 remove the `[project]` table from your file and rely entirely on other means of 2023-03-05T17:07:14,301 configuration. 2023-03-05T17:07:14,301 !! 2023-03-05T17:07:14,301 warnings.warn(msg, _WouldIgnoreField) 2023-03-05T17:07:14,302 /tmp/pip-build-env-f6bs6_4v/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. 2023-03-05T17:07:14,302 !! 2023-03-05T17:07:14,302 ########################################################################## 2023-03-05T17:07:14,302 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-05T17:07:14,302 ########################################################################## 2023-03-05T17:07:14,303 The following seems to be defined outside of `pyproject.toml`: 2023-03-05T17:07:14,303 `license = 'MIT'` 2023-03-05T17:07:14,303 According to the spec (see the link below), however, setuptools CANNOT 2023-03-05T17:07:14,303 consider this value unless 'license' is listed as `dynamic`. 2023-03-05T17:07:14,304 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-05T17:07:14,304 For the time being, `setuptools` will still consider the given value (as a 2023-03-05T17:07:14,304 **transitional** measure), but please note that future releases of setuptools will 2023-03-05T17:07:14,304 follow strictly the standard. 2023-03-05T17:07:14,304 To prevent this warning, you can list 'license' under `dynamic` or alternatively 2023-03-05T17:07:14,304 remove the `[project]` table from your file and rely entirely on other means of 2023-03-05T17:07:14,305 configuration. 2023-03-05T17:07:14,305 !! 2023-03-05T17:07:14,305 warnings.warn(msg, _WouldIgnoreField) 2023-03-05T17:07:14,305 /tmp/pip-build-env-f6bs6_4v/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'keywords' defined outside of `pyproject.toml` would be ignored. 2023-03-05T17:07:14,305 !! 2023-03-05T17:07:14,306 ########################################################################## 2023-03-05T17:07:14,306 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-05T17:07:14,306 ########################################################################## 2023-03-05T17:07:14,306 The following seems to be defined outside of `pyproject.toml`: 2023-03-05T17:07:14,307 `keywords = ['duplicate', 'image', 'finder', 'similarity', 'pictures']` 2023-03-05T17:07:14,307 According to the spec (see the link below), however, setuptools CANNOT 2023-03-05T17:07:14,307 consider this value unless 'keywords' is listed as `dynamic`. 2023-03-05T17:07:14,307 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-05T17:07:14,307 For the time being, `setuptools` will still consider the given value (as a 2023-03-05T17:07:14,308 **transitional** measure), but please note that future releases of setuptools will 2023-03-05T17:07:14,308 follow strictly the standard. 2023-03-05T17:07:14,308 To prevent this warning, you can list 'keywords' under `dynamic` or alternatively 2023-03-05T17:07:14,308 remove the `[project]` table from your file and rely entirely on other means of 2023-03-05T17:07:14,308 configuration. 2023-03-05T17:07:14,309 !! 2023-03-05T17:07:14,309 warnings.warn(msg, _WouldIgnoreField) 2023-03-05T17:07:14,309 /tmp/pip-build-env-f6bs6_4v/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'classifiers' defined outside of `pyproject.toml` would be ignored. 2023-03-05T17:07:14,309 !! 2023-03-05T17:07:14,310 ########################################################################## 2023-03-05T17:07:14,310 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-05T17:07:14,310 ########################################################################## 2023-03-05T17:07:14,310 The following seems to be defined outside of `pyproject.toml`: 2023-03-05T17:07:14,310 `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-05T17:07:14,311 According to the spec (see the link below), however, setuptools CANNOT 2023-03-05T17:07:14,311 consider this value unless 'classifiers' is listed as `dynamic`. 2023-03-05T17:07:14,311 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-05T17:07:14,311 For the time being, `setuptools` will still consider the given value (as a 2023-03-05T17:07:14,311 **transitional** measure), but please note that future releases of setuptools will 2023-03-05T17:07:14,312 follow strictly the standard. 2023-03-05T17:07:14,312 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2023-03-05T17:07:14,312 remove the `[project]` table from your file and rely entirely on other means of 2023-03-05T17:07:14,312 configuration. 2023-03-05T17:07:14,313 !! 2023-03-05T17:07:14,313 warnings.warn(msg, _WouldIgnoreField) 2023-03-05T17:07:14,313 /tmp/pip-build-env-f6bs6_4v/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. 2023-03-05T17:07:14,313 !! 2023-03-05T17:07:14,313 ########################################################################## 2023-03-05T17:07:14,314 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-05T17:07:14,314 ########################################################################## 2023-03-05T17:07:14,314 The following seems to be defined outside of `pyproject.toml`: 2023-03-05T17:07:14,314 `dependencies = ['matplotlib', 'numpy', 'Pillow']` 2023-03-05T17:07:14,314 According to the spec (see the link below), however, setuptools CANNOT 2023-03-05T17:07:14,315 consider this value unless 'dependencies' is listed as `dynamic`. 2023-03-05T17:07:14,315 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-05T17:07:14,315 For the time being, `setuptools` will still consider the given value (as a 2023-03-05T17:07:14,315 **transitional** measure), but please note that future releases of setuptools will 2023-03-05T17:07:14,315 follow strictly the standard. 2023-03-05T17:07:14,316 To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively 2023-03-05T17:07:14,316 remove the `[project]` table from your file and rely entirely on other means of 2023-03-05T17:07:14,316 configuration. 2023-03-05T17:07:14,316 !! 2023-03-05T17:07:14,316 warnings.warn(msg, _WouldIgnoreField) 2023-03-05T17:07:14,603 running bdist_wheel 2023-03-05T17:07:14,630 running build 2023-03-05T17:07:14,630 running build_py 2023-03-05T17:07:14,639 creating build 2023-03-05T17:07:14,639 creating build/lib 2023-03-05T17:07:14,640 creating build/lib/difPy 2023-03-05T17:07:14,641 copying difPy/__init__.py -> build/lib/difPy 2023-03-05T17:07:14,644 copying difPy/dif.py -> build/lib/difPy 2023-03-05T17:07:14,646 copying difPy/version.py -> build/lib/difPy 2023-03-05T17:07:14,648 running egg_info 2023-03-05T17:07:14,663 writing difPy.egg-info/PKG-INFO 2023-03-05T17:07:14,665 writing dependency_links to difPy.egg-info/dependency_links.txt 2023-03-05T17:07:14,667 writing requirements to difPy.egg-info/requires.txt 2023-03-05T17:07:14,668 writing top-level names to difPy.egg-info/top_level.txt 2023-03-05T17:07:14,678 reading manifest file 'difPy.egg-info/SOURCES.txt' 2023-03-05T17:07:14,680 adding license file 'LICENSE.txt' 2023-03-05T17:07:14,682 writing manifest file 'difPy.egg-info/SOURCES.txt' 2023-03-05T17:07:14,698 installing to build/bdist.linux-armv7l/wheel 2023-03-05T17:07:14,698 running install 2023-03-05T17:07:14,723 running install_lib 2023-03-05T17:07:14,731 creating build/bdist.linux-armv7l 2023-03-05T17:07:14,731 creating build/bdist.linux-armv7l/wheel 2023-03-05T17:07:14,733 creating build/bdist.linux-armv7l/wheel/difPy 2023-03-05T17:07:14,734 copying build/lib/difPy/__init__.py -> build/bdist.linux-armv7l/wheel/difPy 2023-03-05T17:07:14,736 copying build/lib/difPy/dif.py -> build/bdist.linux-armv7l/wheel/difPy 2023-03-05T17:07:14,739 copying build/lib/difPy/version.py -> build/bdist.linux-armv7l/wheel/difPy 2023-03-05T17:07:14,741 running install_egg_info 2023-03-05T17:07:14,748 Copying difPy.egg-info to build/bdist.linux-armv7l/wheel/difPy-3.0.6-py3.9.egg-info 2023-03-05T17:07:14,760 running install_scripts 2023-03-05T17:07:14,777 creating build/bdist.linux-armv7l/wheel/difPy-3.0.6.dist-info/WHEEL 2023-03-05T17:07:14,780 creating '/tmp/pip-wheel-4g2n47sh/.tmp-jifek3pb/difPy-3.0.6-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it 2023-03-05T17:07:14,782 adding 'difPy/__init__.py' 2023-03-05T17:07:14,785 adding 'difPy/dif.py' 2023-03-05T17:07:14,787 adding 'difPy/version.py' 2023-03-05T17:07:14,789 adding 'difPy-3.0.6.dist-info/LICENSE.txt' 2023-03-05T17:07:14,791 adding 'difPy-3.0.6.dist-info/METADATA' 2023-03-05T17:07:14,792 adding 'difPy-3.0.6.dist-info/WHEEL' 2023-03-05T17:07:14,793 adding 'difPy-3.0.6.dist-info/top_level.txt' 2023-03-05T17:07:14,794 adding 'difPy-3.0.6.dist-info/RECORD' 2023-03-05T17:07:14,795 removing build/bdist.linux-armv7l/wheel 2023-03-05T17:07:14,901 Building wheel for difpy (pyproject.toml): finished with status 'done' 2023-03-05T17:07:14,908 Created wheel for difpy: filename=difPy-3.0.6-py3-none-any.whl size=11368 sha256=5f32a7749a1beeba4373fd818e042d102ef116bca36e15bb9ae4d20734297a05 2023-03-05T17:07:14,909 Stored in directory: /tmp/pip-ephem-wheel-cache-6x5oa9s2/wheels/72/07/8b/f8ea2bd9f14543c9b310b0f0c8009328cd554f9deb7093bcd5 2023-03-05T17:07:14,921 Successfully built difpy 2023-03-05T17:07:14,925 Removed build tracker: '/tmp/pip-build-tracker-kyb0_dkb'