diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 502f154..3c17f73 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "cell-type-annotation", - "version": "0.4.0", + "version": "0.4.1", "description": "Evidence-driven cell-type annotation of pre-clustered single-cell and spatial transcriptomics data: Claude annotates level by level, one routed cross-check per level, signed-off assumptions, critic subagents. Ships a skill and the cell_type_annotation Python package; runs as an analysis-workflow task.", "author": { "name": "quadbio" diff --git a/README.md b/README.md index 5fda01d..a72c158 100644 --- a/README.md +++ b/README.md @@ -38,11 +38,12 @@ It requires the [knowledgebase MCP](https://github.com/biocontext-ai/knowledgeba The plugin, once per machine, from the [quadbio marketplace](https://github.com/quadbio/claude-plugins). -The package, in the analysis repo's `pixi.toml`, next to the scverse stack the task scripts use: +The package, in the analysis repo's `pixi.toml` (its lock pins the commit), next to the scverse stack the task +scripts use: ```toml [pypi-dependencies] -cell-type-annotation = { git = "https://github.com/quadbio/cell-type-annotation", tag = "v0.4.0" } +cell-type-annotation = { git = "https://github.com/quadbio/cell-type-annotation" } ``` Cross-check tools (celltypist, cellmapper, panhumanpy, scvi-tools, scimilarity) are added as a run needs them. Their @@ -73,9 +74,8 @@ For live package edits in an analysis repo, depend on the checkout: ## Release -1. Bump `version` in both `pyproject.toml` and `.claude-plugin/plugin.json` (a test checks they agree). -2. Tag `vX.Y.Z`. -3. Bump the `ref` in [quadbio/claude-plugins](https://github.com/quadbio/claude-plugins). +Bump `version` in `.claude-plugin/plugin.json` and merge: the marketplace follows `main`, and users update when the +version changes. ## License diff --git a/pyproject.toml b/pyproject.toml index c18e13b..9b98d87 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,6 @@ requires = [ "hatchling" ] [project] name = "cell-type-annotation" -version = "0.4.0" description = "Method routing, evidence checks, label hierarchies and reports for evidence-driven cell-type annotation." readme = "README.md" license = "MIT" @@ -16,6 +15,7 @@ classifiers = [ "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", ] +dynamic = [ "version" ] dependencies = [ "anndata>=0.12", "matplotlib>=3.8", "numpy>=2", "pandas>=2", "scipy" ] urls.Source = "https://github.com/quadbio/cell-type-annotation" @@ -23,6 +23,8 @@ urls.Source = "https://github.com/quadbio/cell-type-annotation" dev = [ "pre-commit", "pytest" ] [tool.hatch] +version.path = ".claude-plugin/plugin.json" +version.pattern = '"version": "(?P[^"]+)"' build.targets.wheel.packages = [ "src/cell_type_annotation" ] [tool.ruff] diff --git a/tests/test_plugin.py b/tests/test_plugin.py deleted file mode 100644 index 2d26782..0000000 --- a/tests/test_plugin.py +++ /dev/null @@ -1,13 +0,0 @@ -"""The plugin manifest and the Python package describe the same release.""" - -import json -import tomllib -from pathlib import Path - -ROOT = Path(__file__).parents[1] - - -def test_versions_agree(): - plugin = json.loads((ROOT / ".claude-plugin" / "plugin.json").read_text()) - package = tomllib.loads((ROOT / "pyproject.toml").read_text())["project"] - assert plugin["version"] == package["version"] diff --git a/uv.lock b/uv.lock index da40e5b..fb65d13 100644 --- a/uv.lock +++ b/uv.lock @@ -52,7 +52,6 @@ wheels = [ [[package]] name = "cell-type-annotation" -version = "0.4.0" source = { editable = "." } dependencies = [ { name = "anndata" },