Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
- [ ] Plugin installs standalone (`uv pip install -e plugins/<plugin-dir>`)
- [ ] Plugin docs regenerated if plugin docs, list, or metadata changed (`make plugin-docs`)
- [ ] Documentation builds if docs changed (`make docs`)
- [ ] `catalog/plugins.json` regenerated if plugin list or metadata changed (`make catalog`)
- [ ] `.github/CODEOWNERS` regenerated if ownership changed (`make codeowners`)
- [ ] Per-plugin `CODEOWNERS` file included (auto-created by `ddp new`)
- [ ] NVIDIA SPDX headers on all files (`make check-license-headers`)
3 changes: 2 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
with:
python-version: "3.10"
enable-cache: true
# test uses isolated venvs, not workspace sync
- run: make sync
- run: make test

validate:
Expand Down Expand Up @@ -60,5 +60,6 @@ jobs:
path: |
docs/plugins/**
zensical.toml
catalog/plugins.json.new
.github/CODEOWNERS.new
if-no-files-found: ignore
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -198,5 +198,5 @@ Release facts:
- [DataDesigner GitHub](https://github.com/NVIDIA-NeMo/DataDesigner)
- [DataDesigner Latest Release Notes](https://github.com/NVIDIA-NeMo/DataDesigner/releases/latest)
- [DataDesigner Plugin Authoring Guide](https://nvidia-nemo.github.io/DataDesigner/latest/plugins/overview/)
- [data-designer-plugins authoring guide](docs/adding-a-plugin.md)
- [data-designer-plugins plugin catalog](docs/catalog.md)
- [data-designer-plugins authoring guide](docs/authoring.md)
- [data-designer-plugins plugin catalog](catalog/plugins.json)
19 changes: 15 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

.PHONY: sync lint format test validate docs docs-server plugin-docs check-plugin-docs codeowners check-codeowners check-license-headers update-license-headers check all bump release build-plugin validate-release test-plugin check-owner
.PHONY: sync lint format test test-devtools test-plugins validate docs docs-server plugin-docs catalog check-plugin-docs check-catalog codeowners check-codeowners check-license-headers update-license-headers check all bump release build-plugin validate-release test-plugin check-owner

# ── Setup ────────────────────────────────────────────────────────────────

Expand All @@ -22,7 +22,12 @@ format:
# Auto-discover plugins and test each in an isolated venv.
# Catches dependency leaks that workspace-level testing misses.

test:
test: test-devtools test-plugins

test-devtools:
uv run pytest devtools/ddp/tests/ -v

test-plugins:
@failed=0; \
for pyproject in plugins/*/pyproject.toml; do \
plugin_dir="$$(dirname "$$pyproject")"; \
Expand Down Expand Up @@ -57,17 +62,23 @@ DOCS_DEV_ADDR ?= localhost:8000
docs-server: plugin-docs
uv run zensical serve --dev-addr $(DOCS_DEV_ADDR)

# ── Plugin docs & CODEOWNERS ──────────────────────────────────────────────
# ── Plugin docs, catalog & CODEOWNERS ─────────────────────────────────────

plugin-docs:
uv run ddp plugin-docs

catalog:
uv run ddp sync catalog

codeowners:
uv run ddp codeowners > .github/CODEOWNERS

check-plugin-docs:
uv run ddp plugin-docs --check

check-catalog:
uv run ddp sync catalog --check

check-codeowners:
uv run ddp codeowners > .github/CODEOWNERS.new
diff .github/CODEOWNERS .github/CODEOWNERS.new
Expand All @@ -81,7 +92,7 @@ update-license-headers:

# ── Aggregate targets ────────────────────────────────────────────────────

check: check-plugin-docs check-codeowners check-license-headers
check: check-plugin-docs check-catalog check-codeowners check-license-headers

all: lint test validate check docs

Expand Down
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ This generates a complete plugin skeleton under `plugins/data-designer-my-plugin
DataDesignerPlugins/
|-- devtools/
| `-- ddp/ # Monorepo management tooling (ddp CLI, dev-only)
|-- catalog/ # Machine-consumable plugin catalog data
|-- plugins/ # One directory per plugin (auto-discovered by uv)
| `-- data-designer-template/ # Reference implementation
`-- docs/ # Zensical documentation source
Expand All @@ -43,8 +44,9 @@ make lint # Lint and format check (ruff)
make format # Auto-fix lint issues and reformat
make test # Test each plugin in an isolated venv
make validate # Run assert_valid_plugin on all entry points
make check # Verify generated plugin docs, CODEOWNERS, and license headers are up to date
make check # Verify generated plugin docs, catalog, CODEOWNERS, and license headers are up to date
make plugin-docs # Regenerate docs/plugins/ from per-plugin docs and metadata
make catalog # Regenerate catalog/plugins.json
make docs # Build the Zensical documentation site
make docs-server # Serve docs locally at http://localhost:8000
make all # lint + test + validate + check + docs (full local CI)
Expand All @@ -60,6 +62,7 @@ If you change plugin docs, plugin metadata, or ownership, regenerate derived fil

```bash
make plugin-docs # Regenerate plugin documentation site inputs
make catalog # Regenerate catalog/plugins.json
make codeowners # Regenerate CODEOWNERS
make update-license-headers # Fix SPDX headers
```
Expand All @@ -71,6 +74,7 @@ The `ddp` command manages the monorepo. Run `uv run ddp --help` to see all subco
| Command | Description |
|---------|-------------|
| `ddp new <name>` | Scaffold a new plugin |
| `ddp sync catalog` | Sync the static plugin catalog JSON |
| `ddp validate` | Validate all installed plugins |
| `ddp plugin-docs` | Generate plugin docs site inputs |
| `ddp codeowners` | Aggregate CODEOWNERS to stdout |
Expand Down
30 changes: 30 additions & 0 deletions catalog/plugins.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"schema_version": 1,
"plugins": [
{
"name": "text-transform",
"plugin_type": "column-generator",
"description": "Template Data Designer plugin \u2014 text transform column generator",
"package": {
"name": "data-designer-template",
"version": "0.1.0",
"path": "plugins/data-designer-template"
},
"entry_point": {
"group": "data_designer.plugins",
"name": "text-transform",
"value": "data_designer_template.plugin:plugin"
},
"compatibility": {
"python": {
"specifier": ">=3.10"
},
"data_designer": {
"requirement": "data-designer>=0.5.7",
"specifier": ">=0.5.7",
"marker": null
}
}
}
]
}
1 change: 1 addition & 0 deletions devtools/ddp/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ version = "0.1.0"
description = "Local dev-only monorepo management tooling for data-designer-plugins (not a runtime dependency)"
requires-python = ">=3.10"
dependencies = [
"packaging>=24.0",
# Backport of the stdlib `tomllib` (added in 3.11); only installed on 3.10.
"tomli>=1.1.0; python_version < '3.11'",
]
Expand Down
4 changes: 2 additions & 2 deletions devtools/ddp/src/ddp/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@
"""Local dev-only monorepo management tooling for data-designer-plugins.
This package is NOT a runtime dependency of any plugin. It provides CLI
tools for scaffolding, validation, plugin docs generation, CODEOWNERS
aggregation, and license-header management across the monorepo.
tools for scaffolding, validation, plugin docs generation, catalog syncing,
CODEOWNERS aggregation, and license-header management across the monorepo.
"""
Loading
Loading