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 :
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