Skip to content

Commit cfe0acd

Browse files
author
Kyle
committed
Fix dandi-staging alias: also patch get_instance to remap to dandi-sandbox
dandi >= 0.74.0 has an explicit ValueError check rejecting 'dandi-staging' after the known_instances lookup. Patching known_instances alone isn't enough. Now also patch dandi.utils.get_instance to remap 'dandi-staging' to 'dandi-sandbox' before the check runs.
1 parent 44d210d commit cfe0acd

1 file changed

Lines changed: 20 additions & 4 deletions

File tree

src/pyflask/manageNeuroconv/manage_neuroconv.py

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1382,16 +1382,32 @@ def upload_multiple_filesystem_objects_to_dandi(**kwargs) -> list[Path]:
13821382

13831383

13841384
def _ensure_dandi_staging_alias():
1385-
"""Ensure 'dandi-staging' exists in dandi's known_instances.
1385+
"""Ensure 'dandi-staging' works as an alias for 'dandi-sandbox'.
13861386
1387-
dandi >= 0.74.0 renamed 'dandi-staging' to 'dandi-sandbox', but
1388-
neuroconv < 0.9.0 uses 'dandi-staging' internally. Register the
1389-
old name as an alias pointing to the sandbox URLs.
1387+
dandi >= 0.74.0 renamed 'dandi-staging' to 'dandi-sandbox' and added an
1388+
explicit ValueError check rejecting the old name. neuroconv < 0.9.0 uses
1389+
'dandi-staging' internally. We patch both the known_instances dict and
1390+
the get_instance function to bypass the rejection.
13901391
"""
13911392
from dandi.consts import known_instances
13921393
if "dandi-staging" not in known_instances and "dandi-sandbox" in known_instances:
13931394
known_instances["dandi-staging"] = known_instances["dandi-sandbox"]
13941395

1396+
# Patch get_instance to not raise ValueError for dandi-staging
1397+
try:
1398+
import dandi.utils as _dandi_utils
1399+
_original_get_instance = getattr(_dandi_utils, '_original_get_instance_fn', None)
1400+
if _original_get_instance is None and hasattr(_dandi_utils, 'get_instance'):
1401+
_original = _dandi_utils.get_instance
1402+
def _patched_get_instance(dandi_instance_id, *args, **kwargs):
1403+
if dandi_instance_id == "dandi-staging":
1404+
dandi_instance_id = "dandi-sandbox"
1405+
return _original(dandi_instance_id, *args, **kwargs)
1406+
_dandi_utils._original_get_instance_fn = _original
1407+
_dandi_utils.get_instance = _patched_get_instance
1408+
except (ImportError, AttributeError):
1409+
pass
1410+
13951411

13961412
def upload_folder_to_dandi(
13971413
dandiset_id: str,

0 commit comments

Comments
 (0)