Skip to content

Commit 9a9a7a3

Browse files
committed
feat: delay import of dandischema.models in dandi.metadata.core
1 parent fccb72c commit 9a9a7a3

1 file changed

Lines changed: 17 additions & 3 deletions

File tree

dandi/metadata/core.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,26 @@
33
from datetime import datetime
44
from pathlib import Path
55
import re
6+
from typing import TYPE_CHECKING
67

7-
from dandischema import models
88
from pydantic import ByteSize
99

10-
from .util import extract_model, get_generator
1110
from .. import get_logger
12-
from ..misctypes import Digest, LocalReadableFile, Readable
1311
from ..utils import get_mime_type, get_utcnow_datetime
1412

13+
if TYPE_CHECKING:
14+
from dandischema import models
15+
16+
from ..misctypes import Digest, Readable
17+
1518
lgr = get_logger()
1619

1720

1821
def get_default_metadata(
1922
path: str | Path | Readable, digest: Digest | None = None
2023
) -> models.BareAsset:
24+
from dandischema import models
25+
2126
metadata = models.BareAsset.model_construct() # type: ignore[call-arg]
2227
start_time = end_time = datetime.now().astimezone()
2328
add_common_metadata(metadata, path, start_time, end_time, digest)
@@ -35,6 +40,11 @@ def add_common_metadata(
3540
Update a `dict` of raw "schemadata" with the fields that are common to both
3641
NWB assets and non-NWB assets
3742
"""
43+
from dandischema import models
44+
45+
from .util import get_generator
46+
from ..misctypes import LocalReadableFile, Readable
47+
3848
if digest is not None:
3949
metadata.digest = digest.asdict()
4050
else:
@@ -73,4 +83,8 @@ def prepare_metadata(metadata: dict) -> models.BareAsset:
7383
7484
.. [2] metadata in the form used by the ``dandischema`` library
7585
"""
86+
from dandischema import models
87+
88+
from .util import extract_model
89+
7690
return extract_model(models.BareAsset, metadata)

0 commit comments

Comments
 (0)