Skip to content

Commit 99e6ae0

Browse files
committed
reformattings
1 parent 3690126 commit 99e6ae0

File tree

6 files changed

+146
-101
lines changed

6 files changed

+146
-101
lines changed

test/core/store/fs/test_registry.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@
2929
MultiLevelDatasetDescriptor,
3030
MutableDataStore,
3131
)
32-
from xcube.core.store.fs.registry import new_fs_data_store
33-
from xcube.core.store.fs.registry import get_filename_extensions
32+
from xcube.core.store.fs.registry import get_filename_extensions, new_fs_data_store
3433
from xcube.core.store.fs.store import FsDataStore
3534
from xcube.core.zarrstore import GenericZarrStore
3635
from xcube.util.temp import new_temp_dir
@@ -157,7 +156,7 @@ def test_cannot_open_unknown_format(self):
157156
data_store.open_data("unknown.format")
158157
self.assertEqual(
159158
"Cannot determine data type for data resource 'unknown.format'",
160-
f"{dse.exception}"
159+
f"{dse.exception}",
161160
)
162161

163162
def test_mldataset_levels(self):
@@ -538,12 +537,15 @@ def create_data_store(self, read_only=False) -> FsDataStore:
538537
)
539538
self.prepare_fs(fsspec.filesystem("s3", **storage_options), root)
540539
return new_fs_data_store(
541-
"s3", root=root, max_depth=3, storage_options=storage_options,
542-
read_only=read_only
540+
"s3",
541+
root=root,
542+
max_depth=3,
543+
storage_options=storage_options,
544+
read_only=read_only,
543545
)
544546

545-
class GetFilenameExtensionsTest(unittest.TestCase):
546547

548+
class GetFilenameExtensionsTest(unittest.TestCase):
547549
def test_get_filename_extensions_openers(self):
548550
opener_extensions = get_filename_extensions("openers")
549551
self.assertIn(".nc", list(opener_extensions.keys()))

test/core/store/test_store.py

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# Copyright (c) 2018-2025 by xcube team and contributors
22
# Permissions are hereby granted under the terms of the MIT License:
33
# https://opensource.org/licenses/MIT.
4-
from typing import Literal
54
import unittest
5+
from typing import Literal
66
from unittest.mock import MagicMock, patch
77

88
import pytest
@@ -53,18 +53,20 @@ def test_list_data_store_ids_detail(self):
5353

5454

5555
class TestBaseFsDataStore(unittest.TestCase):
56-
5756
def test_get_data_types(self):
5857
self.assertEqual(
5958
{"dataset", "geodataframe", "mldataset"},
60-
set(BaseFsDataStore.get_data_types())
59+
set(BaseFsDataStore.get_data_types()),
6160
)
6261

6362
def test_get_data_opener_ids(self):
6463
store = new_data_store("file")
6564
self.assertEqual(
66-
("mldataset:geotiff:file", "dataset:geotiff:file",),
67-
store.get_data_opener_ids(data_id="test.geotiff")
65+
(
66+
"mldataset:geotiff:file",
67+
"dataset:geotiff:file",
68+
),
69+
store.get_data_opener_ids(data_id="test.geotiff"),
6870
)
6971
self.assertEqual(
7072
("mldataset:geotiff:file",),
@@ -108,7 +110,6 @@ def test_preload_data(self):
108110

109111

110112
class FsDataStoreTest(unittest.TestCase):
111-
112113
def test_get_filename_extensions_abfs_openers(self):
113114
self.assert_accessors("abfs", "openers")
114115

@@ -150,7 +151,7 @@ def test_get_filename_extensions_unknown_accessor_type(self):
150151
self.assert_accessors("s3", "modifiers")
151152
self.assertEqual(
152153
"Invalid accessor type. Must be 'openers' or 'writers', was 'modifiers'",
153-
f"{dse.exception}"
154+
f"{dse.exception}",
154155
)
155156

156157
def assert_accessors(
@@ -159,21 +160,26 @@ def assert_accessors(
159160
store_cls = get_data_store_class(protocol)
160161
accessors = store_cls.get_filename_extensions(accessor_type)
161162
expected_accessors = {
162-
'.geojson': [f'geodataframe:geojson:{protocol}'],
163-
'.levels': [f'mldataset:levels:{protocol}',
164-
f'dataset:levels:{protocol}'],
165-
'.nc': [f'dataset:netcdf:{protocol}'],
166-
'.shp': [f'geodataframe:shapefile:{protocol}'],
167-
'.zarr': [f'dataset:zarr:{protocol}']
163+
".geojson": [f"geodataframe:geojson:{protocol}"],
164+
".levels": [f"mldataset:levels:{protocol}", f"dataset:levels:{protocol}"],
165+
".nc": [f"dataset:netcdf:{protocol}"],
166+
".shp": [f"geodataframe:shapefile:{protocol}"],
167+
".zarr": [f"dataset:zarr:{protocol}"],
168168
}
169169
if accessor_type == "openers":
170170
geotiff_openers = {
171-
'.geotiff': [f'mldataset:geotiff:{protocol}',
172-
f'dataset:geotiff:{protocol}'],
173-
'.tif': [f'mldataset:geotiff:{protocol}',
174-
f'dataset:geotiff:{protocol}'],
175-
'.tiff': [f'mldataset:geotiff:{protocol}',
176-
f'dataset:geotiff:{protocol}'],
171+
".geotiff": [
172+
f"mldataset:geotiff:{protocol}",
173+
f"dataset:geotiff:{protocol}",
174+
],
175+
".tif": [
176+
f"mldataset:geotiff:{protocol}",
177+
f"dataset:geotiff:{protocol}",
178+
],
179+
".tiff": [
180+
f"mldataset:geotiff:{protocol}",
181+
f"dataset:geotiff:{protocol}",
182+
],
177183
}
178184
expected_accessors.update(geotiff_openers)
179185
self.assertEqual(accessors, expected_accessors)

xcube/core/store/fs/registry.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77

88
import fsspec
99

10+
from ..accessor import find_data_opener_extensions, find_data_writer_extensions
1011
from ..assertions import assert_valid_params
1112
from ..error import DataStoreError
1213
from .accessor import FsAccessor, FsDataAccessor
13-
from ..accessor import find_data_opener_extensions, find_data_writer_extensions
1414
from .impl.dataset import (
1515
DatasetGeoTiffFsDataAccessor,
1616
DatasetNetcdfFsDataAccessor,
@@ -251,7 +251,7 @@ def new_fs_data_store(
251251

252252

253253
def get_filename_extensions(
254-
accessor_type: Literal["openers", "writers"] = "openers"
254+
accessor_type: Literal["openers", "writers"] = "openers",
255255
) -> Mapping[str, list[str]]:
256256
"""Returns a mapping from filename extensions to lists of
257257
data accessor ids that open data from this format.

xcube/core/store/fs/store.py

Lines changed: 68 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
import pathlib
99
import uuid
1010
import warnings
11-
from collections.abc import Container, Iterator, Sequence
11+
from collections.abc import Container, Iterator, Mapping, Sequence
1212
from threading import RLock
13-
from typing import Any, Callable, Literal, Optional, Tuple, Union, Mapping
13+
from typing import Any, Callable, Literal, Optional, Tuple, Union
1414

1515
import fsspec
1616
import geopandas as gpd
@@ -52,7 +52,7 @@
5252
from ..error import DataStoreError
5353
from ..search import DefaultSearchMixin
5454
from ..store import MutableDataStore
55-
from .accessor import STORAGE_OPTIONS_PARAM_NAME, FsAccessor, FsDataAccessor
55+
from .accessor import STORAGE_OPTIONS_PARAM_NAME, FsAccessor
5656

5757
_DEFAULT_DATA_TYPE = DATASET_TYPE.alias
5858
_DEFAULT_FORMAT_ID = "zarr"
@@ -277,7 +277,7 @@ def get_data_opener_ids(
277277
predicate=get_data_accessor_predicate(
278278
data_type=acc_data_type_alias,
279279
format_id=format_id,
280-
storage_id=storage_id
280+
storage_id=storage_id,
281281
)
282282
)
283283
)
@@ -287,8 +287,7 @@ def get_data_opener_ids(
287287
ext.name
288288
for ext in find_data_opener_extensions(
289289
predicate=get_data_accessor_predicate(
290-
data_type=data_type,
291-
storage_id=storage_id
290+
data_type=data_type, storage_id=storage_id
292291
)
293292
)
294293
)
@@ -419,47 +418,48 @@ def _get_delete_data_params_schema(writer: DataWriter, data_id: str):
419418

420419
def _get_filename_ext_to_format_openers(self):
421420
if not self._filename_ext_to_format_openers:
422-
(self._filename_ext_to_format_openers,
423-
self._format_to_data_type_aliases_openers) = (
424-
self._set_infos_from_extensions(
425-
find_data_opener_extensions, self.protocol
426-
)
421+
(
422+
self._filename_ext_to_format_openers,
423+
self._format_to_data_type_aliases_openers,
424+
) = self._set_infos_from_extensions(
425+
find_data_opener_extensions, self.protocol
427426
)
428427
return self._filename_ext_to_format_openers
429428

430429
def _get_format_to_data_type_aliases_openers(self):
431430
if not self._format_to_data_type_aliases_openers:
432-
(self._filename_ext_to_format_openers,
433-
self._format_to_data_type_aliases_openers) = (
434-
self._set_infos_from_extensions(
435-
find_data_opener_extensions, self.protocol
436-
)
431+
(
432+
self._filename_ext_to_format_openers,
433+
self._format_to_data_type_aliases_openers,
434+
) = self._set_infos_from_extensions(
435+
find_data_opener_extensions, self.protocol
437436
)
438437
return self._format_to_data_type_aliases_openers
439438

440439
def _get_filename_ext_to_format_writers(self):
441440
if not self._filename_ext_to_format_writers:
442-
(self._filename_ext_to_format_writers,
443-
self._format_to_data_type_aliases_writers) = (
444-
self._set_infos_from_extensions(
445-
find_data_writer_extensions, self.protocol
446-
)
441+
(
442+
self._filename_ext_to_format_writers,
443+
self._format_to_data_type_aliases_writers,
444+
) = self._set_infos_from_extensions(
445+
find_data_writer_extensions, self.protocol
447446
)
448447
return self._filename_ext_to_format_writers
449448

450449
def _get_format_to_data_type_aliases_writers(self):
451450
if not self._format_to_data_type_aliases_writers:
452-
(self._filename_ext_to_format_writers,
453-
self._format_to_data_type_aliases_writers) = (
454-
self._set_infos_from_extensions(
455-
find_data_writer_extensions, self.protocol
456-
)
451+
(
452+
self._filename_ext_to_format_writers,
453+
self._format_to_data_type_aliases_writers,
454+
) = self._set_infos_from_extensions(
455+
find_data_writer_extensions, self.protocol
457456
)
458457
return self._format_to_data_type_aliases_writers
459458

460459
@classmethod
461-
def _set_infos_from_extensions(cls, find_extensions, protocol=None) -> (
462-
Tuple)[dict, dict]:
460+
def _set_infos_from_extensions(
461+
cls, find_extensions, protocol=None
462+
) -> (Tuple)[dict, dict]:
463463
filename_ext_to_format = {}
464464
format_to_data_type_aliases = {}
465465
predicate = get_data_accessor_predicate(storage_id=protocol)
@@ -471,12 +471,12 @@ def _set_infos_from_extensions(cls, find_extensions, protocol=None) -> (
471471
filename_ext_to_format[extension] = fmt
472472
if data_type == "mldataset":
473473
format_to_data_type_aliases[fmt] = (
474-
(data_type, ) + format_to_data_type_aliases.get(fmt, ())
475-
)
474+
data_type,
475+
) + format_to_data_type_aliases.get(fmt, ())
476476
else:
477-
format_to_data_type_aliases[fmt] = (
478-
format_to_data_type_aliases.get(fmt, ()) + (data_type, )
479-
)
477+
format_to_data_type_aliases[fmt] = format_to_data_type_aliases.get(
478+
fmt, ()
479+
) + (data_type,)
480480
return filename_ext_to_format, format_to_data_type_aliases
481481

482482
def _get_data_types(self):
@@ -519,10 +519,7 @@ def _guess_writer_id(self, data, data_id: str = None):
519519
return extensions[0].name
520520

521521
def _find_opener(
522-
self,
523-
opener_id: str = None,
524-
data_id: str = None,
525-
data_type: DataTypeLike = None
522+
self, opener_id: str = None, data_id: str = None, data_type: DataTypeLike = None
526523
) -> DataOpener:
527524
if not opener_id:
528525
opener_id = self._find_opener_id(
@@ -540,7 +537,9 @@ def _is_data_type_available(self, data_id: str, data_type: DataTypeLike) -> bool
540537
format_id = self._get_filename_ext_to_format_openers().get(ext.lower())
541538
if format_id is None:
542539
return False
543-
avail_data_types = self._get_format_to_data_type_aliases_openers().get(format_id)
540+
avail_data_types = self._get_format_to_data_type_aliases_openers().get(
541+
format_id
542+
)
544543
data_type = DataType.normalize(data_type)
545544
return any(
546545
data_type.is_super_type_of(avail_data_type)
@@ -601,8 +600,10 @@ def _find_opener_id(
601600

602601
def _find_writer_id(self, data_id: str = None, require=True) -> Optional[str]:
603602
return self._find_accessor_id(
604-
find_data_writer_extensions, self._guess_best_writer_id_parts,
605-
data_id=data_id, require=require
603+
find_data_writer_extensions,
604+
self._guess_best_writer_id_parts,
605+
data_id=data_id,
606+
require=require,
606607
)
607608

608609
def _find_accessor_id(
@@ -677,7 +678,9 @@ def _guess_all_opener_id_parts(
677678
return self._guess_all_accessor_id_parts(
678679
self._get_filename_ext_to_format_openers(),
679680
self._get_format_to_data_type_aliases_openers(),
680-
data_id, data_type, require
681+
data_id,
682+
data_type,
683+
require,
681684
)
682685

683686
def _guess_best_opener_id_parts(
@@ -686,7 +689,9 @@ def _guess_best_opener_id_parts(
686689
return self._guess_best_accessor_id_parts(
687690
self._get_filename_ext_to_format_openers(),
688691
self._get_format_to_data_type_aliases_openers(),
689-
data_id, data_type, require
692+
data_id,
693+
data_type,
694+
require,
690695
)
691696

692697
def _guess_best_writer_id_parts(
@@ -695,12 +700,18 @@ def _guess_best_writer_id_parts(
695700
return self._guess_best_accessor_id_parts(
696701
self._get_filename_ext_to_format_writers(),
697702
self._get_format_to_data_type_aliases_writers(),
698-
data_id, data_type, require
703+
data_id,
704+
data_type,
705+
require,
699706
)
700707

701708
def _guess_all_accessor_id_parts(
702-
self, filename_ext_to_format, format_to_data_type_alias,
703-
data_id: str, data_type: DataTypeLike = None, require=True
709+
self,
710+
filename_ext_to_format,
711+
format_to_data_type_alias,
712+
data_id: str,
713+
data_type: DataTypeLike = None,
714+
require=True,
704715
) -> list[tuple[str, str, str]]:
705716
assert_given(data_id, "data_id")
706717
ext = self._get_filename_ext(data_id)
@@ -720,12 +731,19 @@ def _guess_all_accessor_id_parts(
720731
return [(dta, format_id, self.protocol) for dta in data_type_aliases]
721732

722733
def _guess_best_accessor_id_parts(
723-
self, filename_ext_to_format, format_to_data_type_alias,
724-
data_id: str, data_type: DataTypeLike = None, require=True
734+
self,
735+
filename_ext_to_format,
736+
format_to_data_type_alias,
737+
data_id: str,
738+
data_type: DataTypeLike = None,
739+
require=True,
725740
) -> tuple[str, str, str]:
726741
accessor_id_parts = self._guess_all_accessor_id_parts(
727-
filename_ext_to_format, format_to_data_type_alias, data_id, data_type,
728-
require
742+
filename_ext_to_format,
743+
format_to_data_type_alias,
744+
data_id,
745+
data_type,
746+
require,
729747
)
730748
return accessor_id_parts[0] if len(accessor_id_parts) > 0 else accessor_id_parts
731749

@@ -908,9 +926,7 @@ def get_filename_extensions(
908926
)
909927
filename_extensions = {}
910928
filename_ext_to_format, format_to_data_type_aliases = (
911-
cls._set_infos_from_extensions(
912-
find_extensions, cls.get_protocol()
913-
)
929+
cls._set_infos_from_extensions(find_extensions, cls.get_protocol())
914930
)
915931
for filename_ext, fmt in filename_ext_to_format.items():
916932
data_type_aliases = format_to_data_type_aliases.get(fmt, [])

0 commit comments

Comments
 (0)