@@ -270,29 +270,22 @@ def at_r(self, rval: float) -> int:
270270 return int (np .argmin (np .abs (self .r_centers - rval )))
271271
272272
273+ @dataclass (frozen = True )
273274class Fields :
274275 """Fields data structure.
275276
276277 The `Step.fields` attribute is an instance of this class.
277278 """
278279
279- def __init__ (
280- self ,
281- step : Step ,
282- variables : Mapping [str , Varf ],
283- extravars : Mapping [str , Callable [[Step ], Field ]],
284- files : Mapping [str , list [str ]],
285- filesh5 : Mapping [str , list [str ]],
286- ):
287- self .step = step
288- self ._vars = variables
289- self ._extra = extravars
290- self ._files = files
291- self ._filesh5 = filesh5
280+ step : Step
281+ variables : Mapping [str , Varf ]
282+ extravars : Mapping [str , Callable [[Step ], Field ]]
283+ files : Mapping [str , list [str ]]
284+ filesh5 : Mapping [str , list [str ]]
292285
293286 @cached_property
294287 def _all_vars (self ) -> set [str ]:
295- return set (self ._vars .keys ()).union (self ._extra .keys ())
288+ return set (self .variables .keys ()).union (self .extravars .keys ())
296289
297290 @cached_property
298291 def _cache (self ) -> FieldCache :
@@ -306,8 +299,8 @@ def __getitem__(self, name: str) -> Field:
306299 if maybe_fld is not None :
307300 return maybe_fld
308301
309- if name in self ._extra :
310- fld = self ._extra [name ](self .step )
302+ if name in self .extravars :
303+ fld = self .extravars [name ](self .step )
311304 self ._cache .insert (self .step .istep , name , fld )
312305 return fld
313306
@@ -319,7 +312,7 @@ def __getitem__(self, name: str) -> Field:
319312 )
320313 header , fields = parsed_data
321314 for fld_name , fld_vals in zip (fld_names , fields ):
322- fld = Field (fld_vals , self ._vars [fld_name ])
315+ fld = Field (fld_vals , self .variables [fld_name ])
323316 self ._cache .insert (self .step .istep , fld_name , fld )
324317 return self [name ]
325318
@@ -336,7 +329,7 @@ def _get_raw_data(self, name: str) -> tuple[list[str], Any]:
336329 """Find file holding data and return its content."""
337330 # try legacy first, then hdf5
338331 filestem = ""
339- for filestem , list_fvar in self ._files .items ():
332+ for filestem , list_fvar in self .files .items ():
340333 if name in list_fvar :
341334 break
342335 parsed_data = None
@@ -349,10 +342,10 @@ def _get_raw_data(self, name: str) -> tuple[list[str], Any]:
349342 fieldfile = self .step .sdat .filename (filestem , self .step .isnap )
350343 if fieldfile .is_file ():
351344 parsed_data = stagyyparsers .fields (fieldfile )
352- elif self .step .sdat .hdf5 and self ._filesh5 :
345+ elif self .step .sdat .hdf5 and self .filesh5 :
353346 # files in which the requested data can be found
354347 files = [
355- (stem , fvars ) for stem , fvars in self ._filesh5 .items () if name in fvars
348+ (stem , fvars ) for stem , fvars in self .filesh5 .items () if name in fvars
356349 ]
357350 for filestem , list_fvar in files :
358351 sdat = self .step .sdat
0 commit comments