diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 29fb669..67fd0f1 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "analysis-workflow", - "version": "0.2.1", + "version": "0.2.2", "description": "Conventions for analysis repos where humans (notebooks) and coding agents (scripts) work side by side: one task per session, worktree and directory; worktree-safe output paths; additive write-back to AnnData zarr working objects. Ships a skill, guard hooks and the analysis_workflow Python package.", "author": { "name": "quadbio" diff --git a/README.md b/README.md index ff8d056..3bc76cf 100644 --- a/README.md +++ b/README.md @@ -48,11 +48,11 @@ their committed `.claude/settings.json`, as [analysis_template](https://github.c } ``` -**The package**, in the analysis repo's `pixi.toml`: +**The package**, in the analysis repo's `pixi.toml` (its lock pins the commit; `pixi update` moves it): ```toml [pypi-dependencies] -analysis-workflow = { git = "https://github.com/quadbio/analysis-workflow", tag = "v0.2.1" } +analysis-workflow = { git = "https://github.com/quadbio/analysis-workflow" } ``` ## Develop @@ -70,8 +70,8 @@ For live package edits in an analysis repo, depend on the checkout instead: ## Release -Bump `version` in both `pyproject.toml` and `.claude-plugin/plugin.json` (a test checks they agree), tag -`vX.Y.Z`, then 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 dcb49bb..48a515c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,6 @@ requires = [ "hatchling" ] [project] name = "analysis-workflow" -version = "0.2.1" description = "Task paths, additive AnnData write-back and layout checks for agent-run analysis repos." 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", "numpy", "pandas", "scipy", "typer", "zarr>=3" ] urls.Source = "https://github.com/quadbio/analysis-workflow" scripts.analysis-workflow = "analysis_workflow.cli:app" @@ -24,6 +24,8 @@ scripts.analysis-workflow = "analysis_workflow.cli:app" dev = [ "pre-commit", "pytest" ] [tool.hatch] +version.path = ".claude-plugin/plugin.json" +version.pattern = '"version": "(?P[^"]+)"' build.targets.wheel.packages = [ "src/analysis_workflow" ] [tool.ruff] diff --git a/tests/test_plugin.py b/tests/test_plugin.py index 1df3307..06d0e38 100644 --- a/tests/test_plugin.py +++ b/tests/test_plugin.py @@ -1,18 +1,11 @@ -"""The plugin manifest and the Python package describe the same release.""" +"""The plugin manifest points at files that exist.""" 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"] - - def test_hook_scripts_exist(): hooks = json.loads((ROOT / "hooks" / "hooks.json").read_text())["hooks"] commands = [h["command"] for groups in hooks.values() for group in groups for h in group["hooks"]] diff --git a/uv.lock b/uv.lock index e966cb4..20e8077 100644 --- a/uv.lock +++ b/uv.lock @@ -12,7 +12,6 @@ resolution-markers = [ [[package]] name = "analysis-workflow" -version = "0.2.1" source = { editable = "." } dependencies = [ { name = "anndata" },