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]
|