Skip to content

Commit 90e5553

Browse files
committed
feat: include Python 3.15 in EndKeep compatibility matrix
1 parent f84b99c commit 90e5553

1 file changed

Lines changed: 33 additions & 9 deletions

File tree

‎.github/workflows/compatibility.yml‎

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@ jobs:
2424
- { os: ubuntu-24.04, python: '3.12', wheel: cp312-manylinux_x86_64 }
2525
- { os: ubuntu-24.04, python: '3.13', wheel: cp313-manylinux_x86_64 }
2626
- { os: ubuntu-24.04, python: '3.14', wheel: '' }
27+
- { os: ubuntu-24.04, python: '3.15', wheel: cp315-manylinux_x86_64 }
2728
- { os: windows-2025, python: '3.12', wheel: cp312-win_amd64 }
2829
- { os: windows-2025, python: '3.13', wheel: cp313-win_amd64 }
2930
- { os: windows-2025, python: '3.14', wheel: '' }
31+
- { os: windows-2025, python: '3.15', wheel: cp315-win_amd64 }
3032
defaults:
3133
run:
3234
shell: bash
@@ -59,13 +61,14 @@ jobs:
5961
PY
6062
cp .github/scripts/amulet_leveldb_smoke.py amulet-src/tests/test_backport_smoke.py
6163
git -C amulet-src diff --check
62-
- name: Setup Python
64+
- name: Setup host Python
65+
if: matrix.python != '3.15'
6366
uses: actions/setup-python@v6
6467
with:
6568
python-version: ${{ matrix.python }}
6669
- name: Install cibuildwheel
6770
if: matrix.python != '3.14'
68-
run: python -m pip install 'cibuildwheel~=4.1'
71+
run: python -m pip install 'cibuildwheel==4.2.0'
6972
- name: Build and test Amulet wheel
7073
if: matrix.python != '3.14'
7174
env:
@@ -81,6 +84,18 @@ jobs:
8184
uses: astral-sh/setup-uv@v7
8285
with:
8386
enable-cache: true
87+
- name: Download exact Endstone CPython 3.15 Wheel
88+
if: matrix.python == '3.15'
89+
uses: actions/download-artifact@v8
90+
with:
91+
repository: EndstoneMC/endstone
92+
run-id: 38045137884
93+
github-token: ${{ github.token }}
94+
pattern: endstone-*-cp315-cp315-*.whl
95+
path: endstone-dist
96+
merge-multiple: true
97+
skip-decompress: true
98+
8499
- name: Test installed EndKeep with matched Amulet
85100
run: |
86101
uv venv .venv --python '${{ matrix.python }}'
@@ -89,15 +104,24 @@ jobs:
89104
else
90105
PYTHON=.venv/bin/python
91106
fi
107+
if [[ "${{ matrix.python }}" == "3.15" ]]; then
108+
if [[ "${{ runner.os }}" == "Windows" ]]; then
109+
ENDSTONE_WHEEL="$(find endstone-dist -name '*cp315*win_amd64.whl' -print -quit)"
110+
else
111+
ENDSTONE_WHEEL="$(find endstone-dist -name '*cp315*manylinux*.whl' -print -quit)"
112+
fi
113+
test -n "$ENDSTONE_WHEEL"
114+
uv pip install --python "$PYTHON" "$ENDSTONE_WHEEL"
115+
fi
92116
# Fresh dependency resolution: do NOT seed the local Amulet build.
93-
# This must fetch the exact published GitHub Release Wheel on 3.12/3.13.
117+
# This must fetch the exact published GitHub Release Wheel on 3.12/3.13/3.15.
94118
uv pip install --python "$PYTHON" -e '.[dev]'
95119
"$PYTHON" - <<'PY'
96120
from importlib.metadata import distribution
97121
from packaging.requirements import Requirement
98122
requires = distribution("endstone-endkeep").requires or []
99123
amulet = [Requirement(req) for req in requires if Requirement(req).name == "amulet-leveldb"]
100-
assert len(amulet) == 5, [str(req) for req in amulet]
124+
assert len(amulet) == 7, [str(req) for req in amulet]
101125
print("Packaged Amulet selectors:", *amulet, sep="\\n")
102126
PY
103127
uv pip check --python "$PYTHON"
@@ -118,11 +142,11 @@ jobs:
118142
retention-days: 7
119143

120144
verified-backports:
121-
name: Collect verified CPython 3.12/3.13 Wheels
145+
name: Collect verified compatibility Wheels
122146
needs: full-matrix
123147
runs-on: ubuntu-24.04
124148
steps:
125-
- name: Download four tested wheel artifacts
149+
- name: Download tested wheel artifacts
126150
uses: actions/download-artifact@v4
127151
with:
128152
pattern: amulet-compat-*
@@ -138,8 +162,8 @@ jobs:
138162
139163
root = Path("dist")
140164
wheels = sorted(root.glob("*.whl"))
141-
assert len(wheels) == 4, [p.name for p in wheels]
142-
for abi in ("cp312", "cp313"):
165+
assert len(wheels) == 6, [p.name for p in wheels]
166+
for abi in ("cp312", "cp313", "cp315"):
143167
for platform in ("manylinux_", "win_amd64"):
144168
matches = [
145169
p for p in wheels
@@ -164,7 +188,7 @@ jobs:
164188
- name: Upload verified wheel set for review (not a GitHub Release)
165189
uses: actions/upload-artifact@v4
166190
with:
167-
name: amulet-backports-verified-four-wheels
191+
name: amulet-backports-verified-six-wheels
168192
path: |
169193
dist/*.whl
170194
dist/SHA256SUMS

0 commit comments

Comments
 (0)