1
1
from __future__ import annotations
2
2
3
+ import io
3
4
import re
4
5
import sys
5
6
from numbers import Number
23
24
@requires_scipy
24
25
@requires_h5netcdf
25
26
def test_get_default_netcdf_write_engine () -> None :
26
- engine = get_default_netcdf_write_engine (format = None , to_fileobject = False )
27
+ engine = get_default_netcdf_write_engine ("" , format = None )
27
28
assert engine == "h5netcdf"
28
29
29
- engine = get_default_netcdf_write_engine (format = "NETCDF4 " , to_fileobject = False )
30
+ engine = get_default_netcdf_write_engine (" " , format = "NETCDF4" )
30
31
assert engine == "h5netcdf"
31
32
32
- engine = get_default_netcdf_write_engine (
33
- format = "NETCDF4_CLASSIC" , to_fileobject = False
34
- )
33
+ engine = get_default_netcdf_write_engine ("" , format = "NETCDF4_CLASSIC" )
35
34
assert engine == "netcdf4"
36
35
37
- engine = get_default_netcdf_write_engine (format = "NETCDF4" , to_fileobject = True )
36
+ engine = get_default_netcdf_write_engine (io . BytesIO (), format = "NETCDF4" )
38
37
assert engine == "h5netcdf"
39
38
40
- engine = get_default_netcdf_write_engine (
41
- format = "NETCDF3_CLASSIC" , to_fileobject = False
42
- )
39
+ engine = get_default_netcdf_write_engine ("" , format = "NETCDF3_CLASSIC" )
43
40
assert engine == "scipy"
44
41
45
- engine = get_default_netcdf_write_engine (
46
- format = "NETCDF3_CLASSIC" , to_fileobject = True
47
- )
42
+ engine = get_default_netcdf_write_engine (io .BytesIO (), format = "NETCDF3_CLASSIC" )
48
43
assert engine == "scipy"
49
44
45
+ engine = get_default_netcdf_write_engine ("path.zarr#mode=nczarr" , format = None )
46
+ assert engine == "netcdf4"
47
+
50
48
with xr .set_options (netcdf_engine_order = ["netcdf4" , "scipy" , "h5netcdf" ]):
51
- engine = get_default_netcdf_write_engine (format = None , to_fileobject = False )
49
+ engine = get_default_netcdf_write_engine ("" , format = None )
52
50
assert engine == "netcdf4"
53
51
54
- engine = get_default_netcdf_write_engine (format = "NETCDF4 " , to_fileobject = False )
52
+ engine = get_default_netcdf_write_engine (" " , format = "NETCDF4" )
55
53
assert engine == "netcdf4"
56
54
57
- engine = get_default_netcdf_write_engine (
58
- format = "NETCDF4_CLASSIC" , to_fileobject = False
59
- )
55
+ engine = get_default_netcdf_write_engine ("" , format = "NETCDF4_CLASSIC" )
60
56
assert engine == "netcdf4"
61
57
62
- engine = get_default_netcdf_write_engine (format = "NETCDF4" , to_fileobject = True )
58
+ engine = get_default_netcdf_write_engine (io . BytesIO (), format = "NETCDF4" )
63
59
assert engine == "h5netcdf"
64
60
65
- engine = get_default_netcdf_write_engine (
66
- format = "NETCDF3_CLASSIC" , to_fileobject = False
67
- )
61
+ engine = get_default_netcdf_write_engine ("" , format = "NETCDF3_CLASSIC" )
68
62
assert engine == "netcdf4"
69
63
70
- engine = get_default_netcdf_write_engine (
71
- format = "NETCDF3_CLASSIC" , to_fileobject = True
72
- )
64
+ engine = get_default_netcdf_write_engine (io .BytesIO (), format = "NETCDF3_CLASSIC" )
73
65
assert engine == "scipy"
74
66
75
67
@@ -81,17 +73,31 @@ def test_default_engine_h5netcdf(monkeypatch):
81
73
monkeypatch .delitem (sys .modules , "scipy" , raising = False )
82
74
monkeypatch .setattr (sys , "meta_path" , [])
83
75
84
- engine = get_default_netcdf_write_engine (format = None , to_fileobject = False )
76
+ engine = get_default_netcdf_write_engine ("" , format = None )
85
77
assert engine == "h5netcdf"
86
78
87
79
with pytest .raises (
88
80
ValueError ,
89
81
match = re .escape (
90
82
"cannot write NetCDF files with format='NETCDF3_CLASSIC' because "
91
- "none of the suitable backend libraries (netCDF4, scipy) are installed"
83
+ "none of the suitable backend libraries (scipy, netCDF4) are installed"
84
+ ),
85
+ ):
86
+ get_default_netcdf_write_engine ("" , format = "NETCDF3_CLASSIC" )
87
+
88
+
89
+ def test_default_engine_nczarr_no_netcdf4_python (monkeypatch ):
90
+ monkeypatch .delitem (sys .modules , "netCDF4" , raising = False )
91
+ monkeypatch .setattr (sys , "meta_path" , [])
92
+
93
+ with pytest .raises (
94
+ ValueError ,
95
+ match = re .escape (
96
+ "cannot write NetCDF files in NCZarr format because "
97
+ "none of the suitable backend libraries (netCDF4) are installed"
92
98
),
93
99
):
94
- get_default_netcdf_write_engine (format = "NETCDF3_CLASSIC" , to_fileobject = False )
100
+ get_default_netcdf_write_engine ("#mode=nczarr" , format = None )
95
101
96
102
97
103
def test_custom_engine () -> None :
0 commit comments