Skip to content

Install vhlab-toolbox/library from GitHub archive URLs instead of git+ - #326

Merged
stevevanhooser merged 2 commits into
mainfrom
use-archive-urls-for-vhlab-deps
Oct 14, 2026
Merged

stevevanhooser merged 2 commits into
mainfrom
use-archive-urls-for-vhlab-deps

Conversation

@stevevanhooser

Copy link
Copy Markdown
Contributor

What

In pyproject.toml, switches the two vhlab dependencies from git+ URLs to GitHub archive (zip) URLs:

"vhlab-toolbox-python @ https://github.com/VH-Lab/vhlab-toolbox-python/archive/refs/heads/main.zip",
"vhlab-library-python @ https://github.com/VH-Lab/vhlab-library-python/archive/refs/heads/main.zip",

The other git+ dependencies (did, ndr, ndi-compress, ndi-ontology) are unchanged here; they are a later step. ndi_install.py, README.md and tutorials/README.md (the developer git clone path) are also untouched and will be handled separately.

Why

We are building a double-click installer based on uv tool install. uv (and pip) shell out to a system git for git+ URLs, and many end users (especially on Windows/macOS) have no git. Archive URLs are fetched over plain HTTPS, so git is no longer needed.

⚠️ Merge back-to-back with the companion vhlab-library-python PR

When two packages depend on the same package by direct URL, uv/pip require the URL strings to be identical. ndi and vhlab-library-python both depend on vhlab-toolbox-python. The companion PR switches vhlab-library-python to exactly the same string: VH-Lab/vhlab-library-python#12

Until both are merged, installing ndi fails with a conflicting-URL error for vhlab-toolbox-python. If vhlab-library merges first, NDI's install on main breaks; if this PR merges first, it breaks the other way. Please merge them back-to-back. CI on this PR may show that conflict until vhlab-library-python#12 is merged.

Note on caching

uv caches archive URLs, so updating an existing install later to pick up new main commits needs --reinstall / --refresh (e.g. uv tool install --reinstall ...).

Testing

  • black --check src/ tests/ and ruff check src/ tests/: pass.
  • Checked that the new requirement strings parse, and that the vhlab-toolbox-python URL is byte-identical to the one in vhlab-library-python#12 (both its pyproject.toml and its requirements.txt).
  • Not tested locally: this sandbox's network proxy returns HTTP 403 for github.com/.../archive/... downloads, so ndi could not be installed here and pytest could not run. This PR relies on CI for the real install + test run.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UMLSmPQyLVBfBC52mCahmk


Generated by Claude Code

uv and pip shell out to a system git for git+ URLs; archive URLs are
fetched over plain HTTPS, so end users of the installer no longer need
git for these two. The vhlab-toolbox-python URL must match
vhlab-library-python's string exactly, or resolution fails with a
conflicting-URL error. did, ndr, ndi-compress and ndi-ontology are left
on git+ URLs for a later step.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UMLSmPQyLVBfBC52mCahmk

stevevanhooser commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor Author

CI failures on b851522. None of them is a bug in this diff.

1. test (3.10), test (3.11), test (3.12), CED integration (real sonpipe): the expected back-to-back-merge conflict described in the PR body. Each fails at pip install -e . with:

ERROR: Cannot install None, ndi and ndi[dev,tutorials]==0.1.0 because these package versions have conflicting dependencies.
ERROR: ResolutionImpossible

ndi now asks for vhlab-toolbox-python @ …/archive/refs/heads/main.zip, while vhlab-library-python on its main still asks for vhlab-toolbox-python @ git+…@main. pip refuses two different direct URLs for one package.

The fix is VH-Lab/vhlab-library-python#12 (CI green there: lint plus tests on 3.10, 3.11 and 3.12). It can't be ported into this PR, because the conflicting string lives in the other repo's main. Once #12 is merged, re-running this PR's CI should clear these jobs. I'll re-run them then.

2. MATLAB/Python bridge completeness: unrelated drift from NDI-matlab. tests/test_matlab_bridge_hashes.py::test_no_entry_has_drifted reports:

src/ndi/gui/component/ndi_matlab_python_bridge.yaml: ndi_gui_component_ProgressBarWindow (+ndi/+gui/+component/ProgressBarWindow.m) -- MATLAB has moved since 2b23dd30

This PR only edits two dependency lines in pyproject.toml. NDI-matlab changed ProgressBarWindow.m after main's last green CI run (01:02 UTC today), so main would fail this check too. No open PR fixes it yet. The fix is a normal bridge sync: read git -C NDI-matlab diff 2b23dd30..HEAD -- src/ndi/+ndi/+gui/+component/ProgressBarWindow.m, port any behavioural change, and bump matlab_last_sync_hash for that entry. That belongs in its own PR, not here.


Generated by Claude Code

@stevevanhooser
stevevanhooser merged commit 9a3c103 into main Oct 14, 2026
11 of 18 checks passed
@stevevanhooser
stevevanhooser deleted the use-archive-urls-for-vhlab-deps branch October 14, 2026 17:00
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