@@ -66,6 +66,15 @@ def __getattr__(self, name: str) -> xr.DataArray:
6666 if data is None :
6767 return xr .DataArray (name = name )
6868
69+ if isinstance (data , float ):
70+ return xr .DataArray (data , name = name )
71+
72+ if not isinstance (data , np .ndarray ):
73+ raise TypeError (
74+ f"Cannot create xarray DataArray for field { name } of type"
75+ f" { type (data )} "
76+ )
77+
6978 dims = None
7079
7180 match name :
@@ -91,7 +100,8 @@ def __getattr__(self, name: str) -> xr.DataArray:
91100 coords = {
92101 "time" : self ._svp .ts ,
93102 "free_parameter" : [
94- self ._svp .parameter_ids [i ] for i in self ._svp .plist
103+ self ._svp .free_parameter_ids [i ]
104+ for i in self ._svp .plist
95105 ],
96106 "observable" : list (self ._svp .observable_ids ),
97107 }
@@ -112,11 +122,12 @@ def __getattr__(self, name: str) -> xr.DataArray:
112122 coords = {
113123 "time" : self ._svp .ts ,
114124 "free_parameter" : [
115- self ._svp .parameter_ids [i ] for i in self ._svp .plist
125+ self ._svp .free_parameter_ids [i ]
126+ for i in self ._svp .plist
116127 ],
117128 "state" : list (self ._svp .state_ids ),
118129 }
119- dims = ("time" , "free_parameter" , "state_variable " )
130+ dims = ("time" , "free_parameter" , "state " )
120131 case "sllh" :
121132 coords = {
122133 "free_parameter" : [
@@ -154,6 +165,15 @@ def __getattr__(self, name: str) -> xr.DataArray:
154165 )
155166 return arr
156167
168+ def __dir__ (self ):
169+ return sorted (
170+ set (
171+ itertools .chain (
172+ dir (super ()), self .__dict__ , self ._svp ._field_names
173+ )
174+ )
175+ )
176+
157177
158178class SwigPtrView (collections .abc .Mapping ):
159179 """
0 commit comments