Skip to content

Install sonpipe from a GitHub archive URL so [ced] needs no git - #32

Merged
stevevanhooser merged 1 commit into
mainfrom
ced-archive-url
Oct 14, 2026
Merged

stevevanhooser merged 1 commit into
mainfrom
ced-archive-url

Conversation

@stevevanhooser

Copy link
Copy Markdown
Contributor

Goal

Make NDR-python's optional CED/Spike2 support installable on machines with no git. We're building a double-click NDI installer on top of uv tool install. For git+ URLs, uv and pip both shell out to a system git, and many end users (especially on Windows and macOS) don't have one. A GitHub archive (zip) URL is fetched over plain HTTPS instead. sonpipe is public, and its own dependencies (numpy, sonpy) come from PyPI, so after this change neither pip install ndr[ced] nor python -m ndr.setup.sonpipe needs git.

Changes

  • pyproject.toml: the [ced] extra changes from sonpipe @ git+https://github.com/VH-Lab/sonpipe.git to sonpipe @ https://github.com/VH-Lab/sonpipe/archive/refs/heads/main.zip. The comments around it now explain why it's an archive URL and how to upgrade.
  • src/ndr/setup/sonpipe.py: the constant now holds the same archive URL string as the extra. The two must stay identical, because an environment that ends up with both would otherwise have conflicting direct references. The constant keeps the name SONPIPE_GIT_URL because tests/test_setup_sonpipe.py imports it. A comment now says the name is historical, and the module docstring no longer describes the URL as a git URL.
  • tests/test_setup_sonpipe.py: renamed the URL test and added two tests. One checks that the URL has no git+. The other checks that the constant matches the [ced] extra in pyproject.toml, so the two can't drift apart.
  • .github/workflows/ci.yml (comment only) and src/ndr/ndr_matlab_python_bridge.yaml (header comment only): wording changed from "git URL" to "archive URL". No bridge entries, statuses or hashes changed, and MATLAB-facing behaviour is the same.

Upgrade note

uv and pip cache a branch's archive URL, so --upgrade alone may not pick up a newer sonpipe. To force it, use pip install --upgrade --force-reinstall ... or uv ... --reinstall.

Downstream

NDI-python's CI ced job runs python -m ndr.setup.sonpipe, so it will use the new URL automatically once this is merged. NDI-python doesn't need a matching change.

Testing

  • black and ruff check are clean.
  • The full suite (pytest tests/ src/ndr/test/ -m "not needs_matlab") has the same 55 failures locally with and without this change. All of them are import errors from optional dependencies that weren't in the sandbox (neo, pyabf and similar). This branch adds 2 tests, and both pass.
  • I couldn't verify a git-less install locally: the sandbox's network proxy returns HTTP 403 for https://github.com/VH-Lab/sonpipe/archive/refs/heads/main.zip. The ced-integration CI job runs pip install -e ".[dev,ced]", which now resolves through the archive URL, so that job is the real check.

🤖 Generated with Claude Code

https://claude.ai/code/session_017vKVGMMtp468mia5dVhAh5


Generated by Claude Code

pip and uv shell out to a system git for git+ URLs, and many end-user
machines (the planned uv-tool-based NDI installer's targets) have no git.
Point the [ced] extra and ndr.setup.sonpipe at
https://github.com/VH-Lab/sonpipe/archive/refs/heads/main.zip, fetched
over plain HTTPS. The constant keeps its SONPIPE_GIT_URL name because the
tests import it; add tests that it has no git+ and matches the extra.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017vKVGMMtp468mia5dVhAh5
@stevevanhooser
stevevanhooser merged commit 93d95ed into main Oct 14, 2026
7 checks passed
@stevevanhooser
stevevanhooser deleted the ced-archive-url branch October 14, 2026 17:13
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