Skip to content

Distribute single-file Desktop plugins in the catalog - #4

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

PierreRaybaut merged 4 commits into
mainfrom
feature/single-file-plugin-catalog

Conversation

@PierreRaybaut

@PierreRaybaut PierreRaybaut commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Support raw single-file Desktop plugins in the public catalog, alongside existing wheel distributions.

Refs DataLab-Platform/DataLab#419. Desktop implementation: DataLab-Platform/DataLab#420, targeting develop.

Changes

  • First clarify that source organization and distribution are independent: a layered project is not an API requirement.
  • Extend the YAML schema with optional kind: module, an exact GitHub release asset filename and explicit public metadata, including version, description and an accepted source license.
  • Inspect Python syntax, encoding, names, sizes and safely readable metadata without importing or executing scripts. Keep the inspector synchronized with Desktop via a verbatim-copy equality test.
  • Mirror exact source bytes under modules/<sha256>/... using relative URLs, so the published JSON and files also work as an offline catalog.
  • Label module entries as Python file and restrict them to Desktop. Existing wheel defaults, Web targets and wheel dependencies remain unchanged.
  • Document unchanged historical files, metadata overrides, stable file names, version/revision tracking and offline transfer.

Validation

  • 38 publication tests passed, including an end-to-end test that installs the generated offline mirror with the updated Desktop client.
  • Cover exact asset selection, non-execution, invalid/empty source, metadata identity/version conflicts and unsupported PyPI module sources.
  • Inspector equality and Ruff checks passed.
  • The optional Desktop integration test requires the updated client; standalone publication tests continue to run with the latest released DataLab reference environment.
  • Inspect module specs before the optional integration test: released DataLab 1.3 still has a Qt-dependent plugins.py, so probing a child module by importing that legacy host would unnecessarily require Qt in the catalog CI. A regression test covers that case without masking errors in an actually available updated client.

Deployment

No Camera/Pulse entries are changed and no new plugin release or example is published by this PR. Actual module entries require the updated Desktop client; old wheel-only clients skip .py releases as non-installable. DataLab-Web itself is out of scope.

Explain that the current wheel requirement does not mandate a layered plugin project. Refs DataLab-Platform/DataLab#419.

Assisted-by: GPT-6.1 Sol
Validate explicit GitHub assets and static module metadata without executing code, mirror scripts by digest and distinguish Python files in the catalog page. Refs DataLab-Platform/DataLab#419.

Assisted-by: GPT-6.1 Sol
Explain module metadata, unchanged historical sources, revision tracking and Desktop-only host dependency requirements. Refs DataLab-Platform/DataLab#419.

Assisted-by: GPT-6.1 Sol
The latest released DataLab still has a Qt-dependent plugins.py module. Inspect module specs before running the optional updated-client integration test, and cover the legacy-host absence case without masking real client import failures.

Assisted-by: GPT-6.1 Sol
@PierreRaybaut
PierreRaybaut merged commit 38491b3 into main Oct 23, 2026
1 check passed
@PierreRaybaut
PierreRaybaut deleted the feature/single-file-plugin-catalog branch October 24, 2026 13:18
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