3131)
3232from spatialdata ._logging import logger
3333from spatialdata ._types import ArrayLike , Raster_T
34- from spatialdata ._utils import (
35- _deprecation_alias ,
36- _error_message_add_element ,
37- )
34+ from spatialdata ._utils import _deprecation_alias , _error_message_add_element
3835from spatialdata .models import (
3936 Image2DModel ,
4037 Image3DModel ,
@@ -600,7 +597,7 @@ def path(self, value: Path | None) -> None:
600597 )
601598
602599 def _get_groups_for_element (
603- self , zarr_path : Path , element_type : str , element_name : str
600+ self , zarr_path : UPath , element_type : str , element_name : str
604601 ) -> tuple [zarr .Group , zarr .Group , zarr .Group ]:
605602 """
606603 Get the Zarr groups for the root, element_type and element for a specific element.
@@ -620,9 +617,9 @@ def _get_groups_for_element(
620617 -------
621618 either the existing Zarr subgroup or a new one.
622619 """
623- if not isinstance ( zarr_path , Path ):
624- raise ValueError ( "zarr_path should be a Path object" )
625- store = parse_url (zarr_path , mode = "r+" ). store
620+ from spatialdata . _io . _utils import _open_zarr_store
621+
622+ store = _open_zarr_store (zarr_path , mode = "r+" )
626623 root = zarr .group (store = store )
627624 if element_type not in ["images" , "labels" , "points" , "polygons" , "shapes" , "tables" ]:
628625 raise ValueError (f"Unknown element type { element_type } " )
@@ -1375,7 +1372,7 @@ def delete_element_from_disk(self, element_name: str | list[str]) -> None:
13751372 self .delete_element_from_disk (name )
13761373 return
13771374
1378- from spatialdata ._io ._utils import _backed_elements_contained_in_path
1375+ from spatialdata ._io ._utils import _backed_elements_contained_in_path , _open_zarr_store
13791376
13801377 if self .path is None :
13811378 raise ValueError ("The SpatialData object is not backed by a Zarr store." )
@@ -1416,7 +1413,7 @@ def delete_element_from_disk(self, element_name: str | list[str]) -> None:
14161413 )
14171414
14181415 # delete the element
1419- store = parse_url (self .path , mode = "r+" ). store
1416+ store = _open_zarr_store (self .path )
14201417 root = zarr .group (store = store )
14211418 root [element_type ].pop (element_name )
14221419 store .close ()
@@ -1437,7 +1434,9 @@ def _check_element_not_on_disk_with_different_type(self, element_type: str, elem
14371434 )
14381435
14391436 def write_consolidated_metadata (self ) -> None :
1440- store = parse_url (self .path , mode = "r+" ).store
1437+ from spatialdata ._io ._utils import _open_zarr_store
1438+
1439+ store = _open_zarr_store (self .path )
14411440 # consolidate metadata to more easily support remote reading bug in zarr. In reality, 'zmetadata' is written
14421441 # instead of '.zmetadata' see discussion https://github.com/zarr-developers/zarr-python/issues/1121
14431442 zarr .consolidate_metadata (store , metadata_key = ".zmetadata" )
@@ -1574,15 +1573,11 @@ def write_transformations(self, element_name: str | None = None) -> None:
15741573 )
15751574 axes = get_axes_names (element )
15761575 if isinstance (element , DataArray | DataTree ):
1577- from spatialdata ._io ._utils import (
1578- overwrite_coordinate_transformations_raster ,
1579- )
1576+ from spatialdata ._io ._utils import overwrite_coordinate_transformations_raster
15801577
15811578 overwrite_coordinate_transformations_raster (group = element_group , axes = axes , transformations = transformations )
15821579 elif isinstance (element , DaskDataFrame | GeoDataFrame | AnnData ):
1583- from spatialdata ._io ._utils import (
1584- overwrite_coordinate_transformations_non_raster ,
1585- )
1580+ from spatialdata ._io ._utils import overwrite_coordinate_transformations_non_raster
15861581
15871582 overwrite_coordinate_transformations_non_raster (
15881583 group = element_group , axes = axes , transformations = transformations
0 commit comments