Skip to content

Commit ca5b919

Browse files
committed
Fields is a frozen dataclass
1 parent 5835875 commit ca5b919

File tree

1 file changed

+13
-20
lines changed

1 file changed

+13
-20
lines changed

src/stagpy/step.py

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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)
273274
class 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

Comments
 (0)