From cf62f7f89a6a96321b07e1646b0d757848e10ea4 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Tue, 21 May 2024 07:48:46 -0400 Subject: [PATCH 1/3] Add Pyodide compatibility We are changing our wheel platform tag to pyodide_2024_0 so we need to teach packaging to map Emscripten platform to this. --- src/packaging/tags.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/packaging/tags.py b/src/packaging/tags.py index 6667d299..1c6d07aa 100644 --- a/src/packaging/tags.py +++ b/src/packaging/tags.py @@ -502,6 +502,13 @@ def _linux_platforms(is_32bit: bool = _32_BIT_INTERPRETER) -> Iterator[str]: yield f"linux_{arch}" +def _emscripten_platforms() -> Iterator[str]: + pyodide_abi_version = sysconfig.get_config_var("PYODIDE_ABI_VERSION") + if pyodide_abi_version: + yield f"pyodide_{pyodide_abi_version}_wasm32" + yield from _generic_platforms() + + def _generic_platforms() -> Iterator[str]: yield _normalize_string(sysconfig.get_platform()) @@ -514,6 +521,8 @@ def platform_tags() -> Iterator[str]: return mac_platforms() elif platform.system() == "Linux": return _linux_platforms() + elif platform.system() == "Emscripten": + return _emscripten_platforms() else: return _generic_platforms() From 5d5b76dc9a9faa49d36768d4abdcf667a291f888 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Mon, 17 Jun 2024 16:22:44 -0700 Subject: [PATCH 2/3] Add tests --- tests/test_tags.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tests/test_tags.py b/tests/test_tags.py index 9821fc25..065b98b6 100644 --- a/tests/test_tags.py +++ b/tests/test_tags.py @@ -1364,6 +1364,44 @@ def test_cpython_first_none_any_tag(self, monkeypatch): interpreter = f"cp{tags.interpreter_version()}" assert tag == tags.Tag(interpreter, "none", "any") + def test_emscripten(self, mock_interpreter_name, monkeypatch): + expected_interpreter = "cp" + tags._version_nodot(sys.version_info[:2]) + if mock_interpreter_name("CPython"): + monkeypatch.setattr( + tags, "_cpython_abis", lambda _1, _2: [expected_interpreter] + ) + monkeypatch.setattr(platform, "system", lambda: "Emscripten") + monkeypatch.setattr( + sysconfig, "get_platform", lambda: "emscripten-3.1.58-wasm32" + ) + assert list(tags.platform_tags()) == ["emscripten_3_1_58_wasm32"] + result = list(tags.sys_tags()) + assert result[0] == tags.Tag( + expected_interpreter, "cp312", "emscripten_3_1_58_wasm32" + ) + + def test_pyodide(self, mock_interpreter_name, monkeypatch): + expected_interpreter = "cp" + tags._version_nodot(sys.version_info[:2]) + monkeypatch.setitem( + sysconfig.get_config_vars(), "PYODIDE_ABI_VERSION", "2024_0" + ) + if mock_interpreter_name("CPython"): + monkeypatch.setattr( + tags, "_cpython_abis", lambda _1, _2: [expected_interpreter] + ) + monkeypatch.setattr(platform, "system", lambda: "Emscripten") + monkeypatch.setattr( + sysconfig, "get_platform", lambda: "emscripten-3.1.58-wasm32" + ) + assert list(tags.platform_tags()) == [ + "pyodide_2024_0_wasm32", + "emscripten_3_1_58_wasm32", + ] + result = list(tags.sys_tags()) + assert result[0] == tags.Tag( + expected_interpreter, "cp312", "pyodide_2024_0_wasm32" + ) + class TestBitness: def teardown_method(self): From ee80f3a4a0bab93b0cbc082e44c74e98aceaff22 Mon Sep 17 00:00:00 2001 From: Hood Chatham Date: Wed, 19 Mar 2025 15:25:56 +0100 Subject: [PATCH 3/3] Fix tests --- tests/test_tags.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_tags.py b/tests/test_tags.py index dd19b0a9..f984bb74 100644 --- a/tests/test_tags.py +++ b/tests/test_tags.py @@ -1478,7 +1478,7 @@ def test_emscripten(self, mock_interpreter_name, monkeypatch): assert list(tags.platform_tags()) == ["emscripten_3_1_58_wasm32"] result = list(tags.sys_tags()) assert result[0] == tags.Tag( - expected_interpreter, "cp312", "emscripten_3_1_58_wasm32" + expected_interpreter, expected_interpreter, "emscripten_3_1_58_wasm32" ) def test_pyodide(self, mock_interpreter_name, monkeypatch): @@ -1500,7 +1500,7 @@ def test_pyodide(self, mock_interpreter_name, monkeypatch): ] result = list(tags.sys_tags()) assert result[0] == tags.Tag( - expected_interpreter, "cp312", "pyodide_2024_0_wasm32" + expected_interpreter, expected_interpreter, "pyodide_2024_0_wasm32" )