2023-03-12T18:15:03,999 Created temporary directory: /tmp/pip-ephem-wheel-cache-qydr_zgn 2023-03-12T18:15:04,001 Created temporary directory: /tmp/pip-build-tracker-ff96j6x8 2023-03-12T18:15:04,002 Initialized build tracking at /tmp/pip-build-tracker-ff96j6x8 2023-03-12T18:15:04,002 Created build tracker: /tmp/pip-build-tracker-ff96j6x8 2023-03-12T18:15:04,002 Entered build tracker: /tmp/pip-build-tracker-ff96j6x8 2023-03-12T18:15:04,003 Created temporary directory: /tmp/pip-wheel-0qg9hirf 2023-03-12T18:15:04,007 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-12T18:15:04,010 Created temporary directory: /tmp/pip-ephem-wheel-cache-bc2ti3ii 2023-03-12T18:15:04,038 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-03-12T18:15:04,041 2 location(s) to search for versions of difpy: 2023-03-12T18:15:04,041 * https://pypi.org/simple/difpy/ 2023-03-12T18:15:04,041 * https://www.piwheels.org/simple/difpy/ 2023-03-12T18:15:04,042 Fetching project page and analyzing links: https://pypi.org/simple/difpy/ 2023-03-12T18:15:04,042 Getting page https://pypi.org/simple/difpy/ 2023-03-12T18:15:04,044 Found index url https://pypi.org/simple 2023-03-12T18:15:04,105 Fetched page https://pypi.org/simple/difpy/ as application/vnd.pypi.simple.v1+json 2023-03-12T18:15:04,112 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-12T18:15:04,112 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-12T18:15:04,113 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-12T18:15:04,113 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-12T18:15:04,114 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-12T18:15:04,114 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-12T18:15:04,114 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-12T18:15:04,115 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-12T18:15:04,115 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-12T18:15:04,116 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-12T18:15:04,116 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-12T18:15:04,116 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-12T18:15:04,117 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-12T18:15:04,117 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-12T18:15:04,118 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-12T18:15:04,118 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-12T18:15:04,119 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-12T18:15:04,119 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-12T18:15:04,119 Found link https://files.pythonhosted.org/packages/42/36/71556c11e00faca94ed76e557d28793251ac5687d8c67424bf7aad17aff2/difPy-3.0.7.tar.gz (from https://pypi.org/simple/difpy/), version: 3.0.7 2023-03-12T18:15:04,120 Skipping link: No binaries permitted for difpy: https://files.pythonhosted.org/packages/71/a6/007ff26611c9401ef7e1bb38c6c34ed0df81115f8fe3982d7d8f1eaf0218/difPy-3.0.8-py3-none-any.whl (from https://pypi.org/simple/difpy/) 2023-03-12T18:15:04,120 Found link https://files.pythonhosted.org/packages/d6/5a/2cae5a3585488d5aa5c6ad4ba6c7089756bb88dc272bc0b8ef143e620a1e/difPy-3.0.8.tar.gz (from https://pypi.org/simple/difpy/), version: 3.0.8 2023-03-12T18:15:04,121 Fetching project page and analyzing links: https://www.piwheels.org/simple/difpy/ 2023-03-12T18:15:04,121 Getting page https://www.piwheels.org/simple/difpy/ 2023-03-12T18:15:04,122 Found index url https://www.piwheels.org/simple 2023-03-12T18:15:04,306 Fetched page https://www.piwheels.org/simple/difpy/ as text/html 2023-03-12T18:15:04,312 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-3.0.7-py3-none-any.whl#sha256=be8b2a5560264a34083b9b8d67fc2f14719d7cd58f1ee48f882ebf140675f3f3 (from https://www.piwheels.org/simple/difpy/) 2023-03-12T18:15:04,312 Skipping link: No binaries permitted for difpy: https://www.piwheels.org/simple/difpy/difPy-3.0.6-py3-none-any.whl#sha256=5f32a7749a1beeba4373fd818e042d102ef116bca36e15bb9ae4d20734297a05 (from https://www.piwheels.org/simple/difpy/) 2023-03-12T18:15:04,313 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-12T18:15:04,313 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-12T18:15:04,313 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-12T18:15:04,313 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-12T18:15:04,313 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-12T18:15:04,314 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-12T18:15:04,314 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-12T18:15:04,314 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-12T18:15:04,314 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-12T18:15:04,314 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-12T18:15:04,315 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-12T18:15:04,315 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-12T18:15:04,315 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-12T18:15:04,315 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-12T18:15:04,315 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-12T18:15:04,316 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-12T18:15:04,316 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-12T18:15:04,316 Skipping link: not a file: https://www.piwheels.org/simple/difpy/ 2023-03-12T18:15:04,316 Skipping link: not a file: https://pypi.org/simple/difpy/ 2023-03-12T18:15:04,344 Given no hashes to check 1 links for project 'difpy': discarding no candidates 2023-03-12T18:15:04,361 Collecting difpy==3.0.8 2023-03-12T18:15:04,363 Created temporary directory: /tmp/pip-unpack-361fs2ec 2023-03-12T18:15:04,407 Downloading difPy-3.0.8.tar.gz (13 kB) 2023-03-12T18:15:04,448 Added difpy==3.0.8 from https://files.pythonhosted.org/packages/d6/5a/2cae5a3585488d5aa5c6ad4ba6c7089756bb88dc272bc0b8ef143e620a1e/difPy-3.0.8.tar.gz to build tracker '/tmp/pip-build-tracker-ff96j6x8' 2023-03-12T18:15:04,455 Created temporary directory: /tmp/pip-build-env-_yvw6b27 2023-03-12T18:15:04,466 Installing build dependencies: started 2023-03-12T18:15:04,467 Running command pip subprocess to install build dependencies 2023-03-12T18:15:05,670 Using pip 23.0.1 from /usr/local/lib/python3.9/dist-packages/pip (python 3.9) 2023-03-12T18:15:06,252 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-12T18:15:06,280 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-03-12T18:15:07,760 Collecting numpy>=1.24.2 2023-03-12T18:15:08,890 Using cached https://www.piwheels.org/simple/numpy/numpy-1.24.2-cp39-cp39-linux_armv7l.whl (12.3 MB) 2023-03-12T18:15:10,221 Collecting matplotlib>=3.7.0 2023-03-12T18:15:11,450 Using cached https://www.piwheels.org/simple/matplotlib/matplotlib-3.7.1-cp39-cp39-linux_armv7l.whl (10.6 MB) 2023-03-12T18:15:13,264 Collecting Pillow>=9.4.0 2023-03-12T18:15:13,440 Using cached https://www.piwheels.org/simple/pillow/Pillow-9.4.0-cp39-cp39-linux_armv7l.whl (1.1 MB) 2023-03-12T18:15:14,952 Collecting setuptools>=40.8.0 2023-03-12T18:15:15,054 Using cached https://www.piwheels.org/simple/setuptools/setuptools-67.6.0-py3-none-any.whl (1.1 MB) 2023-03-12T18:15:15,257 Collecting cycler>=0.10 2023-03-12T18:15:15,280 Using cached https://www.piwheels.org/simple/cycler/cycler-0.11.0-py3-none-any.whl (6.4 kB) 2023-03-12T18:15:15,504 Collecting pyparsing>=2.3.1 2023-03-12T18:15:15,524 Using cached https://www.piwheels.org/simple/pyparsing/pyparsing-3.0.9-py3-none-any.whl (98 kB) 2023-03-12T18:15:16,079 Collecting fonttools>=4.22.0 2023-03-12T18:15:16,176 Using cached https://www.piwheels.org/simple/fonttools/fonttools-4.39.0-py3-none-any.whl (1.0 MB) 2023-03-12T18:15:16,352 Collecting python-dateutil>=2.7 2023-03-12T18:15:16,379 Using cached https://www.piwheels.org/simple/python-dateutil/python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB) 2023-03-12T18:15:16,677 Collecting importlib-resources>=3.2.0 2023-03-12T18:15:16,695 Using cached https://www.piwheels.org/simple/importlib-resources/importlib_resources-5.12.0-py3-none-any.whl (36 kB) 2023-03-12T18:15:16,994 Collecting kiwisolver>=1.0.1 2023-03-12T18:15:17,098 Using cached https://www.piwheels.org/simple/kiwisolver/kiwisolver-1.4.4-cp39-cp39-linux_armv7l.whl (1.1 MB) 2023-03-12T18:15:17,482 Collecting contourpy>=1.0.1 2023-03-12T18:15:17,510 Using cached https://www.piwheels.org/simple/contourpy/contourpy-1.0.7-cp39-cp39-linux_armv7l.whl (224 kB) 2023-03-12T18:15:17,701 Collecting packaging>=20.0 2023-03-12T18:15:17,718 Using cached https://www.piwheels.org/simple/packaging/packaging-23.0-py3-none-any.whl (42 kB) 2023-03-12T18:15:18,237 Collecting zipp>=3.1.0 2023-03-12T18:15:18,324 Using cached https://www.piwheels.org/simple/zipp/zipp-3.15.0-py3-none-any.whl (6.8 kB) 2023-03-12T18:15:18,476 Collecting six>=1.5 2023-03-12T18:15:18,491 Using cached https://www.piwheels.org/simple/six/six-1.16.0-py2.py3-none-any.whl (11 kB) 2023-03-12T18:15:20,802 Installing collected packages: zipp, six, setuptools, pyparsing, Pillow, packaging, numpy, kiwisolver, fonttools, cycler, python-dateutil, importlib-resources, contourpy, matplotlib 2023-03-12T18:15:33,497 Creating /tmp/pip-build-env-_yvw6b27/overlay/bin 2023-03-12T18:15:33,499 changing mode of /tmp/pip-build-env-_yvw6b27/overlay/bin/f2py to 755 2023-03-12T18:15:33,501 changing mode of /tmp/pip-build-env-_yvw6b27/overlay/bin/f2py3 to 755 2023-03-12T18:15:33,504 changing mode of /tmp/pip-build-env-_yvw6b27/overlay/bin/f2py3.9 to 755 2023-03-12T18:15:36,879 changing mode of /tmp/pip-build-env-_yvw6b27/overlay/bin/fonttools to 755 2023-03-12T18:15:36,882 changing mode of /tmp/pip-build-env-_yvw6b27/overlay/bin/pyftmerge to 755 2023-03-12T18:15:36,884 changing mode of /tmp/pip-build-env-_yvw6b27/overlay/bin/pyftsubset to 755 2023-03-12T18:15:36,886 changing mode of /tmp/pip-build-env-_yvw6b27/overlay/bin/ttx to 755 2023-03-12T18:15:43,556 Successfully installed Pillow-9.4.0 contourpy-1.0.7 cycler-0.11.0 fonttools-4.39.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.6.0 six-1.16.0 zipp-3.15.0 2023-03-12T18:15:44,290 Installing build dependencies: finished with status 'done' 2023-03-12T18:15:44,333 Getting requirements to build wheel: started 2023-03-12T18:15:44,334 Running command Getting requirements to build wheel 2023-03-12T18:15:45,055 /tmp/pip-build-env-_yvw6b27/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. 2023-03-12T18:15:45,055 !! 2023-03-12T18:15:45,056 ########################################################################## 2023-03-12T18:15:45,056 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-12T18:15:45,057 ########################################################################## 2023-03-12T18:15:45,057 The following seems to be defined outside of `pyproject.toml`: 2023-03-12T18:15:45,057 `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" : 0,\n "px_size" : 50,\n "files_searched" : 1032,\n "matches_found" : {\'duplicates\': 52, \n \'similar\': 0},\n "invalid_files": {"count": 4}}\n```\n\n:new: **[difPy v3.0.8](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.8)** outputs the ``match_count`` of **duplicates** and **similar** images it found.\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=\'duplicates\', px_size=50, move_to=None, \n show_progress=True, show_output=False, delete=False, silent_del=False, logs=False)\n```\n\n:new: Since **[difPy v3.0.8](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.8)**, the `similarity` parameter accepts `\'duplicates\'` and `\'similar\'` as input options.\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 | `-p` | show_progress | \n| `-Z` | output_directory | `-o` | show_output |\n| `-f`| fast_search | `-mv` | move_to |\n| `-r`| recursive | `-d` | delete |\n| `-s` | similarity | `-sd` | silent_del |\n| `-px` | px_size | `-l` | logs |\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-12T18:15:45,058 According to the spec (see the link below), however, setuptools CANNOT 2023-03-12T18:15:45,058 consider this value unless 'readme' is listed as `dynamic`. 2023-03-12T18:15:45,059 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-12T18:15:45,059 For the time being, `setuptools` will still consider the given value (as a 2023-03-12T18:15:45,059 **transitional** measure), but please note that future releases of setuptools will 2023-03-12T18:15:45,059 follow strictly the standard. 2023-03-12T18:15:45,059 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2023-03-12T18:15:45,060 remove the `[project]` table from your file and rely entirely on other means of 2023-03-12T18:15:45,060 configuration. 2023-03-12T18:15:45,060 !! 2023-03-12T18:15:45,060 warnings.warn(msg, _WouldIgnoreField) 2023-03-12T18:15:45,060 /tmp/pip-build-env-_yvw6b27/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. 2023-03-12T18:15:45,061 !! 2023-03-12T18:15:45,061 ########################################################################## 2023-03-12T18:15:45,061 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-12T18:15:45,061 ########################################################################## 2023-03-12T18:15:45,061 The following seems to be defined outside of `pyproject.toml`: 2023-03-12T18:15:45,062 `license = 'MIT'` 2023-03-12T18:15:45,062 According to the spec (see the link below), however, setuptools CANNOT 2023-03-12T18:15:45,062 consider this value unless 'license' is listed as `dynamic`. 2023-03-12T18:15:45,062 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-12T18:15:45,063 For the time being, `setuptools` will still consider the given value (as a 2023-03-12T18:15:45,063 **transitional** measure), but please note that future releases of setuptools will 2023-03-12T18:15:45,063 follow strictly the standard. 2023-03-12T18:15:45,063 To prevent this warning, you can list 'license' under `dynamic` or alternatively 2023-03-12T18:15:45,063 remove the `[project]` table from your file and rely entirely on other means of 2023-03-12T18:15:45,063 configuration. 2023-03-12T18:15:45,064 !! 2023-03-12T18:15:45,064 warnings.warn(msg, _WouldIgnoreField) 2023-03-12T18:15:45,064 /tmp/pip-build-env-_yvw6b27/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'keywords' defined outside of `pyproject.toml` would be ignored. 2023-03-12T18:15:45,064 !! 2023-03-12T18:15:45,065 ########################################################################## 2023-03-12T18:15:45,065 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-12T18:15:45,065 ########################################################################## 2023-03-12T18:15:45,065 The following seems to be defined outside of `pyproject.toml`: 2023-03-12T18:15:45,065 `keywords = ['duplicate', 'image', 'finder', 'similarity', 'pictures']` 2023-03-12T18:15:45,066 According to the spec (see the link below), however, setuptools CANNOT 2023-03-12T18:15:45,066 consider this value unless 'keywords' is listed as `dynamic`. 2023-03-12T18:15:45,066 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-12T18:15:45,066 For the time being, `setuptools` will still consider the given value (as a 2023-03-12T18:15:45,066 **transitional** measure), but please note that future releases of setuptools will 2023-03-12T18:15:45,067 follow strictly the standard. 2023-03-12T18:15:45,067 To prevent this warning, you can list 'keywords' under `dynamic` or alternatively 2023-03-12T18:15:45,067 remove the `[project]` table from your file and rely entirely on other means of 2023-03-12T18:15:45,067 configuration. 2023-03-12T18:15:45,068 !! 2023-03-12T18:15:45,068 warnings.warn(msg, _WouldIgnoreField) 2023-03-12T18:15:45,068 /tmp/pip-build-env-_yvw6b27/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'classifiers' defined outside of `pyproject.toml` would be ignored. 2023-03-12T18:15:45,068 !! 2023-03-12T18:15:45,069 ########################################################################## 2023-03-12T18:15:45,069 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-12T18:15:45,069 ########################################################################## 2023-03-12T18:15:45,069 The following seems to be defined outside of `pyproject.toml`: 2023-03-12T18:15:45,069 `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-12T18:15:45,070 According to the spec (see the link below), however, setuptools CANNOT 2023-03-12T18:15:45,070 consider this value unless 'classifiers' is listed as `dynamic`. 2023-03-12T18:15:45,070 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-12T18:15:45,070 For the time being, `setuptools` will still consider the given value (as a 2023-03-12T18:15:45,071 **transitional** measure), but please note that future releases of setuptools will 2023-03-12T18:15:45,071 follow strictly the standard. 2023-03-12T18:15:45,071 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2023-03-12T18:15:45,071 remove the `[project]` table from your file and rely entirely on other means of 2023-03-12T18:15:45,071 configuration. 2023-03-12T18:15:45,072 !! 2023-03-12T18:15:45,072 warnings.warn(msg, _WouldIgnoreField) 2023-03-12T18:15:45,072 /tmp/pip-build-env-_yvw6b27/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. 2023-03-12T18:15:45,072 !! 2023-03-12T18:15:45,073 ########################################################################## 2023-03-12T18:15:45,073 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-12T18:15:45,073 ########################################################################## 2023-03-12T18:15:45,073 The following seems to be defined outside of `pyproject.toml`: 2023-03-12T18:15:45,074 `dependencies = ['matplotlib', 'numpy', 'Pillow']` 2023-03-12T18:15:45,074 According to the spec (see the link below), however, setuptools CANNOT 2023-03-12T18:15:45,074 consider this value unless 'dependencies' is listed as `dynamic`. 2023-03-12T18:15:45,075 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-12T18:15:45,075 For the time being, `setuptools` will still consider the given value (as a 2023-03-12T18:15:45,075 **transitional** measure), but please note that future releases of setuptools will 2023-03-12T18:15:45,075 follow strictly the standard. 2023-03-12T18:15:45,076 To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively 2023-03-12T18:15:45,076 remove the `[project]` table from your file and rely entirely on other means of 2023-03-12T18:15:45,076 configuration. 2023-03-12T18:15:45,076 !! 2023-03-12T18:15:45,076 warnings.warn(msg, _WouldIgnoreField) 2023-03-12T18:15:45,358 running egg_info 2023-03-12T18:15:45,366 writing difPy.egg-info/PKG-INFO 2023-03-12T18:15:45,369 writing dependency_links to difPy.egg-info/dependency_links.txt 2023-03-12T18:15:45,371 writing requirements to difPy.egg-info/requires.txt 2023-03-12T18:15:45,373 writing top-level names to difPy.egg-info/top_level.txt 2023-03-12T18:15:45,397 reading manifest file 'difPy.egg-info/SOURCES.txt' 2023-03-12T18:15:45,399 adding license file 'LICENSE.txt' 2023-03-12T18:15:45,401 writing manifest file 'difPy.egg-info/SOURCES.txt' 2023-03-12T18:15:45,499 Getting requirements to build wheel: finished with status 'done' 2023-03-12T18:15:45,525 Installing backend dependencies: started 2023-03-12T18:15:45,526 Running command pip subprocess to install backend dependencies 2023-03-12T18:15:46,760 Using pip 23.0.1 from /usr/local/lib/python3.9/dist-packages/pip (python 3.9) 2023-03-12T18:15:47,338 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-12T18:15:47,373 Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple 2023-03-12T18:15:47,933 Collecting wheel 2023-03-12T18:15:47,952 Using cached https://www.piwheels.org/simple/wheel/wheel-0.38.4-py3-none-any.whl (36 kB) 2023-03-12T18:15:49,422 Installing collected packages: wheel 2023-03-12T18:15:49,578 Creating /tmp/pip-build-env-_yvw6b27/normal/bin 2023-03-12T18:15:49,581 changing mode of /tmp/pip-build-env-_yvw6b27/normal/bin/wheel to 755 2023-03-12T18:15:49,595 Successfully installed wheel-0.38.4 2023-03-12T18:15:50,027 Installing backend dependencies: finished with status 'done' 2023-03-12T18:15:50,030 Created temporary directory: /tmp/pip-modern-metadata-qfcaca0h 2023-03-12T18:15:50,033 Preparing metadata (pyproject.toml): started 2023-03-12T18:15:50,034 Running command Preparing metadata (pyproject.toml) 2023-03-12T18:15:50,588 /tmp/pip-build-env-_yvw6b27/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. 2023-03-12T18:15:50,589 !! 2023-03-12T18:15:50,589 ########################################################################## 2023-03-12T18:15:50,590 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-12T18:15:50,590 ########################################################################## 2023-03-12T18:15:50,590 The following seems to be defined outside of `pyproject.toml`: 2023-03-12T18:15:50,590 `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" : 0,\n "px_size" : 50,\n "files_searched" : 1032,\n "matches_found" : {\'duplicates\': 52, \n \'similar\': 0},\n "invalid_files": {"count": 4}}\n```\n\n:new: **[difPy v3.0.8](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.8)** outputs the ``match_count`` of **duplicates** and **similar** images it found.\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=\'duplicates\', px_size=50, move_to=None, \n show_progress=True, show_output=False, delete=False, silent_del=False, logs=False)\n```\n\n:new: Since **[difPy v3.0.8](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.8)**, the `similarity` parameter accepts `\'duplicates\'` and `\'similar\'` as input options.\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 | `-p` | show_progress | \n| `-Z` | output_directory | `-o` | show_output |\n| `-f`| fast_search | `-mv` | move_to |\n| `-r`| recursive | `-d` | delete |\n| `-s` | similarity | `-sd` | silent_del |\n| `-px` | px_size | `-l` | logs |\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-12T18:15:50,591 According to the spec (see the link below), however, setuptools CANNOT 2023-03-12T18:15:50,591 consider this value unless 'readme' is listed as `dynamic`. 2023-03-12T18:15:50,591 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-12T18:15:50,591 For the time being, `setuptools` will still consider the given value (as a 2023-03-12T18:15:50,592 **transitional** measure), but please note that future releases of setuptools will 2023-03-12T18:15:50,592 follow strictly the standard. 2023-03-12T18:15:50,592 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2023-03-12T18:15:50,592 remove the `[project]` table from your file and rely entirely on other means of 2023-03-12T18:15:50,592 configuration. 2023-03-12T18:15:50,593 !! 2023-03-12T18:15:50,593 warnings.warn(msg, _WouldIgnoreField) 2023-03-12T18:15:50,593 /tmp/pip-build-env-_yvw6b27/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. 2023-03-12T18:15:50,593 !! 2023-03-12T18:15:50,593 ########################################################################## 2023-03-12T18:15:50,594 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-12T18:15:50,594 ########################################################################## 2023-03-12T18:15:50,594 The following seems to be defined outside of `pyproject.toml`: 2023-03-12T18:15:50,594 `license = 'MIT'` 2023-03-12T18:15:50,594 According to the spec (see the link below), however, setuptools CANNOT 2023-03-12T18:15:50,595 consider this value unless 'license' is listed as `dynamic`. 2023-03-12T18:15:50,595 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-12T18:15:50,595 For the time being, `setuptools` will still consider the given value (as a 2023-03-12T18:15:50,595 **transitional** measure), but please note that future releases of setuptools will 2023-03-12T18:15:50,595 follow strictly the standard. 2023-03-12T18:15:50,596 To prevent this warning, you can list 'license' under `dynamic` or alternatively 2023-03-12T18:15:50,596 remove the `[project]` table from your file and rely entirely on other means of 2023-03-12T18:15:50,596 configuration. 2023-03-12T18:15:50,596 !! 2023-03-12T18:15:50,596 warnings.warn(msg, _WouldIgnoreField) 2023-03-12T18:15:50,597 /tmp/pip-build-env-_yvw6b27/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'keywords' defined outside of `pyproject.toml` would be ignored. 2023-03-12T18:15:50,597 !! 2023-03-12T18:15:50,597 ########################################################################## 2023-03-12T18:15:50,597 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-12T18:15:50,597 ########################################################################## 2023-03-12T18:15:50,597 The following seems to be defined outside of `pyproject.toml`: 2023-03-12T18:15:50,598 `keywords = ['duplicate', 'image', 'finder', 'similarity', 'pictures']` 2023-03-12T18:15:50,598 According to the spec (see the link below), however, setuptools CANNOT 2023-03-12T18:15:50,598 consider this value unless 'keywords' is listed as `dynamic`. 2023-03-12T18:15:50,598 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-12T18:15:50,599 For the time being, `setuptools` will still consider the given value (as a 2023-03-12T18:15:50,599 **transitional** measure), but please note that future releases of setuptools will 2023-03-12T18:15:50,599 follow strictly the standard. 2023-03-12T18:15:50,599 To prevent this warning, you can list 'keywords' under `dynamic` or alternatively 2023-03-12T18:15:50,599 remove the `[project]` table from your file and rely entirely on other means of 2023-03-12T18:15:50,599 configuration. 2023-03-12T18:15:50,600 !! 2023-03-12T18:15:50,600 warnings.warn(msg, _WouldIgnoreField) 2023-03-12T18:15:50,600 /tmp/pip-build-env-_yvw6b27/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'classifiers' defined outside of `pyproject.toml` would be ignored. 2023-03-12T18:15:50,600 !! 2023-03-12T18:15:50,601 ########################################################################## 2023-03-12T18:15:50,601 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-12T18:15:50,601 ########################################################################## 2023-03-12T18:15:50,601 The following seems to be defined outside of `pyproject.toml`: 2023-03-12T18:15:50,601 `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-12T18:15:50,602 According to the spec (see the link below), however, setuptools CANNOT 2023-03-12T18:15:50,602 consider this value unless 'classifiers' is listed as `dynamic`. 2023-03-12T18:15:50,602 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-12T18:15:50,602 For the time being, `setuptools` will still consider the given value (as a 2023-03-12T18:15:50,602 **transitional** measure), but please note that future releases of setuptools will 2023-03-12T18:15:50,603 follow strictly the standard. 2023-03-12T18:15:50,603 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2023-03-12T18:15:50,603 remove the `[project]` table from your file and rely entirely on other means of 2023-03-12T18:15:50,603 configuration. 2023-03-12T18:15:50,603 !! 2023-03-12T18:15:50,604 warnings.warn(msg, _WouldIgnoreField) 2023-03-12T18:15:50,604 /tmp/pip-build-env-_yvw6b27/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. 2023-03-12T18:15:50,604 !! 2023-03-12T18:15:50,604 ########################################################################## 2023-03-12T18:15:50,604 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-12T18:15:50,605 ########################################################################## 2023-03-12T18:15:50,605 The following seems to be defined outside of `pyproject.toml`: 2023-03-12T18:15:50,605 `dependencies = ['matplotlib', 'numpy', 'Pillow']` 2023-03-12T18:15:50,605 According to the spec (see the link below), however, setuptools CANNOT 2023-03-12T18:15:50,605 consider this value unless 'dependencies' is listed as `dynamic`. 2023-03-12T18:15:50,606 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-12T18:15:50,606 For the time being, `setuptools` will still consider the given value (as a 2023-03-12T18:15:50,606 **transitional** measure), but please note that future releases of setuptools will 2023-03-12T18:15:50,606 follow strictly the standard. 2023-03-12T18:15:50,606 To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively 2023-03-12T18:15:50,607 remove the `[project]` table from your file and rely entirely on other means of 2023-03-12T18:15:50,607 configuration. 2023-03-12T18:15:50,607 !! 2023-03-12T18:15:50,607 warnings.warn(msg, _WouldIgnoreField) 2023-03-12T18:15:50,906 running dist_info 2023-03-12T18:15:50,914 creating /tmp/pip-modern-metadata-qfcaca0h/difPy.egg-info 2023-03-12T18:15:50,922 writing /tmp/pip-modern-metadata-qfcaca0h/difPy.egg-info/PKG-INFO 2023-03-12T18:15:50,925 writing dependency_links to /tmp/pip-modern-metadata-qfcaca0h/difPy.egg-info/dependency_links.txt 2023-03-12T18:15:50,927 writing requirements to /tmp/pip-modern-metadata-qfcaca0h/difPy.egg-info/requires.txt 2023-03-12T18:15:50,928 writing top-level names to /tmp/pip-modern-metadata-qfcaca0h/difPy.egg-info/top_level.txt 2023-03-12T18:15:50,930 writing manifest file '/tmp/pip-modern-metadata-qfcaca0h/difPy.egg-info/SOURCES.txt' 2023-03-12T18:15:50,953 reading manifest file '/tmp/pip-modern-metadata-qfcaca0h/difPy.egg-info/SOURCES.txt' 2023-03-12T18:15:50,955 adding license file 'LICENSE.txt' 2023-03-12T18:15:50,958 writing manifest file '/tmp/pip-modern-metadata-qfcaca0h/difPy.egg-info/SOURCES.txt' 2023-03-12T18:15:50,959 creating '/tmp/pip-modern-metadata-qfcaca0h/difPy-3.0.8.dist-info' 2023-03-12T18:15:51,137 Preparing metadata (pyproject.toml): finished with status 'done' 2023-03-12T18:15:51,145 Source in /tmp/pip-wheel-0qg9hirf/difpy_4e7b9cda4bff4dc7943443928d9af48f has version 3.0.8, which satisfies requirement difpy==3.0.8 from https://files.pythonhosted.org/packages/d6/5a/2cae5a3585488d5aa5c6ad4ba6c7089756bb88dc272bc0b8ef143e620a1e/difPy-3.0.8.tar.gz 2023-03-12T18:15:51,146 Removed difpy==3.0.8 from https://files.pythonhosted.org/packages/d6/5a/2cae5a3585488d5aa5c6ad4ba6c7089756bb88dc272bc0b8ef143e620a1e/difPy-3.0.8.tar.gz from build tracker '/tmp/pip-build-tracker-ff96j6x8' 2023-03-12T18:15:51,151 Created temporary directory: /tmp/pip-unpack-5xb73acz 2023-03-12T18:15:51,152 Building wheels for collected packages: difpy 2023-03-12T18:15:51,156 Created temporary directory: /tmp/pip-wheel-e3ti3tw7 2023-03-12T18:15:51,157 Destination directory: /tmp/pip-wheel-e3ti3tw7 2023-03-12T18:15:51,159 Building wheel for difpy (pyproject.toml): started 2023-03-12T18:15:51,161 Running command Building wheel for difpy (pyproject.toml) 2023-03-12T18:15:51,739 /tmp/pip-build-env-_yvw6b27/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'readme' defined outside of `pyproject.toml` would be ignored. 2023-03-12T18:15:51,740 !! 2023-03-12T18:15:51,741 ########################################################################## 2023-03-12T18:15:51,741 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-12T18:15:51,741 ########################################################################## 2023-03-12T18:15:51,741 The following seems to be defined outside of `pyproject.toml`: 2023-03-12T18:15:51,742 `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" : 0,\n "px_size" : 50,\n "files_searched" : 1032,\n "matches_found" : {\'duplicates\': 52, \n \'similar\': 0},\n "invalid_files": {"count": 4}}\n```\n\n:new: **[difPy v3.0.8](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.8)** outputs the ``match_count`` of **duplicates** and **similar** images it found.\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=\'duplicates\', px_size=50, move_to=None, \n show_progress=True, show_output=False, delete=False, silent_del=False, logs=False)\n```\n\n:new: Since **[difPy v3.0.8](https://github.com/elisemercury/Duplicate-Image-Finder/releases/tag/v3.0.8)**, the `similarity` parameter accepts `\'duplicates\'` and `\'similar\'` as input options.\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 | `-p` | show_progress | \n| `-Z` | output_directory | `-o` | show_output |\n| `-f`| fast_search | `-mv` | move_to |\n| `-r`| recursive | `-d` | delete |\n| `-s` | similarity | `-sd` | silent_del |\n| `-px` | px_size | `-l` | logs |\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-12T18:15:51,742 According to the spec (see the link below), however, setuptools CANNOT 2023-03-12T18:15:51,742 consider this value unless 'readme' is listed as `dynamic`. 2023-03-12T18:15:51,742 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-12T18:15:51,743 For the time being, `setuptools` will still consider the given value (as a 2023-03-12T18:15:51,743 **transitional** measure), but please note that future releases of setuptools will 2023-03-12T18:15:51,743 follow strictly the standard. 2023-03-12T18:15:51,743 To prevent this warning, you can list 'readme' under `dynamic` or alternatively 2023-03-12T18:15:51,743 remove the `[project]` table from your file and rely entirely on other means of 2023-03-12T18:15:51,743 configuration. 2023-03-12T18:15:51,744 !! 2023-03-12T18:15:51,744 warnings.warn(msg, _WouldIgnoreField) 2023-03-12T18:15:51,744 /tmp/pip-build-env-_yvw6b27/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'license' defined outside of `pyproject.toml` would be ignored. 2023-03-12T18:15:51,744 !! 2023-03-12T18:15:51,745 ########################################################################## 2023-03-12T18:15:51,745 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-12T18:15:51,745 ########################################################################## 2023-03-12T18:15:51,745 The following seems to be defined outside of `pyproject.toml`: 2023-03-12T18:15:51,745 `license = 'MIT'` 2023-03-12T18:15:51,746 According to the spec (see the link below), however, setuptools CANNOT 2023-03-12T18:15:51,746 consider this value unless 'license' is listed as `dynamic`. 2023-03-12T18:15:51,746 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-12T18:15:51,746 For the time being, `setuptools` will still consider the given value (as a 2023-03-12T18:15:51,746 **transitional** measure), but please note that future releases of setuptools will 2023-03-12T18:15:51,746 follow strictly the standard. 2023-03-12T18:15:51,747 To prevent this warning, you can list 'license' under `dynamic` or alternatively 2023-03-12T18:15:51,747 remove the `[project]` table from your file and rely entirely on other means of 2023-03-12T18:15:51,747 configuration. 2023-03-12T18:15:51,747 !! 2023-03-12T18:15:51,748 warnings.warn(msg, _WouldIgnoreField) 2023-03-12T18:15:51,748 /tmp/pip-build-env-_yvw6b27/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'keywords' defined outside of `pyproject.toml` would be ignored. 2023-03-12T18:15:51,748 !! 2023-03-12T18:15:51,748 ########################################################################## 2023-03-12T18:15:51,748 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-12T18:15:51,748 ########################################################################## 2023-03-12T18:15:51,749 The following seems to be defined outside of `pyproject.toml`: 2023-03-12T18:15:51,749 `keywords = ['duplicate', 'image', 'finder', 'similarity', 'pictures']` 2023-03-12T18:15:51,749 According to the spec (see the link below), however, setuptools CANNOT 2023-03-12T18:15:51,749 consider this value unless 'keywords' is listed as `dynamic`. 2023-03-12T18:15:51,750 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-12T18:15:51,750 For the time being, `setuptools` will still consider the given value (as a 2023-03-12T18:15:51,750 **transitional** measure), but please note that future releases of setuptools will 2023-03-12T18:15:51,750 follow strictly the standard. 2023-03-12T18:15:51,750 To prevent this warning, you can list 'keywords' under `dynamic` or alternatively 2023-03-12T18:15:51,750 remove the `[project]` table from your file and rely entirely on other means of 2023-03-12T18:15:51,751 configuration. 2023-03-12T18:15:51,751 !! 2023-03-12T18:15:51,751 warnings.warn(msg, _WouldIgnoreField) 2023-03-12T18:15:51,751 /tmp/pip-build-env-_yvw6b27/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'classifiers' defined outside of `pyproject.toml` would be ignored. 2023-03-12T18:15:51,751 !! 2023-03-12T18:15:51,752 ########################################################################## 2023-03-12T18:15:51,752 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-12T18:15:51,752 ########################################################################## 2023-03-12T18:15:51,752 The following seems to be defined outside of `pyproject.toml`: 2023-03-12T18:15:51,753 `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-12T18:15:51,753 According to the spec (see the link below), however, setuptools CANNOT 2023-03-12T18:15:51,753 consider this value unless 'classifiers' is listed as `dynamic`. 2023-03-12T18:15:51,753 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-12T18:15:51,753 For the time being, `setuptools` will still consider the given value (as a 2023-03-12T18:15:51,754 **transitional** measure), but please note that future releases of setuptools will 2023-03-12T18:15:51,754 follow strictly the standard. 2023-03-12T18:15:51,754 To prevent this warning, you can list 'classifiers' under `dynamic` or alternatively 2023-03-12T18:15:51,754 remove the `[project]` table from your file and rely entirely on other means of 2023-03-12T18:15:51,754 configuration. 2023-03-12T18:15:51,755 !! 2023-03-12T18:15:51,755 warnings.warn(msg, _WouldIgnoreField) 2023-03-12T18:15:51,755 /tmp/pip-build-env-_yvw6b27/overlay/lib/python3.9/site-packages/setuptools/config/_apply_pyprojecttoml.py:103: _WouldIgnoreField: 'dependencies' defined outside of `pyproject.toml` would be ignored. 2023-03-12T18:15:51,755 !! 2023-03-12T18:15:51,755 ########################################################################## 2023-03-12T18:15:51,756 # configuration would be ignored/result in error due to `pyproject.toml` # 2023-03-12T18:15:51,756 ########################################################################## 2023-03-12T18:15:51,756 The following seems to be defined outside of `pyproject.toml`: 2023-03-12T18:15:51,756 `dependencies = ['matplotlib', 'numpy', 'Pillow']` 2023-03-12T18:15:51,756 According to the spec (see the link below), however, setuptools CANNOT 2023-03-12T18:15:51,757 consider this value unless 'dependencies' is listed as `dynamic`. 2023-03-12T18:15:51,757 https://packaging.python.org/en/latest/specifications/declaring-project-metadata/ 2023-03-12T18:15:51,757 For the time being, `setuptools` will still consider the given value (as a 2023-03-12T18:15:51,757 **transitional** measure), but please note that future releases of setuptools will 2023-03-12T18:15:51,757 follow strictly the standard. 2023-03-12T18:15:51,757 To prevent this warning, you can list 'dependencies' under `dynamic` or alternatively 2023-03-12T18:15:51,758 remove the `[project]` table from your file and rely entirely on other means of 2023-03-12T18:15:51,758 configuration. 2023-03-12T18:15:51,758 !! 2023-03-12T18:15:51,758 warnings.warn(msg, _WouldIgnoreField) 2023-03-12T18:15:52,049 running bdist_wheel 2023-03-12T18:15:52,075 running build 2023-03-12T18:15:52,075 running build_py 2023-03-12T18:15:52,084 creating build 2023-03-12T18:15:52,084 creating build/lib 2023-03-12T18:15:52,085 creating build/lib/difPy 2023-03-12T18:15:52,086 copying difPy/__init__.py -> build/lib/difPy 2023-03-12T18:15:52,089 copying difPy/dif.py -> build/lib/difPy 2023-03-12T18:15:52,092 copying difPy/version.py -> build/lib/difPy 2023-03-12T18:15:52,094 running egg_info 2023-03-12T18:15:52,109 writing difPy.egg-info/PKG-INFO 2023-03-12T18:15:52,111 writing dependency_links to difPy.egg-info/dependency_links.txt 2023-03-12T18:15:52,113 writing requirements to difPy.egg-info/requires.txt 2023-03-12T18:15:52,114 writing top-level names to difPy.egg-info/top_level.txt 2023-03-12T18:15:52,125 reading manifest file 'difPy.egg-info/SOURCES.txt' 2023-03-12T18:15:52,126 adding license file 'LICENSE.txt' 2023-03-12T18:15:52,129 writing manifest file 'difPy.egg-info/SOURCES.txt' 2023-03-12T18:15:52,144 installing to build/bdist.linux-armv7l/wheel 2023-03-12T18:15:52,144 running install 2023-03-12T18:15:52,169 running install_lib 2023-03-12T18:15:52,177 creating build/bdist.linux-armv7l 2023-03-12T18:15:52,177 creating build/bdist.linux-armv7l/wheel 2023-03-12T18:15:52,179 creating build/bdist.linux-armv7l/wheel/difPy 2023-03-12T18:15:52,180 copying build/lib/difPy/__init__.py -> build/bdist.linux-armv7l/wheel/difPy 2023-03-12T18:15:52,182 copying build/lib/difPy/dif.py -> build/bdist.linux-armv7l/wheel/difPy 2023-03-12T18:15:52,185 copying build/lib/difPy/version.py -> build/bdist.linux-armv7l/wheel/difPy 2023-03-12T18:15:52,186 running install_egg_info 2023-03-12T18:15:52,194 Copying difPy.egg-info to build/bdist.linux-armv7l/wheel/difPy-3.0.8-py3.9.egg-info 2023-03-12T18:15:52,205 running install_scripts 2023-03-12T18:15:52,221 creating build/bdist.linux-armv7l/wheel/difPy-3.0.8.dist-info/WHEEL 2023-03-12T18:15:52,224 creating '/tmp/pip-wheel-e3ti3tw7/.tmp-0jd308_g/difPy-3.0.8-py3-none-any.whl' and adding 'build/bdist.linux-armv7l/wheel' to it 2023-03-12T18:15:52,226 adding 'difPy/__init__.py' 2023-03-12T18:15:52,230 adding 'difPy/dif.py' 2023-03-12T18:15:52,231 adding 'difPy/version.py' 2023-03-12T18:15:52,234 adding 'difPy-3.0.8.dist-info/LICENSE.txt' 2023-03-12T18:15:52,235 adding 'difPy-3.0.8.dist-info/METADATA' 2023-03-12T18:15:52,236 adding 'difPy-3.0.8.dist-info/WHEEL' 2023-03-12T18:15:52,237 adding 'difPy-3.0.8.dist-info/top_level.txt' 2023-03-12T18:15:52,238 adding 'difPy-3.0.8.dist-info/RECORD' 2023-03-12T18:15:52,239 removing build/bdist.linux-armv7l/wheel 2023-03-12T18:15:52,346 Building wheel for difpy (pyproject.toml): finished with status 'done' 2023-03-12T18:15:52,352 Created wheel for difpy: filename=difPy-3.0.8-py3-none-any.whl size=11643 sha256=d7d546bf49e6609fd2ba5559bcb84c1fe420ad25c95b6c32408bcea439f80448 2023-03-12T18:15:52,353 Stored in directory: /tmp/pip-ephem-wheel-cache-bc2ti3ii/wheels/e3/45/96/7c1d11b473917c82b771b7110123468cfa19e2fb5af1e76feb 2023-03-12T18:15:52,365 Successfully built difpy 2023-03-12T18:15:52,369 Removed build tracker: '/tmp/pip-build-tracker-ff96j6x8'