@@ -198,7 +198,7 @@ def __init__(self, sdat):
198198 :class:`_Steps` instance.
199199 """
200200 self .sdat = sdat
201- self ._last = UNDETERMINED
201+ self ._len = UNDETERMINED
202202 self ._data = {None : _step .EmptyStep ()} # for non existent snaps
203203
204204 def __repr__ (self ):
@@ -221,7 +221,7 @@ def __getitem__(self, istep):
221221 istep -= len (self )
222222 raise error .InvalidTimestepError (
223223 self .sdat , istep ,
224- 'Last istep is {}' .format (self . last . istep ))
224+ 'Last istep is {}' .format (len ( self ) - 1 ))
225225 if istep not in self ._data :
226226 self ._data [istep ] = _step .Step (istep , self .sdat )
227227 return self ._data [istep ]
@@ -233,7 +233,10 @@ def __delitem__(self, istep):
233233 del self ._data [istep ]
234234
235235 def __len__ (self ):
236- return self .last .istep + 1
236+ if self ._len is UNDETERMINED :
237+ # not necessarily the last one...
238+ self ._len = self .sdat .tseries .index [- 1 ] + 1
239+ return self ._len
237240
238241 def __iter__ (self ):
239242 return iter (self [:])
@@ -270,19 +273,6 @@ def filter(self, **filters):
270273 """Build a _StepsView with requested filters."""
271274 return self [:].filter (** filters )
272275
273- @property
274- def last (self ):
275- """Last time step available.
276-
277- Example:
278- >>> sdat = StagyyData('path/to/run')
279- >>> assert(sdat.steps.last is sdat.steps[-1])
280- """
281- if self ._last is UNDETERMINED :
282- # not necessarily the last one...
283- self ._last = self .sdat .tseries .index [- 1 ]
284- return self [self ._last ]
285-
286276
287277class _Snaps (_Steps ):
288278
@@ -343,15 +333,15 @@ def __delitem__(self, isnap):
343333 del self .sdat .steps [istep ]
344334
345335 def __len__ (self ):
346- if self ._last is UNDETERMINED :
347- self ._last = - 1
336+ if self ._len is UNDETERMINED :
337+ self ._len = - 1
348338 if self .sdat .hdf5 :
349339 isnap = - 1
350340 for isnap , istep in stagyyparsers .read_time_h5 (self .sdat .hdf5 ):
351341 self ._bind (isnap , istep )
352- self ._last = isnap
342+ self ._len = isnap
353343 self ._all_isteps_known = True
354- if self ._last < 0 :
344+ if self ._len < 0 :
355345 out_stem = re .escape (pathlib .Path (
356346 self .sdat .par ['ioin' ]['output_file_stem' ] + '_' ).name [:- 1 ])
357347 rgx = re .compile (
@@ -360,10 +350,11 @@ def __len__(self):
360350 for fname in self .sdat ._files :
361351 match = rgx .match (fname .name )
362352 if match is not None and match .group (1 ) in fstems :
363- self ._last = max (int (match .group (2 )), self ._last )
364- if self ._last < 0 :
353+ self ._len = max (int (match .group (2 )), self ._len )
354+ if self ._len < 0 :
365355 raise error .NoSnapshotError (self .sdat )
366- return self ._last + 1
356+ self ._len += 1
357+ return self ._len
367358
368359 def at_time (self , time , after = False ):
369360 """Return snap corresponding to a given physical time.
@@ -405,16 +396,6 @@ def _bind(self, isnap, istep):
405396 self ._isteps [isnap ] = istep
406397 self .sdat .steps [istep ]._isnap = isnap
407398
408- @property
409- def last (self ):
410- """Last snapshot available.
411-
412- Example:
413- >>> sdat = StagyyData('path/to/run')
414- >>> assert(sdat.snaps.last is sdat.snaps[-1])
415- """
416- return self [len (self ) - 1 ]
417-
418399
419400class _StepsView :
420401
0 commit comments