Skip to content

Commit 3daea7c

Browse files
committed
regex: attempt failed due to slight diff in files
1 parent aa75c98 commit 3daea7c

File tree

2 files changed

+16
-16
lines changed

2 files changed

+16
-16
lines changed

zarr/n5.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""This module contains a storage class and codec to support the N5 format.
22
"""
33
import os
4+
import re
45
import struct
56
import sys
67
import warnings
@@ -11,7 +12,7 @@
1112
from numcodecs.registry import get_codec, register_codec
1213

1314
from .meta import ZARR_FORMAT, json_dumps, json_loads
14-
from .storage import NestedDirectoryStore, _prog_ckey, _prog_number, normalize_storage_path
15+
from .storage import NestedDirectoryStore, _prog_number, normalize_storage_path
1516
from .storage import array_meta_key as zarr_array_meta_key
1617
from .storage import attrs_key as zarr_attrs_key
1718
from .storage import group_meta_key as zarr_group_meta_key
@@ -25,6 +26,9 @@
2526
n5_attrs_key = 'attributes.json'
2627
n5_keywords = ['n5', 'dataType', 'dimensions', 'blockSize', 'compression']
2728

29+
potential_key = re.compile(r'(.*?)/((\d+)(\/\d+)+)$')
30+
31+
2832

2933
class N5Store(NestedDirectoryStore):
3034
"""Storage class using directories and files on a standard file system,
@@ -143,6 +147,7 @@ def __setitem__(self, key, value):
143147

144148
key = invert_chunk_coords(key)
145149

150+
print(key, value)
146151
super().__setitem__(key, value)
147152

148153
def __delitem__(self, key):
@@ -538,22 +543,17 @@ def _contains_attrs(self, path):
538543
return len(attrs) > 0
539544

540545
def is_chunk_key(key):
541-
segments = list(key.split('/'))
542-
if segments:
543-
last_segment = segments[-1]
544-
return _prog_ckey.match(last_segment)
545-
return False # pragma: no cover
546+
return potential_key.match(key)
546547

547548
def invert_chunk_coords(key):
548-
segments = list(key.split('/'))
549-
if segments:
550-
last_segment = segments[-1]
551-
if _prog_ckey.match(last_segment):
552-
coords = list(last_segment.split('.'))
553-
last_segment = '.'.join(coords[::-1])
554-
segments = segments[:-1] + [last_segment]
555-
key = '/'.join(segments)
556-
return key
549+
550+
m = is_chunk_key(key)
551+
if m is None:
552+
return key
553+
554+
first = m.group(1)
555+
last = "/".join(m.group(2).split("/"))[::-1] # Reverse
556+
return f"{first}/{last}"
557557

558558
def group_metadata_to_n5(group_metadata):
559559
'''Convert group metadata from zarr to N5 format.'''

zarr/storage.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1248,7 +1248,7 @@ def __init__(self, suffix='', prefix='zarr', dir=None, normalize_keys=False,
12481248
super().__init__(path, normalize_keys=normalize_keys)
12491249

12501250

1251-
_prog_ckey = re.compile(r'^(\d+)(\.\d+)+$')
1251+
_prog_ckey = re.compile(r'.*?/((\d+)(\/\d+)+)$')
12521252
_prog_number = re.compile(r'^\d+$')
12531253

12541254

0 commit comments

Comments
 (0)