1515
1616import os
1717from pathlib import Path
18- from typing import Iterable
18+ from typing import Iterable , Optional
1919
2020import numpy as np
2121from xarray .backends import BackendEntrypoint
@@ -44,10 +44,10 @@ def open_dataset(
4444 self ,
4545 filename_or_obj ,
4646 * ,
47- raster : str | Iterable [str ] = [] ,
48- raster_3d : str | Iterable [str ] = [] ,
49- strds : str | Iterable [str ] = [] ,
50- str3ds : str | Iterable [str ] = [] ,
47+ raster : Optional [ str | Iterable [str ]] = None ,
48+ raster_3d : Optional [ str | Iterable [str ]] = None ,
49+ strds : Optional [ str | Iterable [str ]] = None ,
50+ str3ds : Optional [ str | Iterable [str ]] = None ,
5151 drop_variables : Iterable [str ],
5252 ) -> xr .Dataset :
5353 """Open GRASS project or mapset as an xarray.Dataset.
@@ -69,13 +69,19 @@ def open_dataset(
6969 for strds_name in grass_objects ["strds" ]:
7070 maps_in_strds = gi .list_maps_in_strds (strds_name )
7171 rasters_in_strds .extend ([map_data .id for map_data in maps_in_strds ])
72- open_func_params ["strds_list" ].append (strds_name )
72+ if open_func_params ["strds_list" ] is None :
73+ open_func_params ["strds_list" ] = [strds_name ]
74+ else :
75+ open_func_params ["strds_list" ].append (strds_name )
7376 raster3ds_in_str3ds = []
7477 # str3ds
7578 for str3ds_name in grass_objects ["str3ds" ]:
7679 maps_in_str3ds = gi .list_maps_in_str3ds (str3ds_name )
7780 raster3ds_in_str3ds .extend ([map_data .id for map_data in maps_in_str3ds ])
78- open_func_params ["str3ds_list" ].append (str3ds_name )
81+ if open_func_params ["str3ds_list" ] is None :
82+ open_func_params ["str3ds_list" ] = [str3ds_name ]
83+ else :
84+ open_func_params ["str3ds_list" ].append (str3ds_name )
7985 # rasters not in strds
8086 open_func_params ["raster_list" ] = [
8187 name for name in grass_objects ["raster" ] if name not in rasters_in_strds
@@ -287,7 +293,6 @@ def open_grass_raster(raster_name: str, grass_i: GrassInterface) -> xr.DataArray
287293 )
288294 # Add CF attributes
289295 r_infos = grass_i .get_raster_info (raster_name )
290- print (f"{ r_infos = } " )
291296 da_with_attrs = set_cf_coordinates (data_array , gi = grass_i , is_3d = False )
292297 da_with_attrs .attrs ["long_name" ] = r_infos .get ("title" , "" )
293298 da_with_attrs .attrs ["source" ] = "," .join ([r_infos ["source1" ], r_infos ["source2" ]])
@@ -330,7 +335,6 @@ def open_grass_raster_3d(raster_3d_name: str, grass_i: GrassInterface) -> xr.Dat
330335
331336def open_grass_strds (strds_name : str , grass_i : GrassInterface ) -> xr .DataArray :
332337 """must be called from within a grass session
333- TODO: add unit, description etc. as attributes
334338 TODO: lazy loading
335339 """
336340 x_coords , y_coords , _ = get_coordinates (grass_i , raster_3d = False ).values ()
0 commit comments