@@ -151,8 +151,8 @@ def to_attrs(self) -> dict[str, str | int]:
151151 d ["vertical_dimensions" ] = dump_mappings (self .vertical_dimensions )
152152 return d
153153
154- def rename_dims (self , dims_dict : dict [str , str ]) -> Self :
155- return _metadata_rename_dims (self , dims_dict )
154+ def rename (self , names_dict : dict [str , str ]) -> Self :
155+ return _metadata_rename (self , names_dict )
156156
157157
158158class Grid3DMetadata (AttrsSerializable ):
@@ -248,8 +248,8 @@ def to_attrs(self) -> dict[str, str | int]:
248248 d ["node_coordinates" ] = dump_mappings (self .node_coordinates )
249249 return d
250250
251- def rename_dims (self , dims_dict : dict [str , str ]) -> Self :
252- return _metadata_rename_dims (self , dims_dict )
251+ def rename (self , dims_dict : dict [str , str ]) -> Self :
252+ return _metadata_rename (self , dims_dict )
253253
254254
255255@dataclass
@@ -418,22 +418,22 @@ def parse_sgrid(ds: xr.Dataset):
418418 return (ds , {"coords" : xgcm_coords })
419419
420420
421- def rename_dims (ds : xr .Dataset , dims_dict : dict [str , str ]) -> xr .Dataset :
421+ def rename (ds : xr .Dataset , name_dict : dict [str , str ]) -> xr .Dataset :
422422 grid_da = get_grid_topology (ds )
423423 if grid_da is None :
424424 raise ValueError (
425425 "No variable found in dataset with 'cf_role' attribute set to 'grid_topology'. This doesn't look to be an SGrid dataset - please make your dataset conforms to SGrid conventions."
426426 )
427427
428- ds = ds .rename_dims ( dims_dict )
428+ ds = ds .rename ( name_dict )
429429
430430 # Update the metadata
431431 grid = parse_grid_attrs (grid_da .attrs )
432- ds [grid_da .name ].attrs = grid .rename_dims ( dims_dict ).to_attrs ()
432+ ds [grid_da .name ].attrs = grid .rename ( name_dict ).to_attrs ()
433433 return ds
434434
435435
436- def get_unique_dim_names (grid : Grid2DMetadata | Grid3DMetadata ) -> set [str ]:
436+ def get_unique_names (grid : Grid2DMetadata | Grid3DMetadata ) -> set [str ]:
437437 dims = set ()
438438 dims .update (set (grid .node_dimensions ))
439439
@@ -453,14 +453,6 @@ def get_unique_dim_names(grid: Grid2DMetadata | Grid3DMetadata) -> set[str]:
453453 return dims
454454
455455
456- @overload
457- def _metadata_rename_dims (grid : Grid2DMetadata , dims_dict : dict [str , str ]) -> Grid2DMetadata : ...
458-
459-
460- @overload
461- def _metadata_rename_dims (grid : Grid3DMetadata , dims_dict : dict [str , str ]) -> Grid3DMetadata : ...
462-
463-
464456def _attach_sgrid_metadata (ds , grid : Grid2DMetadata | Grid3DMetadata ):
465457 """Copies the dataset and attaches the SGRID metadata in 'grid' variable. Modifies 'conventions' attribute."""
466458 ds = ds .copy ()
@@ -473,24 +465,32 @@ def _attach_sgrid_metadata(ds, grid: Grid2DMetadata | Grid3DMetadata):
473465 return ds
474466
475467
476- def _metadata_rename_dims (grid , dims_dict ):
468+ @overload
469+ def _metadata_rename (grid : Grid2DMetadata , names_dict : dict [str , str ]) -> Grid2DMetadata : ...
470+
471+
472+ @overload
473+ def _metadata_rename (grid : Grid3DMetadata , names_dict : dict [str , str ]) -> Grid3DMetadata : ...
474+
475+
476+ def _metadata_rename (grid , names_dict ):
477477 """
478- Renames dimensions in SGrid metadata.
478+ Renames dimensions and coordinates in SGrid metadata.
479479
480- Similar in API to xr.Dataset.rename_dims . Renames dimensions according to dims_dict mapping
480+ Similar in API to xr.Dataset.rename . Renames dimensions according to names_dict mapping
481481 of old dimension names to new dimension names.
482482 """
483- dims_dict = dims_dict .copy ()
484- assert len (dims_dict ) == len (set (dims_dict .values ())), "dims_dict contains duplicate target dimension names"
483+ names_dict = names_dict .copy ()
484+ assert len (names_dict ) == len (set (names_dict .values ())), "names_dict contains duplicate target dimension names"
485485
486- existing_dims = get_unique_dim_names (grid )
487- for dim in dims_dict .keys ():
488- if dim not in existing_dims :
489- raise ValueError (f"Dimension { dim !r} not found in SGrid metadata dimensions { existing_dims !r} " )
486+ existing_names = get_unique_names (grid )
487+ for name in names_dict .keys ():
488+ if name not in existing_names :
489+ raise ValueError (f"Name { name !r} not found in names defined in SGrid metadata { existing_names !r} " )
490490
491- for dim in existing_dims :
492- if dim not in dims_dict :
493- dims_dict [ dim ] = dim # identity mapping for dimensions not being renamed
491+ for name in existing_names :
492+ if name not in names_dict :
493+ names_dict [ name ] = name # identity mapping for names not being renamed
494494
495495 kwargs = {}
496496 for key , value in grid .__dict__ .items ():
@@ -499,14 +499,14 @@ def _metadata_rename_dims(grid, dims_dict):
499499 for item in value :
500500 if isinstance (item , DimDimPadding ):
501501 new_item = DimDimPadding (
502- dim1 = dims_dict [item .dim1 ],
503- dim2 = dims_dict [item .dim2 ],
502+ dim1 = names_dict [item .dim1 ],
503+ dim2 = names_dict [item .dim2 ],
504504 padding = item .padding ,
505505 )
506506 new_value .append (new_item )
507507 else :
508508 assert isinstance (item , str )
509- new_value .append (dims_dict [item ])
509+ new_value .append (names_dict [item ])
510510 kwargs [key ] = tuple (new_value )
511511 continue
512512
@@ -515,7 +515,7 @@ def _metadata_rename_dims(grid, dims_dict):
515515 continue
516516
517517 if isinstance (value , str ):
518- kwargs [key ] = dims_dict [value ]
518+ kwargs [key ] = names_dict [value ]
519519 continue
520520
521521 raise ValueError (f"Unexpected attribute { key !r} on { grid !r} " )
0 commit comments