@@ -304,6 +304,14 @@ class TestRead:
304304 def readmode (self , request ):
305305 return request .param
306306
307+ def undecoded_testvar (self , ds_encoded , varname : str ):
308+ path = ds_encoded .filepath ()
309+ ds_encoded .close ()
310+ ds = DatasetWrapper (path )
311+ v = ds .variables [varname ]
312+ v .set_auto_chartostring (False )
313+ return v
314+
307315 def test_encodings (self , encoding , tempdir , readmode ):
308316 # Create a dataset with the variable
309317 path = tempdir / f"test_read_encodings_{ encoding !s} _{ readmode } .nc"
@@ -337,9 +345,9 @@ def test_encodings(self, encoding, tempdir, readmode):
337345 assert np .all (truncated_result == result )
338346 result = truncated_result
339347 else :
340- # Test "raw" read --> byte array
341- with DECODE_TO_STRINGS_ON_READ . context ( False ):
342- result = v [:]
348+ # Close and re-open as "regular" dataset -- just to check the raw content
349+ v = self . undecoded_testvar ( ds_encoded , "vxs" )
350+ result = v [:]
343351 expected = write_bytes
344352
345353 check_array_matching (result , expected )
@@ -364,8 +372,8 @@ def test_scalar(self, tempdir, readmode):
364372 expected = np .array (data_string )
365373 else :
366374 # Test "raw" read --> byte array
367- with DECODE_TO_STRINGS_ON_READ . context ( False ):
368- result = v [:]
375+ v = self . undecoded_testvar ( ds_encoded , "v0_scalar" )
376+ result = v [:]
369377 expected = data_bytes
370378
371379 check_array_matching (result , expected )
@@ -401,17 +409,17 @@ def test_multidim(self, tempdir, readmode):
401409 expected = np .array (test_strings )
402410 else :
403411 # Test "raw" read --> byte array
404- with DECODE_TO_STRINGS_ON_READ . context ( False ):
405- result = v [:]
412+ v = self . undecoded_testvar ( ds_encoded , "vyxn" )
413+ result = v [:]
406414 expected = test_bytes
407415
408416 check_array_matching (result , expected )
409417
410418 def test_read_encoding_failure (self , tempdir , readmode ):
411419 path = tempdir / f"test_read_encoding_failure_{ readmode } .nc"
412420 strlen = 10
413- ds = make_encoded_dataset (path , strlen = strlen , encoding = "ascii" )
414- v = ds .variables ["vxs" ]
421+ ds_encoded = make_encoded_dataset (path , strlen = strlen , encoding = "ascii" )
422+ v = ds_encoded .variables ["vxs" ]
415423 test_utf8_bytes = make_bytearray (
416424 samples_3_nonascii , bytewidth = strlen , encoding = "utf-8"
417425 )
@@ -425,8 +433,8 @@ def test_read_encoding_failure(self, tempdir, readmode):
425433 with pytest .raises (ValueError , match = msg ):
426434 v [:]
427435 else :
428- with DECODE_TO_STRINGS_ON_READ . context ( False ):
429- result = v [:] # this ought to be ok!
436+ v = self . undecoded_testvar ( ds_encoded , "vxs" )
437+ result = v [:] # this ought to be ok!
430438
431439 assert np .all (result == test_utf8_bytes )
432440
0 commit comments