-class store(object):
- def __init__(self, name, *, env=None, path=".", ncache=None):
+class icache(object):
+ def __init__(self):
+ self.d = weakref.WeakKeyDictionary()
+
+ def __getitem__(self, key):
+ obj, idx = key
+ return self.d[obj][idx]
+ def __setitem__(self, key, val):
+ obj, idx = key
+ if obj in self.d:
+ self.d[obj][idx] = val
+ else:
+ self.d[obj] = {idx: val}
+ def __delitem__(self, key):
+ obj, idx = key
+ del self.d[obj][idx]
+ def get(self, key, default=None):
+ obj, idx = key
+ if obj not in self.d:
+ return default
+ return self.d[obj].get(idx, default)
+
+class datastore(object):
+ def __init__(self, name, *, env=None, path=".", ncache=None, codec=None):