Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ and this project adheres to [Semantic Versioning][].

### Changed
- Dropped Python 3.11 support; the minimum supported version is now Python 3.12, aligning with `cellrank` (≥2.1 requires Python ≥3.12) and unpinning the `tutorials` extra from the old `cellrank` 2.0.7 {pr}`81`
- The `gpcca-fast` dependency group now delegates `petsc4py`/`slepc4py` to `cellrank[petsc]>=2.3.1` (mpi4py-free) instead of hardcoding them, keeping only an explicit `slepc` to work around slepc4py's missing runtime metadata {pr}`82`

### Fixed
- Fixed intermittent `OSError: Can't synchronously read data (filter returned failure during read)` when running the test suite under `pytest -n auto`, caused by xdist workers racing on scanpy's shared `pbmc3k_raw.h5ad` dataset cache. Each worker now uses its own cache directory.
Expand Down
26 changes: 17 additions & 9 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -80,23 +80,31 @@ urls.Documentation = "https://cellmapper.readthedocs.io/"
urls.Homepage = "https://github.com/quadbio/cellmapper"
urls.Source = "https://github.com/quadbio/cellmapper"

# Opt-in fast backend for pyGPCCA (pulled in by cellrank's tutorials extra).
# Without petsc4py/slepc4py, pyGPCCA falls back to method='brandts', which
# densifies the transition matrix and warns. This is a PEP 735 dependency group
# (NOT an extra) on purpose: petsc/slepc have no wheels and compile from source,
# so we keep them out of `uv sync --all-extras` and require an explicit opt-in.
# Opt-in fast backend for pyGPCCA (used by cellrank). Without petsc4py/slepc4py,
# pyGPCCA falls back to method='brandts', which densifies the transition matrix
# and warns. petsc4py/slepc4py come from cellrank's own `petsc` extra (mpi4py-free
# since cellrank 2.3.1), so CellRank owns those. This is a PEP 735 dependency
# group (NOT an extra) on purpose: petsc/slepc have no wheels and compile from
# source, so we keep them out of `uv sync --all-extras` and require explicit opt-in.
#
# `slepc` is listed explicitly because slepc4py's published sdist metadata omits
# its runtime dep on the `slepc` library package (it's added dynamically at build
# time), so uv won't install slepc from cellrank[petsc] alone and slepc4py then
# fails to import with "Library not loaded: libslepc". (petsc4py declares `petsc`
# correctly, so petsc needs no such workaround.) Drop this once slepc4py — or
# cellrank's petsc extra — declares slepc.
#
# The build needs a C compiler only (no Fortran/MPI/system libs) IF you pass
# PETSC_CONFIGURE_OPTIONS. Do NOT set SLEPC_CONFIGURE_OPTIONS — SLEPc inherits
# config from the built PETSc. Install (one-time source build, ~4 min, cached):
# PETSC_CONFIGURE_OPTIONS="--with-fc=0 --with-mpi=0 --with-debugging=0 --with-shared-libraries=1" \
# uv sync --all-extras --group gpcca-fast
# NB: a plain `uv sync --all-extras` (without --group gpcca-fast) will UNINSTALL
# petsc/slepc if present — re-include the group on every refresh to keep them.
[dependency-groups]
gpcca-fast = [
"petsc",
"petsc4py",
"slepc",
"slepc4py",
"cellrank[petsc]>=2.3.1",
"slepc>=3.25",
]

[tool.hatch]
Expand Down
Loading