diff options
Diffstat (limited to 'pym/cache/template.py')
-rw-r--r-- | pym/cache/template.py | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/pym/cache/template.py b/pym/cache/template.py index c230b9389..f9c613b50 100644 --- a/pym/cache/template.py +++ b/pym/cache/template.py @@ -14,6 +14,7 @@ class database(object): complete_eclass_entries_ = True autocommits = False cleanse_keys = False + serialize_eclasses = True def __init__(self, location, label, auxdbkeys, readonly=False): """ initialize the derived class; specifically, store label/keys""" @@ -23,7 +24,6 @@ class database(object): self.readonly = readonly self.sync_rate = 0 self.updates = 0 - def __getitem__(self, cpv): """set a cpv to values @@ -33,7 +33,7 @@ class database(object): self.commit() self.updates = 0 d=self._getitem(cpv) - if "_eclasses_" in d: + if self.serialize_eclasses and "_eclasses_" in d: d["_eclasses_"] = reconstruct_eclasses(cpv, d["_eclasses_"]) return d @@ -42,7 +42,6 @@ class database(object): override this in derived classess""" raise NotImplementedError - def __setitem__(self, cpv, values): """set a cpv to values This shouldn't be overriden in derived classes since it handles the readonly checks""" @@ -53,9 +52,9 @@ class database(object): for k in d.keys(): if d[k] == '': del d[k] - if "_eclasses_" in values: + if self.serialize_eclasses and "_eclasses_" in values: d["_eclasses_"] = serialize_eclasses(d["_eclasses_"]) - elif "_eclasses_" in values: + elif self.serialize_eclasses and "_eclasses_" in values: d = ProtectedDict(values) d["_eclasses_"] = serialize_eclasses(d["_eclasses_"]) else: @@ -67,13 +66,11 @@ class database(object): self.commit() self.updates = 0 - def _setitem(self, name, values): """__setitem__ calls this after readonly checks. override it in derived classes note _eclassees_ key *must* be handled""" raise NotImplementedError - def __delitem__(self, cpv): """delete a key from the cache. This shouldn't be overriden in derived classes since it handles the readonly checks""" @@ -86,16 +83,13 @@ class database(object): self.commit() self.updates = 0 - def _delitem(self,cpv): """__delitem__ calls this after readonly checks. override it in derived classes""" raise NotImplementedError - def has_key(self, cpv): raise NotImplementedError - def keys(self): return tuple(self.iterkeys()) @@ -118,6 +112,9 @@ class database(object): if not self.autocommits: raise NotImplementedError + def __contains__(self, cpv): + return self.has_key(cpv) + def get_matches(self, match_dict): """generic function for walking the entire cache db, matching restrictions to filter what cpv's are returned. Derived classes should override this if they @@ -148,7 +145,6 @@ class database(object): cont = False break if cont: -# yield cpv,vals yield cpv |