[jToolkit-cvs] jToolkit timecache.py,1.3,1.4
Brought to you by:
davidfraser,
friedelwolff
From: <dav...@us...> - 2004-03-09 21:45:07
|
Update of /cvsroot/jtoolkit/jToolkit In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7923 Modified Files: timecache.py Log Message: completed timecache methods corrected repr, iterator methods... Index: timecache.py =================================================================== RCS file: /cvsroot/jtoolkit/jToolkit/timecache.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** timecache.py 25 Sep 2003 17:36:55 -0000 1.3 --- timecache.py 9 Mar 2004 21:19:45 -0000 1.4 *************** *** 21,24 **** --- 21,26 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + # TODO: remove when python2.2 support is dropped... + from __future__ import generators from jToolkit.data import dates *************** *** 26,29 **** --- 28,32 ---- """caches objects, remembers time, and dumps when neccessary...""" def __init__(self, expiryperiod): + """constructs a timecache dictionary with an expiryperiod given in seconds...""" dict.__init__(self) self.expiryperiod = dates.seconds(expiryperiod) *************** *** 34,37 **** --- 37,41 ---- def gettimestamp(self): + """returns a new timestamp for the current time...""" return dates.currentdate() *************** *** 69,74 **** def __repr__(self): self.purge() ! return dict.__repr__(self) def __setitem__(self, key, value): --- 73,79 ---- def __repr__(self): + """x.__repr__() <==> repr(x)""" self.purge() ! return repr(dict(self.items())) def __setitem__(self, key, value): *************** *** 91,119 **** return value - # FIXME: remove all the timestamps from the iterator functions def items(self): self.purge() ! return dict.items(self) def iteritems(self): self.purge() ! return dict.iteritems(self) def iterkeys(self): self.purge() return dict.iterkeys(self) def itervalues(self): self.purge() ! return dict.itervalues(self) def keys(self): self.purge() return dict.keys(self) def values(self): self.purge() ! return dict.values(self) ! # TODO: still to implement: popitem, setdefault, update --- 96,150 ---- return value def items(self): + """D.items() -> list of D's (key, value) pairs, as 2-tuples""" self.purge() ! return [(key, value) for (key, (timestamp, value)) in dict.items(self)] def iteritems(self): + """D.iteritems() -> an iterator over the (key, value) items of D""" self.purge() ! for key, (timestamp, value) in dict.iteritems(self): ! yield (key, value) def iterkeys(self): + """D.iterkeys() -> an iterator over the keys of D""" self.purge() return dict.iterkeys(self) def itervalues(self): + """D.itervalues() -> an iterator over the values of D""" self.purge() ! for timestamp, value in dict.itervalues(self): ! yield value def keys(self): + """D.keys() -> list of D's keys""" self.purge() return dict.keys(self) def values(self): + """D.values() -> list of D's values""" self.purge() ! return [value for (timestamp, value) in dict.values(self)] ! def popitem(self): ! """D.popitem() -> (k, v), remove and return some (key, value) pair as a ! 2-tuple; but raise KeyError if D is empty""" ! self.purge() ! key, (timestamp, value) = dict.popitem(self) ! return (key, value) ! ! def setdefault(self, key, failobj=None): ! """D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D""" ! newtimestamp = self.gettimestamp() ! oldtimestamp, value = dict.setdefault(self, key, (newtimestamp, failobj)) ! if self.expired(oldtimestamp): ! dict.__setitem__(self, key, (newtimestamp, failobj)) ! return failobj ! return value ! ! def update(self, updatedict): ! """D.update(E) -> None. Update D from E: for k in E.keys(): D[k] = E[k]""" ! for key in updatedict.keys(): ! self[key] = updatedict[key] |