77from parcels ._core .utils import sgrid
88from tests .strategies import sgrid as sgrid_strategies
99
10+ grid2dmetadata = sgrid .Grid2DMetadata (
11+ cf_role = "grid_topology" ,
12+ topology_dimension = 2 ,
13+ node_dimensions = ("node_dimension1" , "node_dimension2" ),
14+ face_dimensions = (
15+ sgrid .DimDimPadding ("face_dimension1" , "node_dimension1" , sgrid .Padding .LOW ),
16+ sgrid .DimDimPadding ("face_dimension2" , "node_dimension2" , sgrid .Padding .LOW ),
17+ ),
18+ vertical_dimensions = (
19+ sgrid .DimDimPadding ("vertical_dimensions_dim1" , "vertical_dimensions_dim2" , sgrid .Padding .LOW ),
20+ ),
21+ )
1022
11- @pytest .fixture
12- def grid2dmetadata ():
13- return sgrid .Grid2DMetadata (
14- cf_role = "grid_topology" ,
15- topology_dimension = 2 ,
16- node_dimensions = ("node_dimension1" , "node_dimension2" ),
17- face_dimensions = (
18- sgrid .DimDimPadding ("face_dimension1" , "node_dimension1" , sgrid .Padding .LOW ),
19- sgrid .DimDimPadding ("face_dimension2" , "node_dimension2" , sgrid .Padding .LOW ),
20- ),
21- vertical_dimensions = (
22- sgrid .DimDimPadding ("vertical_dimensions_dim1" , "vertical_dimensions_dim2" , sgrid .Padding .LOW ),
23- ),
24- )
23+ grid3dmetadata = sgrid .Grid3DMetadata (
24+ cf_role = "grid_topology" ,
25+ topology_dimension = 3 ,
26+ node_dimensions = ("node_dimension1" , "node_dimension2" , "node_dimension3" ),
27+ volume_dimensions = (
28+ sgrid .DimDimPadding ("face_dimension1" , "node_dimension1" , sgrid .Padding .LOW ),
29+ sgrid .DimDimPadding ("face_dimension2" , "node_dimension2" , sgrid .Padding .LOW ),
30+ sgrid .DimDimPadding ("face_dimension3" , "node_dimension3" , sgrid .Padding .LOW ),
31+ ),
32+ )
2533
2634
2735def dummy_sgrid_ds (grid : sgrid .Grid2DMetadata | sgrid .Grid3DMetadata ) -> xr .Dataset :
@@ -151,39 +159,15 @@ def test_load_dump_mappings(input_, expected):
151159 assert sgrid .load_mappings (input_ ) == expected
152160
153161
154- @example (
155- grid = sgrid .Grid2DMetadata (
156- cf_role = "grid_topology" ,
157- topology_dimension = 2 ,
158- node_dimensions = ("node_dimension1" , "node_dimension2" ),
159- face_dimensions = (
160- sgrid .DimDimPadding ("face_dimension1" , "node_dimension1" , sgrid .Padding .LOW ),
161- sgrid .DimDimPadding ("face_dimension2" , "node_dimension2" , sgrid .Padding .LOW ),
162- ),
163- vertical_dimensions = (
164- sgrid .DimDimPadding ("vertical_dimensions_dim1" , "vertical_dimensions_dim2" , sgrid .Padding .LOW ),
165- ),
166- )
167- )
162+ @example (grid2dmetadata )
168163@given (sgrid_strategies .grid2Dmetadata ())
169164def test_Grid2DMetadata_roundtrip (grid : sgrid .Grid2DMetadata ):
170165 attrs = grid .to_attrs ()
171166 parsed = sgrid .Grid2DMetadata .from_attrs (attrs )
172167 assert parsed == grid
173168
174169
175- @example (
176- grid = sgrid .Grid3DMetadata (
177- cf_role = "grid_topology" ,
178- topology_dimension = 3 ,
179- node_dimensions = ("node_dimension1" , "node_dimension2" , "node_dimension3" ),
180- volume_dimensions = (
181- sgrid .DimDimPadding ("face_dimension1" , "node_dimension1" , sgrid .Padding .LOW ),
182- sgrid .DimDimPadding ("face_dimension2" , "node_dimension2" , sgrid .Padding .LOW ),
183- sgrid .DimDimPadding ("face_dimension3" , "node_dimension3" , sgrid .Padding .LOW ),
184- ),
185- )
186- )
170+ @example (grid3dmetadata )
187171@given (sgrid_strategies .grid3Dmetadata ())
188172def test_Grid3DMetadata_roundtrip (grid : sgrid .Grid3DMetadata ):
189173 attrs = grid .to_attrs ()
@@ -198,6 +182,7 @@ def test_parse_grid_attrs(grid: sgrid.AttrsSerializable):
198182 assert parsed == grid
199183
200184
185+ @example (grid2dmetadata )
201186@given (sgrid_strategies .grid2Dmetadata ())
202187def test_parse_sgrid_2d (grid_metadata : sgrid .Grid2DMetadata ):
203188 """Test the ingestion of datasets in XGCM to ensure that it matches the SGRID metadata provided"""
@@ -207,7 +192,7 @@ def test_parse_sgrid_2d(grid_metadata: sgrid.Grid2DMetadata):
207192 grid = xgcm .Grid (ds , autoparse_metadata = False , ** xgcm_kwargs )
208193
209194 for ddp , axis in zip (grid_metadata .face_dimensions , ["X" , "Y" ], strict = True ):
210- dim_node , dim_edge , padding = ddp .dim1 , ddp .dim2 , ddp .padding
195+ dim_edge , dim_node , padding = ddp .dim1 , ddp .dim2 , ddp .padding
211196 coords = grid .axes [axis ].coords
212197 assert coords ["center" ] == dim_edge
213198 assert coords [sgrid .SGRID_PADDING_TO_XGCM_POSITION [padding ]] == dim_node
@@ -216,7 +201,7 @@ def test_parse_sgrid_2d(grid_metadata: sgrid.Grid2DMetadata):
216201 assert "Z" not in grid .axes
217202 else :
218203 ddp = grid_metadata .vertical_dimensions [0 ]
219- dim_node , dim_edge , padding = ddp .dim1 , ddp .dim2 , ddp .padding
204+ dim_edge , dim_node , padding = ddp .dim1 , ddp .dim2 , ddp .padding
220205 coords = grid .axes ["Z" ].coords
221206 assert coords ["center" ] == dim_edge
222207 assert coords [sgrid .SGRID_PADDING_TO_XGCM_POSITION [padding ]] == dim_node
@@ -231,7 +216,7 @@ def test_parse_sgrid_3d(grid_metadata: sgrid.Grid3DMetadata):
231216 grid = xgcm .Grid (ds , autoparse_metadata = False , ** xgcm_kwargs )
232217
233218 for ddp , axis in zip (grid_metadata .volume_dimensions , ["X" , "Y" , "Z" ], strict = True ):
234- dim_node , dim_edge , padding = ddp .dim1 , ddp .dim2 , ddp .padding
219+ dim_edge , dim_node , padding = ddp .dim1 , ddp .dim2 , ddp .padding
235220 coords = grid .axes [axis ].coords
236221 assert coords ["center" ] == dim_edge
237222 assert coords [sgrid .SGRID_PADDING_TO_XGCM_POSITION [padding ]] == dim_node
@@ -291,7 +276,7 @@ def test_rename_dims(grid):
291276 assert grid == grid_new .rename_dims (dims_dict_inv )
292277
293278
294- def test_rename_dims_errors (grid2dmetadata ):
279+ def test_rename_dims_errors ():
295280 # Test various error modes of rename_dims
296281 grid = grid2dmetadata
297282 # Non-unique target dimension names
0 commit comments