Skip to content

Commit c2f1ddd

Browse files
authored
Merge branch 'main' into johnny/docs/plugins-new-structure-and-seed-type
2 parents ef74994 + 58734d0 commit c2f1ddd

File tree

12 files changed

+223
-5
lines changed

12 files changed

+223
-5
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Health Checks
2+
3+
on:
4+
schedule:
5+
# Every Monday at 08:00 UTC
6+
- cron: "0 8 * * 1"
7+
release:
8+
types: [published]
9+
workflow_dispatch:
10+
11+
jobs:
12+
health-checks:
13+
name: Provider Health Checks
14+
runs-on: ubuntu-latest
15+
16+
steps:
17+
- name: Checkout code
18+
uses: actions/checkout@v4
19+
20+
- name: Install uv
21+
uses: astral-sh/setup-uv@v5
22+
with:
23+
version: "latest"
24+
python-version: "3.11"
25+
enable-cache: true
26+
27+
- name: Install dependencies
28+
run: make install-dev
29+
30+
- name: Run health checks
31+
env:
32+
NVIDIA_API_KEY: ${{ secrets.TEST_NVIDIA_API_KEY }}
33+
OPENAI_API_KEY: ${{ secrets.TEST_OPENAI_API_KEY }}
34+
OPENROUTER_API_KEY: ${{ secrets.TEST_OPENROUTER_API_KEY }}
35+
run: make health-checks

Makefile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ help:
4848
@echo " test - Run all unit tests"
4949
@echo " coverage - Run tests with coverage report"
5050
@echo " test-e2e - Run e2e plugin tests"
51+
@echo " health-checks - Run provider health checks"
5152
@echo " test-run-tutorials - Run tutorial notebooks as e2e tests"
5253
@echo " test-run-recipes - Run recipe scripts as e2e tests"
5354
@echo " test-run-all-examples - Run all tutorials and recipes as e2e tests"
@@ -273,6 +274,10 @@ test-e2e:
273274
@echo "🧪 Running e2e tests..."
274275
uv run --no-cache --refresh --directory tests_e2e pytest -s
275276

277+
health-checks:
278+
@echo "🏥 Running provider health checks..."
279+
uv run --group dev python scripts/health_checks.py
280+
276281
test-run-tutorials:
277282
@echo "🧪 Running tutorials as e2e tests..."
278283
@TUTORIAL_WORKDIR=$$(mktemp -d); \
@@ -582,6 +587,7 @@ clean-test-coverage:
582587
install install-dev install-dev-notebooks install-dev-recipes \
583588
lint lint-config lint-engine lint-fix lint-fix-config lint-fix-engine lint-fix-interface lint-interface \
584589
perf-import publish serve-docs-locally show-versions \
590+
health-checks \
585591
test test-config test-config-isolated test-e2e test-engine test-engine-isolated \
586592
test-interface test-interface-isolated test-isolated \
587593
test-run-all-examples test-run-recipes test-run-tutorials \

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[![CI](https://github.com/NVIDIA-NeMo/DataDesigner/actions/workflows/ci.yml/badge.svg)](https://github.com/NVIDIA-NeMo/DataDesigner/actions/workflows/ci.yml)
44
[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
5-
[![Python 3.10 - 3.13](https://img.shields.io/badge/🐍_Python-3.10_|_3.11_|_3.12_|_3.13-blue.svg)](https://www.python.org/downloads/) [![NeMo Microservices](https://img.shields.io/badge/NeMo-Microservices-76b900)](https://docs.nvidia.com/nemo/microservices/latest/index.html) [![Code](https://img.shields.io/badge/Code-Documentation-8A2BE2.svg)](https://nvidia-nemo.github.io/DataDesigner/)
5+
[![Python 3.10 - 3.13](https://img.shields.io/badge/🐍_Python-3.10_|_3.11_|_3.12_|_3.13-blue.svg)](https://www.python.org/downloads/) [![NeMo Microservices](https://img.shields.io/badge/NeMo-Microservices-76b900)](https://docs.nvidia.com/nemo/microservices/latest/index.html) [![Code](https://img.shields.io/badge/Code-Documentation-8A2BE2.svg)](https://nvidia-nemo.github.io/DataDesigner/) ![Tokens](https://img.shields.io/badge/100+_Billion-Tokens_Generated-76b900.svg?logo=nvidia&logoColor=white)
66

77
**Generate high-quality synthetic datasets from scratch or using your own seed data.**
88

@@ -148,11 +148,11 @@ To disable telemetry capture, set `NEMO_TELEMETRY_ENABLED=false`.
148148

149149
### Top Models
150150

151-
This chart represents the breakdown of models used for Data Designer across all synthetic data generation jobs from 12/18/2025 to 1/14/2026.
151+
This chart represents the breakdown of models used for Data Designer across all synthetic data generation jobs from 1/5/2026 to 2/5/2026.
152152

153153
![Top models used for synthetic data generation](docs/images/top-models.png)
154154

155-
_Last updated on 1/14/2026_
155+
_Last updated on 2/05/2026_
156156

157157
---
158158

docs/images/top-models.png

29.5 KB
Loading

packages/data-designer-config/src/data_designer/config/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
RemoteValidatorParams,
100100
ValidatorType,
101101
)
102+
from data_designer.config.version import get_library_version # noqa: F401
102103

103104
# Base module path and submodule paths for lazy imports
104105
_MOD_BASE = "data_designer.config"
@@ -202,6 +203,8 @@
202203
"LocalCallableValidatorParams": (_MOD_VALIDATOR_PARAMS, "LocalCallableValidatorParams"),
203204
"RemoteValidatorParams": (_MOD_VALIDATOR_PARAMS, "RemoteValidatorParams"),
204205
"ValidatorType": (_MOD_VALIDATOR_PARAMS, "ValidatorType"),
206+
# version
207+
"get_library_version": (f"{_MOD_BASE}.version", "get_library_version"),
205208
}
206209

207210
__all__ = list(_LAZY_IMPORTS.keys())

packages/data-designer-config/src/data_designer/config/config_builder.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import logging
88
from pathlib import Path
99

10+
from pydantic import computed_field
1011
from pygments import highlight
1112
from pygments.formatters import HtmlFormatter
1213
from pygments.lexers import PythonLexer
@@ -47,6 +48,7 @@
4748
from data_designer.config.utils.io_helpers import serialize_data, smart_load_yaml
4849
from data_designer.config.utils.misc import can_run_data_designer_locally, json_indent_list_of_strings, kebab_to_snake
4950
from data_designer.config.utils.type_helpers import resolve_string_enum
51+
from data_designer.config.version import get_library_version
5052

5153
logger = logging.getLogger(__name__)
5254

@@ -64,6 +66,10 @@ class BuilderConfig(ExportableConfigBase):
6466

6567
data_designer: DataDesignerConfig
6668

69+
@computed_field
70+
def library_version(self) -> str:
71+
return get_library_version()
72+
6773

6874
class DataDesignerConfigBuilder:
6975
"""Config builder for Data Designer configurations.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
from __future__ import annotations
5+
6+
import importlib.metadata
7+
8+
9+
def get_library_version() -> str:
10+
"""Get the installed library version, or 'unknown' if not available."""
11+
try:
12+
return importlib.metadata.version("data-designer-config")
13+
except importlib.metadata.PackageNotFoundError:
14+
return "unknown"

packages/data-designer-config/tests/config/test_config_builder.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
from data_designer.config.utils.code_lang import CodeLang
4242
from data_designer.config.utils.info import ConfigBuilderInfo
4343
from data_designer.config.validator_params import CodeValidatorParams
44+
from data_designer.config.version import get_library_version
4445
from data_designer.lazy_heavy_imports import pd
4546

4647
if TYPE_CHECKING:
@@ -360,6 +361,17 @@ def test_add_profiler(stub_empty_builder):
360361
stub_empty_builder.add_profiler("invalid")
361362

362363

364+
def test_builder_config_library_version(stub_data_designer_builder):
365+
builder_config = stub_data_designer_builder.get_builder_config()
366+
assert isinstance(builder_config.library_version, str)
367+
assert builder_config.library_version == get_library_version()
368+
369+
# Verify it is included in serialization
370+
dumped = builder_config.model_dump()
371+
assert "library_version" in dumped
372+
assert dumped["library_version"] == builder_config.library_version
373+
374+
363375
def test_build(stub_data_designer_builder):
364376
# verify transformation to config object
365377
ndd_config = stub_data_designer_builder.build()
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
from __future__ import annotations
5+
6+
import importlib.metadata
7+
from unittest.mock import patch
8+
9+
from data_designer.config.version import get_library_version
10+
11+
12+
def test_get_library_version_returns_valid_string() -> None:
13+
version = get_library_version()
14+
assert isinstance(version, str)
15+
assert version != "unknown"
16+
assert len(version) > 0
17+
18+
19+
def test_get_library_version_returns_unknown_on_missing_package() -> None:
20+
with patch(
21+
"data_designer.config.version.importlib.metadata.version",
22+
side_effect=importlib.metadata.PackageNotFoundError("data-designer-config"),
23+
):
24+
assert get_library_version() == "unknown"

packages/data-designer-engine/src/data_designer/engine/dataset_builders/column_wise_builder.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
from __future__ import annotations
55

66
import functools
7-
import importlib.metadata
87
import logging
98
import time
109
import uuid
@@ -21,6 +20,7 @@
2120
ProcessorConfig,
2221
ProcessorType,
2322
)
23+
from data_designer.config.version import get_library_version
2424
from data_designer.engine.column_generators.generators.base import (
2525
ColumnGenerator,
2626
ColumnGeneratorWithModel,
@@ -50,7 +50,7 @@
5050

5151
logger = logging.getLogger(__name__)
5252

53-
_CLIENT_VERSION: str = importlib.metadata.version("data-designer-engine")
53+
_CLIENT_VERSION: str = get_library_version()
5454

5555

5656
class ColumnWiseDatasetBuilder:

0 commit comments

Comments
 (0)