diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 02272a3..c959aa1 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "sci-figures", - "version": "0.2.0", + "version": "0.2.1", "description": "Nature-style research figures and their legends: message and outline first, then layout, visual conventions, export to one PDF per figure with editable Arial text, legend writing and independent layout and legend reviews. Ships a skill and the scifig Python package.", "author": { "name": "quadbio" diff --git a/README.md b/README.md index 02daac0..6bc60c8 100644 --- a/README.md +++ b/README.md @@ -50,9 +50,8 @@ For live package edits in a figure repo, depend on the checkout instead: ## Release -Bump `version` in both `pyproject.toml` and `.claude-plugin/plugin.json` and the pin in -`skills/sci-figures/references/setup.md` (tests check 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 e318f09..7b01d0c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,6 @@ requires = [ "hatchling" ] [project] name = "scifig" -version = "0.2.0" description = "Style, mm layout, recurring elements and export for Nature-style research figures with editable text." readme = "README.md" license = "MIT" @@ -16,6 +15,7 @@ classifiers = [ "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", ] +dynamic = [ "version" ] dependencies = [ "matplotlib>=3.8" ] optional-dependencies.examples = [ "anndata", "pyyaml", "scanpy>=1.10" ] optional-dependencies.spatial-examples = [ @@ -36,6 +36,8 @@ urls.Source = "https://github.com/quadbio/sci-figures" dev = [ "pre-commit", "pytest" ] [tool.hatch] +version.path = ".claude-plugin/plugin.json" +version.pattern = '"version": "(?P[^"]+)"' build.targets.wheel.packages = [ "src/scifig" ] [tool.ruff] diff --git a/skills/sci-figures/references/setup.md b/skills/sci-figures/references/setup.md index 16c9045..fb70b4b 100644 --- a/skills/sci-figures/references/setup.md +++ b/skills/sci-figures/references/setup.md @@ -3,12 +3,12 @@ The machine steps (Arial, TeX) are once per machine. If one needs rights or software you don't have, tell the user. ## scifig -In the figure repo's `pixi.toml`: +In the figure repo's `pixi.toml` (its lock pins the commit): ```toml [pypi-dependencies] -scifig = { git = "https://github.com/quadbio/sci-figures", tag = "v0.2.0" } +scifig = { git = "https://github.com/quadbio/sci-figures" } ``` -With uv: `uv add "scifig @ git+https://github.com/quadbio/sci-figures@v0.2.0"`. For live edits to scifig, depend on a +With uv: `uv add "scifig @ git+https://github.com/quadbio/sci-figures"`. For live edits to scifig, depend on a checkout instead: `scifig = { path = "../sci-figures", editable = true }`. ## Figure conventions diff --git a/tests/test_plugin.py b/tests/test_plugin.py deleted file mode 100644 index e22ca77..0000000 --- a/tests/test_plugin.py +++ /dev/null @@ -1,19 +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"] - - -def test_setup_pins_this_release(): - version = tomllib.loads((ROOT / "pyproject.toml").read_text())["project"]["version"] - setup = (ROOT / "skills" / "sci-figures" / "references" / "setup.md").read_text() - assert f'tag = "v{version}"' in setup and f"sci-figures@v{version}" in setup diff --git a/uv.lock b/uv.lock index 448055d..2c0fa73 100644 --- a/uv.lock +++ b/uv.lock @@ -3365,7 +3365,6 @@ wheels = [ [[package]] name = "scifig" -version = "0.2.0" source = { editable = "." } dependencies = [ { name = "matplotlib" },