From 076758e2020501a105ca5905fb05df54430a1d98 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 30 Jul 2025 12:59:03 +0800 Subject: [PATCH 1/5] Restore pyroma test for iOS. --- .ci/requirements-cibw.txt | 2 +- Tests/test_pyroma.py | 24 +++++++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/.ci/requirements-cibw.txt b/.ci/requirements-cibw.txt index e1eb52eb8ae..823671828f7 100644 --- a/.ci/requirements-cibw.txt +++ b/.ci/requirements-cibw.txt @@ -1 +1 @@ -cibuildwheel==3.0.1 +cibuildwheel==3.1.2 diff --git a/Tests/test_pyroma.py b/Tests/test_pyroma.py index c2f7fe22ecb..5fc246f7270 100644 --- a/Tests/test_pyroma.py +++ b/Tests/test_pyroma.py @@ -1,5 +1,7 @@ from __future__ import annotations +from importlib.metadata import metadata + import pytest from PIL import __version__ @@ -7,9 +9,29 @@ pyroma = pytest.importorskip("pyroma", reason="Pyroma not installed") +def map_metadata_keys(metadata): + "Convert installed wheel metadata into canonical Core Metadata 2.4 format." + # This was a utility method in pyroma 4.3.3; it was removed in 5.0 + # This implementation is constructed from the relevant logic from + # PyRoma 5.0's `build_metadata()` implementation. + + data = {} + for key in set(metadata.keys()): + value = metadata.get_all(key) + key = pyroma.projectdata.normalize(key) + + if len(value) == 1: + value = value[0] + if value.strip() == "UNKNOWN": + continue + + data[key] = value + return data + + def test_pyroma() -> None: # Arrange - data = pyroma.projectdata.get_data(".") + data = map_metadata_keys(metadata("Pillow")) # Act rating = pyroma.ratings.rate(data) From dfef37b65eb9d20fdd625ee7879a16afa88cb4db Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 30 Jul 2025 15:01:59 +0800 Subject: [PATCH 2/5] Correct error on test teardown. --- Tests/test_image_access.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Tests/test_image_access.py b/Tests/test_image_access.py index a847264d27e..69e89700cf1 100644 --- a/Tests/test_image_access.py +++ b/Tests/test_image_access.py @@ -317,4 +317,8 @@ def test_embeddable(self) -> None: assert process.returncode == 0 def teardown_method(self) -> None: - os.remove("embed_pil.c") + try: + os.remove("embed_pil.c") + except FileNotFoundError: + # If the test was skipped or failed, the file won't exist, + pass From 111fd56e6761035bf6b544c02360e8c9678bfd0d Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Wed, 30 Jul 2025 19:07:24 +1000 Subject: [PATCH 3/5] Require pyroma >= 5 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4e8623118ba..2554874c4fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,7 +67,7 @@ optional-dependencies.tests = [ "markdown2", "olefile", "packaging", - "pyroma", + "pyroma>=5", "pytest", "pytest-cov", "pytest-timeout", From dc714892c921125cdd7504a0cd775418e820df9a Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Thu, 31 Jul 2025 05:29:22 +0800 Subject: [PATCH 4/5] Minor cleanups. --- Tests/test_image_access.py | 2 +- Tests/test_pyroma.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Tests/test_image_access.py b/Tests/test_image_access.py index 69e89700cf1..07c12594a8c 100644 --- a/Tests/test_image_access.py +++ b/Tests/test_image_access.py @@ -320,5 +320,5 @@ def teardown_method(self) -> None: try: os.remove("embed_pil.c") except FileNotFoundError: - # If the test was skipped or failed, the file won't exist, + # If the test was skipped or failed, the file won't exist pass diff --git a/Tests/test_pyroma.py b/Tests/test_pyroma.py index 5fc246f7270..4f54ecbe5ca 100644 --- a/Tests/test_pyroma.py +++ b/Tests/test_pyroma.py @@ -10,10 +10,10 @@ def map_metadata_keys(metadata): - "Convert installed wheel metadata into canonical Core Metadata 2.4 format." - # This was a utility method in pyroma 4.3.3; it was removed in 5.0 + # Convert installed wheel metadata into canonical Core Metadata 2.4 format. + # This was a utility method in pyroma 4.3.3; it was removed in 5.0. # This implementation is constructed from the relevant logic from - # PyRoma 5.0's `build_metadata()` implementation. + # Pyroma 5.0's `build_metadata()` implementation. data = {} for key in set(metadata.keys()): From 8713823ef03378468efad15fb9db446df346cc43 Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Thu, 31 Jul 2025 06:53:27 +0800 Subject: [PATCH 5/5] Add note about upstream submission. --- Tests/test_pyroma.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Tests/test_pyroma.py b/Tests/test_pyroma.py index 4f54ecbe5ca..35f3fd076da 100644 --- a/Tests/test_pyroma.py +++ b/Tests/test_pyroma.py @@ -13,8 +13,9 @@ def map_metadata_keys(metadata): # Convert installed wheel metadata into canonical Core Metadata 2.4 format. # This was a utility method in pyroma 4.3.3; it was removed in 5.0. # This implementation is constructed from the relevant logic from - # Pyroma 5.0's `build_metadata()` implementation. - + # Pyroma 5.0's `build_metadata()` implementation. This has been submitted + # upstream to Pyroma as https://github.com/regebro/pyroma/pull/116, + # so it may be possible to simplify this test in future. data = {} for key in set(metadata.keys()): value = metadata.get_all(key)