Repository navigation
Support offline installation of additional plugin dependencies #417
Description
Summary
Allow DataLab Desktop plugins to use additional dependencies, including compatible native libraries, without requiring users to modify DataLab's Python environment. A complete local plugin catalog must work without Internet access, including in the standalone application.
Problem
The current installer only accepts plugins whose dependencies are already supplied by the host. This prevents catalog installation of otherwise pure-Python plugins relying on specialized packages, such as a TANGO acquisition plugin requiring PyTango.
Users of disconnected laboratory workstations need both a complete distribution of installation files and precise documentation available locally, rather than instructions that depend on accessing websites.
Proposed functionality
- Keep plugin wheels pure Python, but allow separate dependency wheels, including native wheels matching the host's Python version, ABI and platform.
- Supply missing dependencies and their transitive requirements through a local
dependencieswheelhouse or optionaldependency_wheelsartifacts referenced by a catalog release. - Resolve with pip in a child process, using only approved local wheels during installation: no package-index fallback, compilation or implicit system installation.
- Protect all versions already provided by DataLab, the Python environment and the shared dependency store. Explicitly reject conflicts instead of upgrading or downgrading those packages.
- Show the additional packages, versions, sources, sizes and SHA-256 fingerprints before asking for consent.
- Publish the plugin and its additional dependencies transactionally in user storage, shared by plugins of the same runtime. Activate newly added dependencies after restarting.
- Keep shared dependencies when a plugin is uninstalled.
- Add
datalab-plugin catalog prepareto download the dependency wheels on a connected reference computer, then distribute the complete catalog to offline computers.buildandcheckremain file-based operations. - Include a self-contained offline deployment and troubleshooting guide in the local PDF documentation, with an up-to-date French translation.
Acceptance criteria
- A complete local catalog installs without Internet access in both Python and standalone Desktop editions; the standalone does not require an external Python interpreter.
- Native libraries can be imported from the managed store without changing host packages.
- Missing transitive wheels, incompatible versions, changed artifacts and invalid native paths result in explicit errors without activating a partial installation.
- Existing plugins without additional dependencies retain their installation and reload behavior.
- Documentation explains preparation, complete folder transfer, catalog/source-path distinctions, disabling the public URL, catalog priority, mirror layout, updates, restarts and offline troubleshooting.
- A real TANGO plugin can acquire a signal and an image from a local simulated device after installation, not merely pass an import check.
Scope and deliberate limits
This issue concerns DataLab Desktop only, with integration targeting develop independently of feature/experimental-data-integration. No DataLab-Web behavior change, companion-repository publication, automatic dependency upgrades, per-plugin environments, system drivers or source builds are included. Conflicting versions cannot coexist in this shared-runtime model. Publishing dependency artifacts in the public catalog requires its companion tooling, which is outside the Desktop PR.
Activity
PierreRaybaut commentedon Oct 22, 2026
Implemented by #418, targeting
developfrom the independentfeature/plugin-dependenciesbranch. The Desktop PR includes the installer, offline catalog preparation, standalone validation, and the self-contained English/French offline documentation. Companion repositories are not pushed by this change.