Skip to content

Commit 2d10167

Browse files
authored
Merge pull request #1790 from dandi/enh-lad-errors-dandiset
Enhance dandiset metadata error messages
2 parents 82f9610 + b964883 commit 2d10167

1 file changed

Lines changed: 13 additions & 3 deletions

File tree

dandi/dandiset.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,11 @@ def __init__(
4242
if not allow_empty and not os.path.lexists(
4343
self.path_obj / dandiset_metadata_file
4444
):
45-
raise ValueError(f"No dandiset at {path}")
45+
raise ValueError(
46+
f"No dandiset at {path}. "
47+
f"The directory does not contain a '{dandiset_metadata_file}' file. "
48+
"Use 'dandi download' to download a dandiset or check the path."
49+
)
4650
self.metadata: dict | None = None
4751
self._metadata_file_obj = self.path_obj / dandiset_metadata_file
4852
self._load_metadata()
@@ -139,11 +143,17 @@ def _get_identifier(metadata: dict) -> str | None:
139143
@property
140144
def identifier(self) -> str:
141145
if self.metadata is None:
142-
raise ValueError("No metadata record found in Dandiset")
146+
raise ValueError(
147+
f"No metadata record found in Dandiset at {self.path}. "
148+
f"The '{dandiset_metadata_file}' file may be empty or corrupted. "
149+
"Use 'dandi download' to re-download the dandiset metadata."
150+
)
143151
id_ = self._get_identifier(self.metadata)
144152
if not id_:
145153
raise ValueError(
146-
f"Found no dandiset.identifier in metadata record: {self.metadata}"
154+
f"Found no dandiset.identifier in metadata record. "
155+
f"The '{dandiset_metadata_file}' file must contain an 'identifier' field. "
156+
f"Metadata: {self.metadata}"
147157
)
148158
return id_
149159

0 commit comments

Comments
 (0)