Skip to content

Add offline installation of plugin dependencies - #418

Merged
PierreRaybaut merged 2 commits into
developfrom
feature/plugin-dependencies
Oct 22, 2026
Merged

PierreRaybaut merged 2 commits into
developfrom
feature/plugin-dependencies

Conversation

@PierreRaybaut

Copy link
Copy Markdown
Contributor

Summary

Closes #417.

Add offline-capable plugin dependency installation to DataLab Desktop, including its PyInstaller standalone build, without modifying packages already provided by the host.

This branch is based directly on develop. It contains no commits from feature/experimental-data-integration and can be merged independently.

Changes

  • Resolve additional requirements with pip in a dedicated child process against an immutable snapshot of installed package versions.
  • Install only locally supplied, approved wheels; no index fallback or source compilation during installation.
  • Support native dependency wheels while keeping plugin wheels pure Python and retaining the strict default inspection policy.
  • Add transactional shared dependency storage scoped by Python/ABI/platform, deferred activation and persisted enablement after restart.
  • Integrate asynchronous dependency planning, consent and installation with catalog and file-based workflows.
  • Support optional catalog dependency artifacts with size/SHA-256 verification and compatible-wheel selection.
  • Add datalab-plugin catalog prepare and extend local catalog build/check tooling for offline wheelhouses.
  • Embed pip in the standalone, exercise native dependency installation in the frozen build probe, and reject excessive Windows DLL paths before publishing an installation.
  • Prepare the application version as 1.4.0.
  • Complete the self-contained offline deployment guide and French translations of the plugin chapter and affected release notes.

User-visible behavior and limits

  • Existing host and shared-dependency versions are never upgraded or downgraded; conflicts are reported explicitly.
  • Newly added dependencies require restarting DataLab. Uninstalling a plugin retains shared dependencies.
  • Users can install from a complete local folder or network share without Internet access.
  • No per-plugin isolation, native plugin payloads, system driver installation or automatic package-index download is introduced.
  • Only the DataLab Desktop repository is published by this PR. Companion catalog publication changes and Web inspector-copy synchronization are not included.

Validation

  • 175 tests passed across datalab/tests/backbone/plugins and datalab/tests/features/plugins/plugin_install_dialog_test.py.
  • Ruff checks passed for the changed Python code; French UI translations compiled.
  • Built the actual Windows CPython 3.11 PyInstaller executable with pip embedded.
  • Installed PyTango 10.3.1 and its additional dependency from local wheels inside the executable, with no external Python on its PATH, then launched the full application: native imports and capsule round-trip succeeded.
  • Installed the real TANGO plugin from a complete local catalog in the Python and standalone editions, then verified local simulated-device image/signal acquisition, triggering and exact preservation of large integer counts.
  • Reproduced a Windows native path-limit failure, shortened managed generation paths and added a transactional refusal regression test.
  • Sphinx gettext and English/French LaTeX builds passed with warnings treated as errors. Generated and inspected real local PDFs; all 503 plugin-chapter messages and 133 release-note messages are translated without fuzzy entries. The offline procedure was verified in extracted PDF text and visually.

PDF outputs are generated artifacts, not committed binaries. The release workflow regenerates and embeds both languages from these sources.

Resolve approved wheels with pip in a child process without changing existing package versions. Support mirrored and local wheelhouses, explicit consent, transactional shared storage, frozen builds and native Windows path limits. Prepare DataLab 1.4.0.

Assisted-by: GPT-6.1 Sol
@PierreRaybaut
PierreRaybaut merged commit 3f47817 into develop Oct 22, 2026
6 checks passed
@PierreRaybaut
PierreRaybaut deleted the feature/plugin-dependencies branch October 23, 2026 14:37
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.

1 participant