From c054618817333dfed69df1a0baf9771e6bbd3ef8 Mon Sep 17 00:00:00 2001 From: William Moore Date: Tue, 12 Aug 2025 11:58:55 +0100 Subject: [PATCH] Try import and use zarr v3 OR zarr v2 --- metadata/register.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/metadata/register.py b/metadata/register.py index 6480885..6b04e8b 100644 --- a/metadata/register.py +++ b/metadata/register.py @@ -22,6 +22,15 @@ from urllib.parse import urlsplit import zarr +FsspecStore = None +FSStore = None +try: + # zarr >= 3.0.0 + from zarr.storage import FsspecStore +except ImportError: + # zarr 2 + from zarr.storage import FSStore + import argparse from numpy import iinfo, finfo @@ -552,10 +561,13 @@ def main(): if endpoint: storage_options['client_kwargs'] = {'endpoint_url': endpoint} - store = zarr.storage.FsspecStore.from_url(uri, - read_only=True, - storage_options=storage_options - ) + if FsspecStore is not None: + store = FsspecStore.from_url(uri, + read_only=True, + storage_options=storage_options + ) + else: + store = FSStore(uri, mode='r', **storage_options) zattrs = load_attrs(store) objs = [] @@ -572,7 +584,8 @@ def main(): print("Checking for series:", series) obj = register_image(conn, store, args, None, image_path=str(series)) objs.append(obj) - except FileNotFoundError: + except: + # FileNotFoundError (zarr v3) or zarr.errors.PathNotFoundError (zarr v2) series_exists = False series += 1 else: