Skip to content

Commit 5a5f7aa

Browse files
committed
Tweak error message
Signed-off-by: Mike Knepper <mknepper@nvidia.com>
1 parent 6903145 commit 5a5f7aa

2 files changed

Lines changed: 40 additions & 2 deletions

File tree

packages/data_designer_nemo/src/data_designer_nemo/seed.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,16 @@ async def _validate_seed_from_files_service(
102102
f"An unexpected error occurred while listing path {fragment!r} in fileset {fully_qualified_fileset_name!r}: {e}"
103103
) from e
104104

105+
# A path that resolves to no files provides nothing to seed from, so it is
106+
# invalid regardless of whether the path itself exists. A FilesetFileSeedSource
107+
# points at a single file, while the directory-style sources enumerate files
108+
# under a directory; tailor the message accordingly.
105109
if not response.data:
106-
raise NDDInvalidConfigError(f"Path {fragment!r} not found in fileset {fully_qualified_fileset_name!r}")
110+
if isinstance(seed_source, FilesetFileSeedSource):
111+
raise NDDInvalidConfigError(f"File {fragment!r} not found in fileset {fully_qualified_fileset_name!r}")
112+
raise NDDInvalidConfigError(
113+
f"Path {fragment!r} in fileset {fully_qualified_fileset_name!r} contains no files to use as seed data"
114+
)
107115

108116
return canonical_root
109117

packages/data_designer_nemo/tests/unit/test_remote_filesystem_seeds.py

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
import pytest
1010
from data_designer.engine.resources.seed_reader import DirectorySeedReader, FileContentsSeedReader
1111
from data_designer_nemo.context import RemoteDataDesignerContext
12-
from data_designer_nemo.seed import validate_seed
12+
from data_designer_nemo.errors import NDDInvalidConfigError
13+
from data_designer_nemo.fileset_file_seed_source import FilesetFileSeedSource
14+
from data_designer_nemo.seed import _validate_seed_from_files_service, validate_seed
1315
from nemo_platform import AsyncNeMoPlatform
1416

1517

@@ -35,3 +37,31 @@ async def test_validate_seed_returns_canonical_validated_filesystem_root() -> No
3537
assert validated_root == "default/docs#corpus"
3638
sdk.files.filesets.retrieve.assert_awaited_once_with(name="docs", workspace="default")
3739
sdk.files.list.assert_awaited_once_with(remote_path="corpus", fileset="docs", workspace="default")
40+
41+
42+
@pytest.mark.asyncio
43+
async def test_validate_seed_rejects_path_with_no_files() -> None:
44+
sdk = AsyncMock(spec=AsyncNeMoPlatform)
45+
sdk.files.filesets.retrieve = AsyncMock()
46+
sdk.files.list = AsyncMock(return_value=Mock(data=[]))
47+
48+
builder = dd.DataDesignerConfigBuilder()
49+
builder.with_seed_dataset(dd.FileContentsSeedSource(path="docs#corpus", file_pattern="*.md"))
50+
config = builder.build()
51+
52+
with pytest.raises(NDDInvalidConfigError, match="contains no files to use as seed data"):
53+
await validate_seed(config, "default", sdk, is_local=False)
54+
55+
56+
@pytest.mark.asyncio
57+
async def test_validate_seed_reports_missing_fileset_file() -> None:
58+
# FilesetFileSeedSource points at a single file, so the error should say "File ... not found"
59+
# rather than the directory-style "contains no files" message.
60+
sdk = AsyncMock(spec=AsyncNeMoPlatform)
61+
sdk.files.filesets.retrieve = AsyncMock()
62+
sdk.files.list = AsyncMock(return_value=Mock(data=[]))
63+
64+
seed_source = FilesetFileSeedSource(path="docs#corpus/missing.parquet")
65+
66+
with pytest.raises(NDDInvalidConfigError, match=r"File 'corpus/missing.parquet' not found"):
67+
await _validate_seed_from_files_service(seed_source, "default", sdk)

0 commit comments

Comments
 (0)