feat: pyemscripten platform tag (PEP 783), 314.0a1, pyodide-eol flag, and maintenance updates (#2812)
* Use `pyodide config get emscripten_dir` * Update constraints * Updates for `pyemscripten` platform tag * Weird constraints stuff... * Revert "Weird constraints stuff..." This reverts commit 4bd785de872269c0b27362ee800f17288b2b4789. * Add some special constraints for pyodide * Wheel pyemscripten collision * Put delocate back in constraints (not needed tho) * Drop Pyodide 0.27.7 (cp312-pyodide_wasm32) * Add Pyodide 314.0.0a1 (cp314-pyodide_wasm32) * Delete no-longer-needed Pyodide 312 constraints * Update Pyodide 313 and 314 constraints * Add back prerelease stuff and update tests * Fix `test_pyodide_on_windows` * Update and fix tests some more * Also enable pyodide-prerelease in GHA sample build * Update tests yet again (`SINGLE_PYTHON_VERSION` changes) * Add a Pyodide-specific maintenance guide * Add suggestions from Hood and Gyeongjae Co-Authored-By: Hood Chatham <roberthoodchatham@gmail.com> Co-Authored-By: Gyeongjae Choi <def6488@gmail.com> * Add "Last updated: May 2026" to Pyodide document * Add a Pyodide EOL filter * Fix typo * Update maintenance docs about EoL Pyodide * Add Pyodide 312 constraints back * Update Pyodide 313 and 314 constraints * Remove "experimental" note about Pyodide * Remove another experimental Pyodide sentence * Add docs about the `pyodide-eol` enable option --------- Co-authored-by: Hood Chatham <roberthoodchatham@gmail.com> Co-authored-by: Gyeongjae Choi <def6488@gmail.com> Co-authored-by: Henry Schreiner <henryfs@princeton.edu>
This commit is contained in:
co-authored by
Hood Chatham
Gyeongjae Choi
Henry Schreiner
parent
542335fb4a
commit
d2c0e59833
@@ -77,13 +77,13 @@ def get_versions_from_constraint_file(constraint_file: Path) -> dict[str, str]:
|
||||
return dict(re.findall(VERSION_REGEX, constraint_file_text))
|
||||
|
||||
|
||||
@pytest.mark.parametrize("python_version", ["3.8", "3.12"])
|
||||
@pytest.mark.parametrize("python_version", ["3.8", "3.13"])
|
||||
def test_pinned_versions(
|
||||
tmp_path: Path, python_version: str, build_frontend_env_nouv: dict[str, str]
|
||||
) -> None:
|
||||
if utils.get_platform() == "linux":
|
||||
pytest.skip("linux doesn't pin individual tool versions, it pins manylinux images instead")
|
||||
if python_version != "3.12" and utils.get_platform() == "pyodide":
|
||||
if python_version != "3.13" and utils.get_platform() == "pyodide":
|
||||
pytest.skip(f"pyodide does not support Python {python_version}")
|
||||
if (
|
||||
python_version == "3.8"
|
||||
@@ -124,7 +124,7 @@ def test_pinned_versions(
|
||||
expected_wheels = [
|
||||
w
|
||||
for w in utils.expected_wheels("spam", "0.1.0")
|
||||
if f"-cp{version_no_dot}" in w or f"-pp{version_no_dot}" in w
|
||||
if f"-cp{version_no_dot}-cp{version_no_dot}-" in w or f"-pp{version_no_dot}-" in w
|
||||
]
|
||||
|
||||
assert set(actual_wheels) == set(expected_wheels)
|
||||
@@ -140,11 +140,20 @@ def test_dependency_constraints(
|
||||
project_dir = tmp_path / "project"
|
||||
test_projects.new_c_project().generate(project_dir)
|
||||
|
||||
tool_versions = {
|
||||
"pip": "23.1.2",
|
||||
"build": "1.2.2",
|
||||
"delocate": "0.10.3",
|
||||
}
|
||||
if utils.get_platform() == "pyodide":
|
||||
# pyodide-build 0.34+ requires build~=1.4.0, so we must use a
|
||||
# compatible version here. delocate is macOS-only and not used on pyodide.
|
||||
tool_versions = {
|
||||
"pip": "23.1.2",
|
||||
"build": "1.4.2",
|
||||
"delocate": "0.10.3",
|
||||
}
|
||||
else:
|
||||
tool_versions = {
|
||||
"pip": "23.1.2",
|
||||
"build": "1.2.2",
|
||||
"delocate": "0.10.3",
|
||||
}
|
||||
|
||||
if method == "file":
|
||||
constraints_file = tmp_path / "constraints file.txt"
|
||||
|
||||
Reference in New Issue
Block a user