dandi / dandi/dandi-cli

Allow to extract basic metadata such as size + date modified from git/annex instead of a physical file

Open
#1,089 0 comments 0 reactions 0 assignees View on GitHub
schema
Dominant language
Python
Stars
28
Forks
37
Avg merge
1d 17h
Merged PRs (30d)
9

Description

whenever we just want to extract/update metadata possibly based just on what we have in the filename/git/git-annex we would not have a blob available. should we allow for extraction of that metadata from git/annex instead?

that is the code spot

```patch
diff --git a/dandi/metadata.py b/dandi/metadata.py
index c1a13a6..f387726 100644
--- a/dandi/metadata.py
+++ b/dandi/metadata.py
@@ -925,18 +925,26 @@ def add_common_metadata(
start_time: datetime,
end_time: datetime,
digest: Optional[Digest] = None,
+ include_content_based: bool = False,
) -> None:
if digest is not None:
metadata["digest"] = digest.asdict()
else:
metadata["digest"] = {}
metadata["dateModified"] = get_utcnow_datetime()
- metadata["blobDateModified"] = ensure_datetime(os.stat(path).st_mtime)
- if metadata["blobDateModified"] > metadata["dateModified"]:
- lgr.warning(
- "mtime %s of %s is in the future", metadata["blobDateModified"], path
- )
- metadata["contentSize"] = os.path.getsize(path)
+ if include_content_based:
+ metadata["blobDateModified"] = ensure_datetime(os.stat(path).st_mtime)
+ if metadata["blobDateModified"] > metadata["dateModified"]:
+ lgr.warning(
+ "mtime %s of %s is in the future", metadata["blobDateModified"], path
+ )
+ metadata["contentSize"] = os.path.getsize(path)
+ else:
+ # TODO: get for annexed stuff
+ # blobDateModified -- commit date based on git log -1 ? (see
+ # https://github.com/datalad/datalad-metalad/issues/257)
+ # size -- from key
+ pass
metadata.setdefault("wasGeneratedBy", []).append(
get_generator(start_time, end_time)
)

```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.