Skip to content

Sync with cookiecutter-scverse v0.7.0#548

Merged
timtreis merged 11 commits intomainfrom
chore/scverse-template-v0.7.0-phase1
Mar 12, 2026
Merged

Sync with cookiecutter-scverse v0.7.0#548
timtreis merged 11 commits intomainfrom
chore/scverse-template-v0.7.0-phase1

Conversation

@timtreis
Copy link
Member

@timtreis timtreis commented Mar 12, 2026

Summary

Brings the repository in line with cookiecutter-scverse v0.7.0, superseding #528.

  • Project config: switch to [dependency-groups] (PEP 735), add hatch environments (default, docs, hatch-test matrix with pre-release testing), add [tool.cruft] skip list, pyproject-fmt normalized
  • Pre-commit: replace prettier with biome, add pyproject-fmt and pre-commit-hooks, keep mypy
  • Docs: switch from mathjax to KaTeX, add sphinx-tabs and opengraph, merged intersphinx mappings, full contributing guide with hatch/uv/pip tabs + plot-testing instructions
  • CI/test: dynamic hatch test matrix from pyproject.toml, concurrency control, alls-green check job, Codecov OIDC, visual test artifact upload preserved
  • CI/build: new uv-based build check workflow
  • CI/release: PyPI trusted publishing (OIDC) with pypi environment, replacing secret-based token
  • Scaffolding: issue templates (type field), VS Code config, biome.jsonc, editorconfig, gitignore, cruft.json v0.7.0

Kept as spatialdata-plot-specific

  • All [tool.pixi.*] config (local dev workflow)
  • html_logo (spatialdata branding)
  • Full intersphinx mappings (geopandas, xarray, datatree, dask + python, scanpy)
  • exclude_patterns for tutorial paths
  • nitpicky = False
  • Visual test artifact upload in CI

timtreis and others added 4 commits March 12, 2026 14:51
Update config, issue templates, editor/IDE settings, and docs templates
to match the scverse template v0.7.0. No source code or CI changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Switch from optional-dependencies to dependency-groups (PEP 735)
- Add hatch environments (default, docs, hatch-test matrix)
- Add build.yaml CI workflow (uv build + twine check)
- Replace prettier with biome, add pyproject-fmt and pre-commit-hooks
- Switch docs from mathjax to KaTeX, add sphinx-tabs and opengraph
- Update .readthedocs.yaml to use hatch docs:build
- Rewrite contributing.md with hatch/uv/pip tabs, keep plot-testing guide
- Add [tool.cruft] skip list for future template syncs
- Keep pixi config, html_logo, full intersphinx mappings, nitpicky=False

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Dynamic test matrix extracted from pyproject.toml via hatch env show
- Add hatch-test env config with dependency-groups, scripts, and pre-release matrix
- Add concurrency control, check job (alls-green), and bi-monthly cron schedule
- Switch coverage upload to Codecov OIDC
- Keep visual test artifact upload, MPLBACKEND=agg, and tag triggers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Replace secret-based PyPI token with OIDC trusted publishing
- Use uv for building instead of pip/hatch dual build
- Split into build + publish jobs with artifact handoff
- Add pypi environment for deployment protection
- Update actions to v5

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@timtreis
Copy link
Member Author

Superseded — pushing directly to #528 instead.

@timtreis timtreis closed this Mar 12, 2026
@timtreis timtreis reopened this Mar 12, 2026
timtreis and others added 2 commits March 12, 2026 19:12
Workaround for pypa/hatch#2193 — hatch is incompatible with
virtualenv 21+. Same fix used by scanpy and squidpy.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The old RTD config had fail_on_warning: false. Upstream libraries
(xarray, geopandas) emit harmless import warnings that -W promotes
to fatal errors. Remove -W to match previous behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@codecov-commenter
Copy link

codecov-commenter commented Mar 12, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 73.66%. Comparing base (4fe68de) to head (e605afc).
⚠️ Report is 1 commits behind head on main.

❗ There is a different number of reports uploaded between BASE (4fe68de) and HEAD (e605afc). Click for more details.

HEAD has 1 upload less than BASE
Flag BASE (4fe68de) HEAD (e605afc)
2 1
Additional details and impacted files
@@             Coverage Diff             @@
##             main     #548       +/-   ##
===========================================
- Coverage   84.01%   73.66%   -10.35%     
===========================================
  Files           9        9               
  Lines        2608     2616        +8     
  Branches        0      623      +623     
===========================================
- Hits         2191     1927      -264     
- Misses        417      422        +5     
- Partials        0      267      +267     

see 5 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

timtreis and others added 5 commits March 12, 2026 19:19
Suppress sphinx-autodoc-typehints warnings from upstream libraries:
- ColorType forward reference from matplotlib.figure.Figure
- Guarded iris import from xarray.core.dataarray
- Guarded folium import from geopandas.geodataframe

These are optional deps of upstream packages, not our issue.
Restores -W (warnings as errors) to match the scverse template.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
coverage couldn't map site-packages/spatialdata_plot back to
src/spatialdata_plot, resulting in ~15% reported coverage.
Add paths.source mapping, enable branch and parallel coverage.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove .vscode/ from tracking and set ide_integration: false in cruft.json
- Add .vscode/ back to .gitignore
- Fix set_constrained_layout deprecation (use set_layout_engine)
- Fix SettingWithCopyWarning in test_render_labels.py

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Coverage requires serial execution (coverage run doesn't instrument
xdist workers). Mirror squidpy's approach: run-cov without -n auto
on one env (py3.14-stable), run with -n auto on all others.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@timtreis timtreis merged commit 059b51a into main Mar 12, 2026
8 checks passed
@timtreis timtreis deleted the chore/scverse-template-v0.7.0-phase1 branch March 12, 2026 18:55
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.

2 participants