|
5 | 5 | from datetime import datetime |
6 | 6 | from pathlib import Path |
7 | 7 | from threading import Lock |
| 8 | +from typing import TYPE_CHECKING |
8 | 9 | import weakref |
9 | 10 |
|
10 | | -from dandischema.models import BareAsset |
11 | | - |
12 | 11 | from dandi.bids_validator_deno import bids_validate |
13 | 12 |
|
14 | 13 | from .bases import GenericAsset, LocalFileAsset, NWBAsset |
|
18 | 17 | from ..misctypes import Digest |
19 | 18 | from ..validate_types import ValidationResult |
20 | 19 |
|
| 20 | +if TYPE_CHECKING: |
| 21 | + from dandischema.models import BareAsset |
| 22 | + |
21 | 23 | BIDS_ASSET_ERRORS = ("BIDS.NON_BIDS_PATH_PLACEHOLDER",) |
22 | 24 | BIDS_DATASET_ERRORS = ("BIDS.MANDATORY_FILE_MISSING_PLACEHOLDER",) |
23 | 25 |
|
@@ -84,6 +86,8 @@ def _get_metadata(self) -> None: |
84 | 86 |
|
85 | 87 | This populates `self._asset_metadata` |
86 | 88 | """ |
| 89 | + from dandischema.models import BareAsset |
| 90 | + |
87 | 91 | with self._lock: |
88 | 92 | if self._asset_metadata is None: |
89 | 93 | # Import here to avoid circular import |
@@ -236,6 +240,8 @@ def get_metadata( |
236 | 240 | digest: Digest | None = None, |
237 | 241 | ignore_errors: bool = True, |
238 | 242 | ) -> BareAsset: |
| 243 | + from dandischema.models import BareAsset |
| 244 | + |
239 | 245 | bids_metadata = BIDSAsset.get_metadata(self, digest, ignore_errors) |
240 | 246 | nwb_metadata = NWBAsset.get_metadata(self, digest, ignore_errors) |
241 | 247 | return BareAsset( |
|
0 commit comments