Skip to content

Commit

Permalink
Support Pathlib (#212)
Browse files Browse the repository at this point in the history
* Support Pathlib

* test

* Update CHANGELOG.md
  • Loading branch information
mavaylon1 authored Nov 7, 2024
1 parent e5c2e9e commit 3f78f9c
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 3 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# HDMF-ZARR Changelog

## 1.0.0 (Upcoming)
### Enhancements
* Added support for Pathlib paths. @mavaylon1 [#212](https://github.com/hdmf-dev/hdmf-zarr/pull/212)

## 0.9.0 (September 16, 2024)
### Enhancements
* Added support for appending a dataset of references. @mavaylon1 [#203](https://github.com/hdmf-dev/hdmf-zarr/pull/203)
Expand Down
9 changes: 7 additions & 2 deletions src/hdmf_zarr/backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@
from hdmf.query import HDMFDataset
from hdmf.container import Container

from pathlib import Path


# Module variables
ROOT_NAME = 'root'
"""
Expand Down Expand Up @@ -84,7 +87,7 @@ def can_read(path):
return False

@docval({'name': 'path',
'type': (str, *SUPPORTED_ZARR_STORES),
'type': (str, Path, *SUPPORTED_ZARR_STORES),
'doc': 'the path to the Zarr file or a supported Zarr store'},
{'name': 'manager', 'type': BuildManager, 'doc': 'the BuildManager to use for I/O', 'default': None},
{'name': 'mode', 'type': str,
Expand Down Expand Up @@ -115,6 +118,8 @@ def __init__(self, **kwargs):
else:
self.__synchronizer = synchronizer
self.__mode = mode
if isinstance(path, Path):
path = str(path)
self.__path = path
self.__file = None
self.__storage_options = storage_options
Expand Down Expand Up @@ -195,7 +200,7 @@ def is_remote(self):
'type': (NamespaceCatalog, TypeMap),
'doc': 'the NamespaceCatalog or TypeMap to load namespaces into'},
{'name': 'path',
'type': (str, *SUPPORTED_ZARR_STORES),
'type': (str, Path, *SUPPORTED_ZARR_STORES),
'doc': 'the path to the Zarr file or a supported Zarr store'},
{'name': 'storage_options', 'type': dict,
'doc': 'Zarr storage options to read remote folders',
Expand Down
13 changes: 12 additions & 1 deletion tests/unit/test_zarrio.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import os
import shutil
import warnings
import pathlib


CUR_DIR = os.path.dirname(os.path.realpath(__file__))
Expand Down Expand Up @@ -136,6 +137,16 @@ def setUp(self):
self.store = [NestedDirectoryStore(p) for p in self.store_path]


#########################################
# Pathlib Tests
#########################################
class TestPathlib(BaseTestZarrWriter):
"""Test writing of builder with Zarr using a custom DirectoryStore"""
def setUp(self):
super().setUp()
self.store = pathlib.Path(self.store_path)


#########################################
# Consolidate Metadata tests
#########################################
Expand Down Expand Up @@ -195,7 +206,7 @@ class TestDimensionLabels(BuildDatasetShapeMixin):
Workflow:
i) We need to define a `get_dataset_inc_spec` to set the dim in the spec (via BuildDatasetShapeMixin)
ii) Create and write a BarDataHolder with a BarData.
iii) Read and check that the _ARRAY_DIMENSIONS attribute is set.
iii) Read and check that the _ARRAY_DIMENSIONS attribute is set.
"""
def tearDown(self):
shutil.rmtree(self.store)
Expand Down

0 comments on commit 3f78f9c

Please sign in to comment.