Development Workflow¶
Use the Makefile targets as the local interface for this repository. They match the checks used in GitHub CI and keep plugin packages isolated from each other.
Local setup¶
This syncs the uv workspace, including the shared ddp development tooling
and the documentation build tool.
Local checks¶
Run the full local pipeline before opening a pull request:
The target runs:
| Target | What it verifies |
|---|---|
make lint |
Ruff linting and formatting. |
make test |
Each plugin's tests in an isolated virtual environment. |
make validate |
Installed data_designer.plugins entry points with assert_valid_plugin. |
make check |
Generated plugin docs, catalog JSON validity, package-index metadata, generated CODEOWNERS, and SPDX license headers. |
make docs |
Zensical builds the documentation site in strict mode and adds catalog/package-index files to site/. |
make docs-server |
Zensical serves the documentation site locally while you edit. |
Documentation¶
Repository documentation source lives under docs/, and plugin-specific site
pages live under each plugin's docs/ directory. The top-level docs build
regenerates docs/plugins/ before running Zensical:
The build writes static output to site/, which is ignored by git. Zensical
validates internal links during the build, and this repository runs the build
with --strict so documentation warnings fail CI. The docs target also runs
make package-index so the deployable site contains catalog/plugins.json,
packages.json, simple/, and pypi/.
To preview documentation while editing:
The server listens at http://localhost:8000 by default. Override the address
when needed:
Generated files¶
Generated site inputs and maintained registry metadata come from repository metadata, plugin docs, package metadata, catalog config, and ownership files:
docs/plugins/ and the plugin section of zensical.toml are generated from
plugin package metadata and plugins/*/docs/. Do not edit generated plugin site
pages directly.
catalog/plugins.json is the checked-in machine-readable catalog registry.
Packages are added to it explicitly when preparing their first release:
That targeted command reads one package's entry points, package metadata,
[tool.ddp.catalog], docs URL configuration, and direct data-designer
dependency specifiers. Subsequent version releases reuse the existing catalog
registration unless registration metadata needs an intentional correction.
catalog/plugins.json is also checked in as the machine-readable NVIDIA
catalog. The default catalog URL is the GitHub Pages catalog URL:
This URL is deployed with the documentation site and the static package index
at https://nvidia-nemo.github.io/DataDesignerPlugins/simple/.
External catalogs may use any unauthenticated raw JSON endpoint or a local catalog
file path, and may serve packages from any Python package index or direct
reference.
Consumers should fetch the configured JSON URL or local file path, not a GitHub HTML file browser view.
Use focused regeneration and validation targets when only one generated surface changed:
| Change | Regenerate | Validate |
|---|---|---|
| Plugin docs or docs metadata | make plugin-docs |
make check-plugin-docs or make check |
| Package is ready for first release | make catalog PLUGIN=<package> |
make check-catalog or make check |
| Package-list metadata or site package-index wiring | make package-index |
make check-package-index or make check |
| Per-plugin ownership | make codeowners |
make check-codeowners or make check |
| SPDX headers | make update-license-headers |
make check-license-headers or make check |
GitHub CI¶
Pull requests run the main CI workflow:
- lint
- isolated plugin tests
- plugin validation
- generated metadata and license header checks, including
make check-catalogfor checked-in catalog shape, plusmake check-package-indexfor package-list and static index generation
Documentation changes also run the documentation workflow. On pull requests the
workflow builds the site and uploads a preview artifact. On pushes to main, or
when a package release dispatches the workflow after updating package metadata,
it builds the same site and deploys site/ to GitHub Pages. Every Pages deploy
includes documentation, catalog/plugins.json, and the static package index so
docs-only deploys do not remove installer-facing files.