Skip to content

Support single-file plugins in online and offline catalogs - #420

Merged
PierreRaybaut merged 3 commits into
developfrom
feature/single-file-plugin-catalog
Oct 23, 2026
Merged

PierreRaybaut merged 3 commits into
developfrom
feature/single-file-plugin-catalog

Conversation

@PierreRaybaut

@PierreRaybaut PierreRaybaut commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Closes #419.

Companion public catalog PR: DataLab-Platform/plugins#4.

Allow DataLab Desktop's online and offline plugin catalogs to distribute unchanged single-file datalab_*.py plugins alongside wheels. Packaging a script as a project is no longer a prerequisite for catalog distribution.

This branch starts directly from develop, with no experimental-data-integration commits. The first commit clarifies source organization, distribution and functional capabilities before any code change; the final documentation commit describes the implemented workflows in English and French.

Changes

  • Add a Qt-free, non-executing module inspector, shared with the public catalog. Read only literal metadata and simple constant references; dynamic or ambiguous metadata remains unknown and can be supplied by a catalog.
  • Extend catalog records compatibly with kind: module and the real module name, without inventing a Python distribution. Existing wheel entries retain their default behavior.
  • Support mixed root folders and authoritative JSON indexes, including local catalog build/check/prepare commands and mirrored .py downloads with size/SHA-256 checks.
  • Track unversioned modules by digest. Recognize previous file installations, display identical content as installed, update known versions, and request explicit replacement for changed revisions.
  • Reuse managed module installation, hot reload and uninstall; preserve old index entries and refuse collisions with unmanaged modules or conflicting managed identities.
  • Verify the accepted file again at installation and restore the previous module if updating the index fails.
  • Preserve wheel dependency management. Single-file modules use existing host libraries and never invoke pip or install a dependency wheelhouse.
  • Extend the frozen-build probe to install and load both a historical unversioned script and a generated single-file plugin through a local catalog.
  • Complete the independent source-form/distribution matrix, offline procedures, author guidance, French UI strings and release notes.

Validation

  • Full Desktop plugin regression run: 208 passed across datalab/tests/backbone/plugins and datalab/tests/features/plugins/plugin_install_dialog_test.py.
  • Final focused module/catalog run after adding the explicit-version guard: 34 passed.
  • Public catalog companion tests, including consumption of its published mirror by this Desktop client and legacy-host detection: 38 passed.
  • Ruff checks and formatting passed; 1755 French UI messages compiled. All UI strings in the affected workflows were checked against the translation catalog.
  • Sphinx gettext and French source/reference validation passed with -W. The plugin chapter's 529 messages and the release notes' 136 messages are translated without missing/fuzzy entries.
  • Installed unchanged historical and generated scripts from a local catalog in the Python edition and a real Windows CPython 3.11 PyInstaller standalone. Neither ran during inspection or installation; both ran from managed storage at application startup. The standalone used no external Python.
  • Executed the original origin/develop catalog client on a mixed catalog: it skipped the module and retained the existing installable wheel.
  • Covered invalid syntax/encoding/names, empty and oversized files, metadata contradictions, digest changes after consent, cancellation, source priority/withdrawals, name collisions and failed-index restoration.

PDF generation was intentionally not repeated: the maintainer confirmed that validating the documentation sources is sufficient for the established integrated-help build.

Scope

Desktop only, including its standalone distribution. No application DataLab-Web changes, extra dependency installation for scripts, release publication or production plugin entry is included. The public catalog schema, release-asset validation, mirror and website changes are delivered in the linked companion PR.

Distinguish single-file development, packages, wheels and functional capabilities before extending catalog support. Correct the module consent documentation and provide the French translation. Refs #419.

Assisted-by: GPT-6.1 Sol
Inspect modules without execution, preserve historical sources, track unknown versions by digest, and reuse managed installation with consent, identity checks and failed-write restoration. Keep wheel behavior and dependency policies unchanged. Refs #419.

Assisted-by: GPT-6.1 Sol
…ench

Complete the source-form matrix and self-contained offline workflows after implementation, including catalog metadata, source priorities, updates, explicit replacement and module dependency limits. Refs #419.

Assisted-by: GPT-6.1 Sol
@PierreRaybaut
PierreRaybaut merged commit d124871 into develop Oct 23, 2026
6 checks passed
@PierreRaybaut
PierreRaybaut deleted the feature/single-file-plugin-catalog 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