Skip to content

Drop Python 3.11 support (require >=3.12)#81

Merged
Marius1311 merged 2 commits into
mainfrom
drop-py311
Jun 9, 2026
Merged

Drop Python 3.11 support (require >=3.12)#81
Marius1311 merged 2 commits into
mainfrom
drop-py311

Conversation

@Marius1311

Copy link
Copy Markdown
Member

Summary

Bump CellMapper's minimum Python from 3.11 to 3.12. cellrank requires Python ≥3.12 since 2.1.0, so our requires-python = ">=3.11" floor forced uv's universal lock to hold the entire dependency graph — including the local kernel venv — back to the last cellrank that still supported 3.11 (2.0.7). Dropping 3.11 unpins the tutorials extra to cellrank 2.3.x (and modernizes scanpy → 1.12, scvi-tools → 1.4.3, etc.).

Behavior Or Invariants Changed

  • Minimum Python is now 3.12. requires-python = ">=3.12", the :: 3.11 trove classifier is removed, and the hatch-test matrix moves from 3.11, 3.14 to 3.12, 3.14. No code/API changes.

Tests Run

  • uv lock --dry-run with requires-python = ">=3.12" → resolves cleanly (302 packages), cellrank moves off 2.0.7. The same dry-run on the old >=3.11 floor with a cellrank>=2.3 probe fails with "cellrank==2.3.0 depends on Python>=3.12", confirming the root cause.
  • pre-commit run --files pyproject.toml README.md AGENTS.md CHANGELOG.md → passes (pyproject-fmt etc.).
  • Full hatch test matrix not run locally (CI will exercise 3.12/3.14).

Reviewer Focus

pyproject.tomlrequires-python, classifiers, and the hatch-test matrix. Doc touch-ups in README.md and AGENTS.md. No ruff/mypy target-version pins exist (they infer from requires-python), so nothing else needed updating.

Context

This is step 1 of delegating the pyGPCCA fast backend to CellRank. Once a cellrank release ships the mpi4py-free [petsc] extra (scverse/cellrank#1362, merged to main), a follow-up will replace the hardcoded gpcca-fast group (petsc petsc4py slepc slepc4py) with cellrank[petsc]>=<that release>. That follow-up is blocked on the release and is intentionally not part of this PR.

Open Questions Or Follow-Ups

  • Changelog entry references {pr} with a placeholder that will be updated to this PR's number.
  • 3.11 is dropped for the whole package, not just the tutorials extra — intentional, per maintainer decision, and consistent with the broader scverse ecosystem moving to ≥3.12.

🤖 Generated with Claude Code

Marius1311 and others added 2 commits June 9, 2026 17:32
cellrank requires Python >=3.12 since 2.1.0, so CellMapper's >=3.11 floor
forced uv's universal lock to pin the whole graph (including the kernel
venv) to the old cellrank 2.0.7 — the last release supporting 3.11.

Bump requires-python to >=3.12, drop the 3.11 trove classifier, and move
the hatch-test matrix to 3.12/3.14. This unpins the tutorials extra to
cellrank 2.3.x (and modernizes scanpy/scvi-tools alongside) and is the
prerequisite for delegating the petsc backend to `cellrank[petsc]` once a
cellrank release ships an mpi4py-free extra.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@codecov

codecov Bot commented Jun 9, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.37%. Comparing base (91ebb3c) to head (ee2f3ba).

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #81   +/-   ##
=======================================
  Coverage   86.37%   86.37%           
=======================================
  Files          13       13           
  Lines        1387     1387           
=======================================
  Hits         1198     1198           
  Misses        189      189           
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@Marius1311 Marius1311 merged commit 6200344 into main Jun 9, 2026
10 of 14 checks passed
@Marius1311 Marius1311 deleted the drop-py311 branch June 9, 2026 16:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant