Skip to content

Install the vendor drivers as a uv workspace - #259

Merged
mikelangmayr merged 2 commits into
mainfrom
mike/unvendor-pycamerad
Oct 7, 2026
Merged

mikelangmayr merged 2 commits into
mainfrom
mike/unvendor-pycamerad

Conversation

@mikelangmayr

@mikelangmayr mikelangmayr commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor
  • The drivers under src/hispec/driver/ are vendored submodules, so their declared dependencies were never resolved and had to be repeated in hispec's pyproject.toml by hand. That had drifted: telnetlib3 and pymcprotocol were declared by the pdu and fiber-switcher drivers and installed by nothing. telnetlib3 survived on the host only because pip never removes anything, so moving to uv pruned it.
  • A [tool.uv.workspace] keeps them vendored and editable while resolving their dependencies into the same environment, so the hand-mirroring stops being something that can drift.
  • override-dependencies forces one hardware_device_base ref. The drivers pin it to v1.0.0, v1.0.1 and unpinned between them, and uv allows one URL per package, so nothing resolves otherwise. Today they all get whatever the default branch is, which is none of those, so this is more deliberate than the status quo.
  • install.sh uses uv sync --all-packages; plain uv sync locks the members but installs only the root project's closure, which leaves the driver dependencies out and looks like success.
  • paramiko added to hispec. The pdu driver imports it for the DLI DC3's SSH transport and declares it nowhere; it belongs upstream and comes back out once that lands.
  • pycamerad stops being a submodule. It was both vendored and a git dependency of camera_daemon, which uv rejects, and nothing imported the vendored copy except tracking_camera/camera.py through a relative import, now pointed at the distribution.
  • This fixes three independent import failures that made every hspower_* daemon unstartable: the missing telnetlib3, the missing paramiko, and a bare from emat08_10 import trailing_int in dli_dc3.py that only resolves once the driver is a real distribution.
  • Verified in a clean environment: EatonEMAT and Dlidc3 import, daemons/hspower/eaton_pdu --help runs, drivers still resolve to their vendored paths, and the nine tracking camera tests pass.
  • pytest lands in the venv because srs declares it as a runtime dependency. That is fixed in the driver, not here.
  • After pulling, the stale src/hispec/driver/pycamerad directory is left behind, since git does not remove a submodule working tree. Nothing imports it; delete it.

@mikelangmayr mikelangmayr changed the title Install pycamerad as a dependency instead of vendoring it Install the vendor drivers as a uv workspace Oct 7, 2026
@mikelangmayr
mikelangmayr merged commit 5e4dde6 into main Oct 7, 2026
4 checks passed
@mikelangmayr
mikelangmayr deleted the mike/unvendor-pycamerad branch October 7, 2026 22:12
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