Context
feat/cog (PR #243) ships wheels for Python 3.11, 3.12, 3.13, and 3.14 — the same set the tests.yml
matrix uses. CPython 3.15 is scheduled for release in October 2026; once that ships and conda-forge produces
gdal builds for it (py3.15 selector), pyramids should add it to the matrix.
Status: reactive — fires when CPython 3.15 + conda-forge gdal-py3.15 are both available. No work needed before
then. This issue exists as a tracker so the bump doesn't get forgotten when 3.15 ships.
Related: #331 (master bundling doc), PR #243.
Problem / Current Behaviour
[tool.cibuildwheel].build in pyproject.toml is:
build = ["cp311-*", "cp312-*", "cp313-*", "cp314-*"]
requires-python = ">= 3.11" in [project] has no upper bound, so users on a future Python 3.15 will:
pip install pyramids-gis → no wheel matches Python 3.15 ABI → falls back to sdist.
- sdist build requires GDAL Python bindings to be compilable against the user's Python — needs a system GDAL or a
working build chain.
The package will still resolve, just less cleanly than the wheel install for users on 3.11-3.14 today.
Affected locations
| File |
Symbol |
Notes |
pyproject.toml |
[tool.cibuildwheel].build |
add "cp315-*" |
.github/workflows/build-wheels.yml |
test-wheels.strategy.matrix.python-version |
add "3.15" |
.github/workflows/tests.yml |
main-package.matrix.python-version |
add "py315" (or "3.15", matching existing rows) |
.github/workflows/tests.yml |
extras-package.matrix.python-version |
same |
pyproject.toml |
[tool.pixi.environments] |
add py315 = ["py315"] + feature env |
Steps to Reproduce / Motivation Example
# When Python 3.15 ships (Oct 2026 per PEP schedule):
pyenv install 3.15.0
pyenv local 3.15.0
pip install pyramids-gis
# → falls back to sdist; needs system GDAL.
After this bump:
pip install pyramids-gis
# → resolves cp315-cp315-manylinux_2_39_x86_64.whl directly.
Proposed Solution
Single PR with four small edits:
# pyproject.toml
-build = ["cp311-*", "cp312-*", "cp313-*", "cp314-*"]
+build = ["cp311-*", "cp312-*", "cp313-*", "cp314-*", "cp315-*"]
# .github/workflows/build-wheels.yml
test-wheels:
strategy:
matrix:
- python-version: ["3.11", "3.12", "3.13", "3.14"]
+ python-version: ["3.11", "3.12", "3.13", "3.14", "3.15"]
# .github/workflows/tests.yml — mirror the matrix bumps
# pyproject.toml — pixi env for local 3.15 dev
+[tool.pixi.feature.py315.dependencies]
+python = "3.15.*"
+
+[tool.pixi.environments]
+py315 = ["py315"]
Out of Scope
- Removing Python 3.11 support. Decoupled from this bump — 3.11 stays in security-fixes until Oct 2027 per the CPython
release schedule. When 3.11 hits EOL, that's a separate chore(packaging): drop py311 wheels PR.
- Pre-emptive 3.15 testing via
actions/setup-python's pre-release builds. Not worth it — wait for the GA release so
conda-forge gdal matches.
- Adding free-threaded 3.15t. Currently excluded by
[tool.cibuildwheel].skip = ["...", "cp314t-*"]; the same skip
would extend to cp315t-* until conda-forge ships free-threaded gdal-py3.15t, which is unlikely in the first 3.15
release cycle.
Effort Estimate
Size: XS
Rationale: ~15 minutes of YAML edits + one CI run to verify the 3.15 wheel builds and tests cleanly.
Definition of Done
Context
feat/cog(PR #243) ships wheels for Python 3.11, 3.12, 3.13, and 3.14 — the same set thetests.ymlmatrix uses. CPython 3.15 is scheduled for release in October 2026; once that ships and conda-forge produces
gdalbuilds for it (py3.15selector), pyramids should add it to the matrix.Status: reactive — fires when CPython 3.15 + conda-forge
gdal-py3.15are both available. No work needed beforethen. This issue exists as a tracker so the bump doesn't get forgotten when 3.15 ships.
Related: #331 (master bundling doc), PR #243.
Problem / Current Behaviour
[tool.cibuildwheel].buildinpyproject.tomlis:requires-python = ">= 3.11"in[project]has no upper bound, so users on a future Python 3.15 will:pip install pyramids-gis→ no wheel matches Python 3.15 ABI → falls back to sdist.working build chain.
The package will still resolve, just less cleanly than the wheel install for users on 3.11-3.14 today.
Affected locations
pyproject.toml[tool.cibuildwheel].build"cp315-*".github/workflows/build-wheels.ymltest-wheels.strategy.matrix.python-version"3.15".github/workflows/tests.ymlmain-package.matrix.python-version"py315"(or"3.15", matching existing rows).github/workflows/tests.ymlextras-package.matrix.python-versionpyproject.toml[tool.pixi.environments]py315 = ["py315"]+ feature envSteps to Reproduce / Motivation Example
After this bump:
pip install pyramids-gis # → resolves cp315-cp315-manylinux_2_39_x86_64.whl directly.Proposed Solution
Single PR with four small edits:
# .github/workflows/build-wheels.yml test-wheels: strategy: matrix: - python-version: ["3.11", "3.12", "3.13", "3.14"] + python-version: ["3.11", "3.12", "3.13", "3.14", "3.15"]Out of Scope
release schedule. When 3.11 hits EOL, that's a separate
chore(packaging): drop py311 wheelsPR.actions/setup-python's pre-release builds. Not worth it — wait for the GA release soconda-forge gdal matches.
[tool.cibuildwheel].skip = ["...", "cp314t-*"]; the same skipwould extend to
cp315t-*until conda-forge ships free-threadedgdal-py3.15t, which is unlikely in the first 3.15release cycle.
Effort Estimate
Size:
XSRationale: ~15 minutes of YAML edits + one CI run to verify the 3.15 wheel builds and tests cleanly.
Definition of Done
pixi search gdal -c conda-forgeshowspy315builds available.[tool.cibuildwheel].buildincludes"cp315-*".build-wheels.ymlandtests.ymlmatrices include"3.15".pyproject.tomlhas apy315pixi env.pyramids_gis-*-cp315-cp315-*.whlbuilds and tests pass for all 5 platforms.docs/installation.mdupdated to mention 3.15 support.