2525# noinspection PyUnusedLocal
2626
2727
28- # noinspection PyShadowingBuiltins,PyRedeclaration
28+ # noinspection PyShadowingBuiltins,PyRedeclaration,PyMethodMayBeStatic
2929class OpenSliceDatasetTest (unittest .TestCase ):
3030 def setUp (self ):
3131 clear_memory_fs ()
@@ -164,7 +164,7 @@ def get_dataset(name):
164164 with slice_cm as slice_ds :
165165 self .assertIsInstance (slice_ds , xr .Dataset )
166166
167- def test_slice_item_is_slice_source (self ):
167+ def test_slice_item_is_slice_source_arg (self ):
168168 class MySliceSource (SliceSource ):
169169 def __init__ (self , name ):
170170 self .uri = f"memory://{ name } .zarr"
@@ -191,7 +191,7 @@ def close(self):
191191 with slice_cm as slice_ds :
192192 self .assertIsInstance (slice_ds , xr .Dataset )
193193
194- def test_slice_item_is_deprecated_slice_source (self ):
194+ def test_slice_item_is_deprecated_slice_source_arg (self ):
195195 class MySliceSource (SliceSource ):
196196 def __init__ (self , name ):
197197 self .uri = f"memory://{ name } .zarr"
@@ -219,6 +219,33 @@ def dispose(self):
219219 with slice_cm as slice_ds :
220220 self .assertIsInstance (slice_ds , xr .Dataset )
221221
222+ def test_slice_item_is_slice_source_arg_with_extra_kwargs (self ):
223+ class MySliceSource (SliceSource ):
224+ def __init__ (self , * args , ** kwargs ):
225+ self .args = args
226+ self .kwargs = kwargs
227+
228+ def get_dataset (self ):
229+ return xr .Dataset ()
230+
231+ ctx = Context (
232+ dict (
233+ target_dir = "memory://target.zarr" ,
234+ slice_source = MySliceSource ,
235+ slice_source_kwargs = {"a" : 1 , "b" : True , "c" : "nearest" },
236+ )
237+ )
238+ slice_cm = open_slice_dataset (ctx , (["bibo" ], {"a" : 2 , "d" : 3.14 }))
239+ self .assertIsInstance (slice_cm , SliceSourceContextManager )
240+ slice_source = slice_cm .slice_source
241+ self .assertIsInstance (slice_source , MySliceSource )
242+ with slice_cm as slice_ds :
243+ self .assertIsInstance (slice_ds , xr .Dataset )
244+ self .assertEqual (slice_source .args , ("bibo" ,))
245+ self .assertEqual (
246+ slice_source .kwargs , {"a" : 2 , "b" : True , "c" : "nearest" , "d" : 3.14 }
247+ )
248+
222249
223250class IsContextManagerTest (unittest .TestCase ):
224251 """Assert that context managers are identified by isinstance()"""
0 commit comments