From dffd2b68b39c1c8dcc8c28ed40c5a066ea41c102 Mon Sep 17 00:00:00 2001 From: Jeremy Magland Date: Tue, 10 Sep 2024 09:53:35 -0400 Subject: [PATCH 1/2] Add additional URL resolver functionality --- lindi/LindiRemfile/LindiRemfile.py | 4 ++++ lindi/LindiRemfile/additional_url_resolvers.py | 14 ++++++++++++++ lindi/__init__.py | 1 + 3 files changed, 19 insertions(+) create mode 100644 lindi/LindiRemfile/additional_url_resolvers.py diff --git a/lindi/LindiRemfile/LindiRemfile.py b/lindi/LindiRemfile/LindiRemfile.py index f19eb95..021c4ec 100644 --- a/lindi/LindiRemfile/LindiRemfile.py +++ b/lindi/LindiRemfile/LindiRemfile.py @@ -2,6 +2,7 @@ import time import os import requests +from .additional_url_resolvers import get_additional_url_resolvers from ..LocalCache.LocalCache import LocalCache default_min_chunk_size = 128 * 1024 # This is different from Remfile - this is an important decision because it determines the chunk size in the LocalCache @@ -41,6 +42,7 @@ def __init__( Does not support using multiple threads Does not use memory cache if LocalCache is specified Handles DANDI authentication + Handles additional_url_resolver A note: In the context of LINDI, this LindiRemfile is going to be used for loading @@ -367,6 +369,8 @@ def _resolve_dandi_url(url: str): def _resolve_url(url: str): + for aur in get_additional_url_resolvers(): + url = aur(url) if url in _global_resolved_urls: elapsed = time.time() - _global_resolved_urls[url]["timestamp"] if elapsed < 60 * 10: diff --git a/lindi/LindiRemfile/additional_url_resolvers.py b/lindi/LindiRemfile/additional_url_resolvers.py new file mode 100644 index 0000000..9c179ef --- /dev/null +++ b/lindi/LindiRemfile/additional_url_resolvers.py @@ -0,0 +1,14 @@ +from typing import Callable, List + + +_global = { + 'additional_url_resolvers': [] +} + + +def get_additional_url_resolvers() -> List[Callable[[str], str]]: + return _global['additional_url_resolvers'] + + +def add_additional_url_resolver(resolver: Callable[[str], str]): + _global['additional_url_resolvers'].append(resolver) diff --git a/lindi/__init__.py b/lindi/__init__.py index f300066..be60471 100644 --- a/lindi/__init__.py +++ b/lindi/__init__.py @@ -3,3 +3,4 @@ from .LindiStagingStore import LindiStagingStore, StagingArea # noqa: F401 from .LocalCache.LocalCache import LocalCache, ChunkTooLargeError # noqa: F401 from .File.File import File # noqa: F401 +from .LindiRemfile.additional_url_resolvers import add_additional_url_resolver # noqa: F401 From 3b397f374f3d7438ca019b927ec1b2a34192e55c Mon Sep 17 00:00:00 2001 From: Jeremy Magland Date: Tue, 10 Sep 2024 09:54:06 -0400 Subject: [PATCH 2/2] Bump version to 0.4.0a2 in pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a30295e..931e111 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "lindi" -version = "0.4.0a1" +version = "0.4.0a2" description = "" authors = [ "Jeremy Magland ",