Volume-variable shape support + libvcell bump (and poetry cleanup) - #47
Merged
Conversation
Fix addresses scalar, pre-sized, and domain-less volume variables
Follow-up to the cherry-picked volume-variable-shape fix and libvcell bump: - Regenerate uv.lock (the cherry-picked lock had a malformed libvcell entry — a 0.0.15.3 record pointing at a 0.0.15.2 wheel); it now resolves cleanly to libvcell 0.0.15.4. - Bump the `native` extra floor to libvcell>=0.0.15.3 so the constraint matches the "ensuring correct libvcell version" intent (was only reflected in the lock). - The cherry-picked setup-uv-env action now pins the venv to the exact matrix Python; the matrix still listed 3.11 while requires-python is >=3.12, so that job would fail `uv sync`. Drop 3.11 from the matrix (3.12-3.14) and retarget the Codecov upload to 3.12. - Remove poetry: delete poetry.lock and switch the poetry references in CLAUDE.md, CONTRIBUTING.md, and docs to uv (the project moved to uv). make check green; tests pass (simdata/vcml/sim_results: 60 passed, 5 skipped). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
jcschaff
added a commit
that referenced
this pull request
Jun 18, 2026
The setup-uv-env action's python-version became required (no default) in #47, but on-release-main.yml didn't pass it — which would break the publish/docs jobs. Pin it to 3.12. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cherry-picked from @LDre398 (Logan Drescher), then verified, lock-fixed, and tidied.
What's in here
Volume-variable shapes (
pyvcell/_internal/simdata/zarr_writer.py) — the zarr writer assumed every volume function evaluates to a(z, y, x)array nameddomain::function. It now handles:shape == ()) → fill a(z, y, x)array with the value;::separators (domain optional) rather than exactly two — and only applies a domain mask when a domain is present (raises on > 2 parts).libvcell — bumped to ensure the version that produces the new volume-variable shapes/types:
uv.lockhad a malformed libvcell entry (a0.0.15.3record pointing at a0.0.15.2wheel), so it wouldn't even parse — regenerated cleanly, now resolves tolibvcell 0.0.15.4;nativeextra floor tolibvcell>=0.0.15.3so the constraint matches the intent (previously only the lock was touched, so a fresh install could still get an older libvcell).CI (
setup-uv-envaction) — the cherry-picked change pins the uv venv to the exact matrix Python. The matrix still listed 3.11 whilerequires-python = ">=3.12", so that job would now failuv sync. Aligned the matrix to 3.12–3.14 and retargeted the Codecov upload (3.11 → 3.12).Poetry cleanup (per request) — the project already moved to uv; removed the leftover
poetry.lockand switched the poetry references inCLAUDE.md,CONTRIBUTING.md, anddocs/getting-started/installation.mdto uv (and documented the newpyvcell[extra]install).Verification
make checkgreen — ruff, ruff-format, mypy (310 files), deptry,uv lock --check.pytest tests/_internal/simdata tests/vcml tests/sim_results→ 60 passed, 5 skipped (includes thezarr_writertests).Note
The new scalar / already-sized / no-domain branches in
zarr_writer.pyaren't covered by a dedicated unit test (they depend on libvcell producing those shapes). The existingzarr_writersuite exercises the normal path; happy to add targeted fixtures for the new branches as a follow-up if wanted.🤖 Generated with Claude Code