@@ -120,176 +120,3 @@ def hallo():
120120 ),
121121 ):
122122 to_slice_source (ctx , hallo , 0 )
123-
124-
125- @unittest .skip (reason = "Rall!" )
126- class X (unittest .TestCase ):
127- def test_slice_source_is_class (self ):
128- ctx = make_ctx (
129- slice_source = "tests.config.test_config.CustomSliceSource" ,
130- )
131- slice_cm = open_slice_dataset (ctx , 7 )
132- self .assertIsInstance (slice_cm , SliceSourceContextManager )
133- self .assertIsInstance (slice_cm .slice_source , CustomSliceSource )
134- # noinspection PyUnresolvedReferences
135- self .assertEqual (7 , slice_cm .slice_source .index )
136-
137- def test_slice_source_is_func (self ):
138- ctx = Context (
139- dict (
140- target_dir = "memory://target.zarr" ,
141- slice_source = "tests.config.test_config.new_custom_slice_source" ,
142- )
143- )
144- slice_cm = open_slice_dataset (ctx , 13 )
145- self .assertIsInstance (slice_cm , SliceSourceContextManager )
146- self .assertIsInstance (slice_cm .slice_source , CustomSliceSource )
147- # noinspection PyUnresolvedReferences
148- self .assertEqual (13 , slice_cm .slice_source .index )
149-
150- # noinspection PyMethodMayBeStatic
151- def test_slice_source_is_bad_func (self ):
152- ctx = Context (
153- dict (
154- target_dir = "memory://target.zarr" ,
155- slice_source = "tests.slice.test_cm.false_slice_source_function" ,
156- )
157- )
158- with pytest .raises (
159- TypeError ,
160- match = (
161- "slice_item must have type str, xarray.Dataset,"
162- " zappend.api.FileObj, zappend.api.SliceSource,"
163- " but was type int"
164- ),
165- ):
166- open_slice_dataset (ctx , "test.nc" )
167-
168- def test_slice_item_is_slice_source (self ):
169- dataset = make_test_dataset ()
170- ctx = Context (dict (target_dir = "memory://target.zarr" ))
171- slice_item = MemorySliceSource (dataset , 0 )
172- slice_cm = open_slice_dataset (ctx , slice_item )
173- self .assertIs (slice_item , slice_cm .slice_source )
174-
175- def test_slice_item_is_dataset (self ):
176- dataset = make_test_dataset ()
177- ctx = Context (dict (target_dir = "memory://target.zarr" ))
178- slice_cm = open_slice_dataset (ctx , dataset )
179- self .assertIsInstance (slice_cm , SliceSourceContextManager )
180- self .assertIsInstance (slice_cm .slice_source , MemorySliceSource )
181- with slice_cm as slice_ds :
182- self .assertIsInstance (slice_ds , xr .Dataset )
183-
184- def test_slice_item_is_persisted_dataset (self ):
185- dataset = make_test_dataset ()
186- ctx = Context (dict (target_dir = "memory://target.zarr" , persist_mem_slices = True ))
187- slice_cm = open_slice_dataset (ctx , dataset )
188- self .assertIsInstance (slice_cm , SliceSourceContextManager )
189- self .assertIsInstance (slice_cm .slice_source , TemporarySliceSource )
190- with slice_cm as slice_ds :
191- self .assertIsInstance (slice_ds , xr .Dataset )
192-
193- def test_slice_item_is_file_obj (self ):
194- slice_dir = FileObj ("memory://slice.zarr" )
195- make_test_dataset (uri = slice_dir .uri )
196- ctx = Context (dict (target_dir = "memory://target.zarr" ))
197- slice_cm = open_slice_dataset (ctx , slice_dir )
198- self .assertIsInstance (slice_cm , SliceSourceContextManager )
199- with slice_cm as slice_ds :
200- self .assertIsInstance (slice_ds , xr .Dataset )
201-
202- def test_slice_item_is_memory_uri (self ):
203- slice_dir = FileObj ("memory://slice.zarr" )
204- make_test_dataset (uri = slice_dir .uri )
205- ctx = Context (dict (target_dir = "memory://target.zarr" ))
206- slice_cm = open_slice_dataset (ctx , slice_dir .uri )
207- self .assertIsInstance (slice_cm , SliceSourceContextManager )
208- with slice_cm as slice_ds :
209- self .assertIsInstance (slice_ds , xr .Dataset )
210-
211- def test_slice_item_is_uri_of_memory_nc (self ):
212- engine = "scipy"
213- format = "NETCDF3_CLASSIC"
214- slice_ds = make_test_dataset ()
215- slice_file = FileObj ("memory:///slice.nc" )
216- with slice_file .fs .open (slice_file .path , "wb" ) as stream :
217- # noinspection PyTypeChecker
218- slice_ds .to_netcdf (stream , engine = engine , format = format )
219- ctx = Context (dict (target_dir = "memory://target.zarr" , slice_engine = engine ))
220- slice_cm = open_slice_dataset (ctx , slice_file .uri )
221- self .assertIsInstance (slice_cm , SliceSourceContextManager )
222- self .assertIsInstance (slice_cm .slice_source , PersistentSliceSource )
223- try :
224- with slice_cm as slice_ds :
225- self .assertIsInstance (slice_ds , xr .Dataset )
226- except KeyError as e :
227- # This is unexpected! xarray cannot open the NetCDF file it just
228- # created. Maybe report a xarray issue once we can isolate the
229- # root cause. But it may be related to just the memory FS.
230- warnings .warn (f"received known exception from to_netcdf(): { e } " )
231-
232- def test_slice_item_is_uri_of_local_fs_nc (self ):
233- engine = "h5netcdf"
234- format = "NETCDF4"
235- target_dir = FileObj ("./target.zarr" )
236- ctx = Context (dict (target_dir = target_dir .path , slice_engine = engine ))
237- slice_ds = make_test_dataset ()
238- slice_file = FileObj ("./slice.nc" )
239- # noinspection PyTypeChecker
240- slice_ds .to_netcdf (slice_file .path , engine = engine , format = format )
241- try :
242- slice_cm = open_slice_dataset (ctx , slice_file .uri )
243- self .assertIsInstance (slice_cm , SliceSourceContextManager )
244- self .assertIsInstance (slice_cm .slice_source , PersistentSliceSource )
245- with slice_cm as slice_ds :
246- self .assertIsInstance (slice_ds , xr .Dataset )
247- finally :
248- shutil .rmtree (target_dir .path , ignore_errors = True )
249- slice_file .delete ()
250-
251- def test_persistent_wait_success (self ):
252- slice_dir = FileObj ("memory://slice.zarr" )
253- make_test_dataset (uri = slice_dir .uri )
254- ctx = Context (
255- dict (
256- target_dir = "memory://target.zarr" ,
257- slice_polling = dict (timeout = 0.1 , interval = 0.02 ),
258- )
259- )
260- slice_cm = open_slice_dataset (ctx , slice_dir .uri )
261- self .assertIsInstance (slice_cm , SliceSourceContextManager )
262- self .assertIsInstance (slice_cm .slice_source , PersistentSliceSource )
263- with slice_cm as slice_ds :
264- self .assertIsInstance (slice_ds , xr .Dataset )
265-
266- # noinspection PyMethodMayBeStatic
267- def test_it_raises_on_persistent_wait_fail (self ):
268- slice_dir = FileObj ("memory://slice.zarr" )
269- ctx = Context (
270- dict (
271- target_dir = "memory://target.zarr" ,
272- slice_polling = dict (timeout = 0.1 , interval = 0.02 ),
273- )
274- )
275- slice_cm = open_slice_dataset (ctx , slice_dir .uri )
276- with pytest .raises (FileNotFoundError , match = slice_dir .uri ):
277- with slice_cm :
278- pass
279-
280- # noinspection PyMethodMayBeStatic
281- def test_it_raises_on_invalid_type (self ):
282- ctx = Context (dict (target_dir = "memory://target.zarr" ))
283- with pytest .raises (
284- TypeError ,
285- match = (
286- "slice_item must have type str, xarray.Dataset,"
287- " zappend.api.FileObj, zappend.api.SliceSource,"
288- " but was type int"
289- ),
290- ):
291- # noinspection PyTypeChecker
292- open_slice_dataset (ctx , 42 )
293-
294-
295- # noinspection PyUnusedLocal
0 commit comments