|
19 | 19 | from mdio.builder.schemas.v1.variable import Coordinate |
20 | 20 | from mdio.builder.schemas.v1.variable import Variable |
21 | 21 | from mdio.builder.schemas.v1.variable import VariableMetadata |
22 | | -from mdio.builder.xarray_builder import _convert_compressor |
| 22 | +from mdio.builder.xarray_builder import _compressor_to_encoding |
23 | 23 | from mdio.builder.xarray_builder import _get_all_named_dimensions |
24 | 24 | from mdio.builder.xarray_builder import _get_coord_names |
25 | 25 | from mdio.builder.xarray_builder import _get_dimension_names |
@@ -226,43 +226,49 @@ def test_get_fill_value() -> None: |
226 | 226 | assert result_none_input is None |
227 | 227 |
|
228 | 228 |
|
229 | | -def test_convert_compressor() -> None: |
230 | | - """Simple test for _convert_compressor function covering basic scenarios.""" |
| 229 | +def test_compressor_to_encoding() -> None: |
| 230 | + """Simple test for _compressor_to_encoding function covering basic scenarios.""" |
231 | 231 | # Test 1: None input - should return None |
232 | | - result_none = _convert_compressor(None) |
| 232 | + result_none = _compressor_to_encoding(None) |
233 | 233 | assert result_none is None |
234 | 234 |
|
235 | 235 | # Test 2: mdio_Blosc compressor - should return nc_Blosc |
236 | 236 | mdio_compressor = mdio_Blosc(cname=BloscCname.lz4, clevel=5, shuffle=BloscShuffle.bitshuffle, blocksize=1024) |
237 | | - result_blosc = _convert_compressor(mdio_compressor) |
| 237 | + result_blosc = _compressor_to_encoding(mdio_compressor) |
238 | 238 |
|
239 | | - assert isinstance(result_blosc, BloscCodec) |
240 | | - assert result_blosc.cname == BloscCname.lz4 |
241 | | - assert result_blosc.clevel == 5 |
242 | | - assert result_blosc.shuffle == BloscShuffle.bitshuffle |
243 | | - assert result_blosc.blocksize == 1024 |
| 239 | + assert isinstance(result_blosc, dict) |
| 240 | + assert "compressors" in result_blosc |
| 241 | + assert isinstance(result_blosc["compressors"], BloscCodec) |
| 242 | + assert result_blosc["compressors"].cname == BloscCname.lz4 |
| 243 | + assert result_blosc["compressors"].clevel == 5 |
| 244 | + assert result_blosc["compressors"].shuffle == BloscShuffle.bitshuffle |
| 245 | + assert result_blosc["compressors"].blocksize == 1024 |
244 | 246 |
|
245 | 247 | # Test 3: mdio_ZFP compressor - should return zfpy_ZFPY if available |
246 | 248 | zfp_compressor = MDIO_ZFP(mode=mdio_ZFPMode.FIXED_RATE, tolerance=0.01, rate=8.0, precision=16) |
247 | 249 |
|
| 250 | + # TODO(BrianMichell): Update to also test zfp compression. |
| 251 | + # https://github.com/TGSAI/mdio-python/issues/747 |
248 | 252 | if HAS_ZFPY: # pragma: no cover |
249 | | - result_zfp = _convert_compressor(zfp_compressor) |
250 | | - assert isinstance(result_zfp, ZFPY) |
251 | | - assert result_zfp.mode == 1 # ZFPMode.FIXED_RATE.value = "fixed_rate" |
252 | | - assert result_zfp.tolerance == 0.01 |
253 | | - assert result_zfp.rate == 8.0 |
254 | | - assert result_zfp.precision == 16 |
| 253 | + result_zfp = _compressor_to_encoding(zfp_compressor) |
| 254 | + assert isinstance(result_zfp, dict) |
| 255 | + assert "compressors" not in result_zfp |
| 256 | + assert isinstance(result_zfp["serializer"], ZFPY) |
| 257 | + assert result_zfp["serializer"].mode == 1 # ZFPMode.FIXED_RATE.value = "fixed_rate" |
| 258 | + assert result_zfp["serializer"].tolerance == 0.01 |
| 259 | + assert result_zfp["serializer"].rate == 8.0 |
| 260 | + assert result_zfp["serializer"].precision == 16 |
255 | 261 | else: |
256 | 262 | # Test 5: mdio_ZFP without zfpy installed - should raise ImportError |
257 | 263 | with pytest.raises(ImportError) as exc_info: |
258 | | - _convert_compressor(zfp_compressor) |
| 264 | + _compressor_to_encoding(zfp_compressor) |
259 | 265 | error_message = str(exc_info.value) |
260 | 266 | assert "zfpy and numcodecs are required to use ZFP compression" in error_message |
261 | 267 |
|
262 | 268 | # Test 6: Unsupported compressor type - should raise TypeError |
263 | 269 | unsupported_compressor = "invalid_compressor" |
264 | 270 | with pytest.raises(TypeError) as exc_info: |
265 | | - _convert_compressor(unsupported_compressor) |
| 271 | + _compressor_to_encoding(unsupported_compressor) |
266 | 272 | error_message = str(exc_info.value) |
267 | 273 | assert "Unsupported compressor model" in error_message |
268 | 274 | assert "<class 'str'>" in error_message |
|
0 commit comments