1 #=======================================================================
3 __version__
= '''0.0.01'''
4 __sub_version__
= '''20051010153516'''
5 __copyright__
= '''(c) Alex A. Naanou 2003'''
8 #-----------------------------------------------------------------------
10 import pli
.pattern
.mixin
.mapping
as mapping
13 #-----------------------------------------------------------SQLShelve---
15 # XXX should this be live???
16 class SQLShelve(mapping
.Mapping
):
19 # TODO make this create a new dict for the id if one is not
20 # present.... (might be a good idea to use some other id
22 # one alternative id method is to create a root dict that will
23 # contain names of all the dicts used and their coresponding
25 def __init__(self
, interface
, name
):
28 self
._interface
= interface
30 # if such a name does not exist...
32 self
._data
= interface
.get(name
)
35 interface
.write(name
, d
)
36 ##!!! sanity check: if the name refereneces a non-dict or non-dict-like...
38 def __getitem__(self
, name
):
41 if name
in self
._data
:
42 return self
._interface
.get(self
._data
[name
])
44 ##!!! make this safe...
45 def __setitem__(self
, name
, value
):
49 # insert the object...
50 oid
= self
._interface
.write(value
)
51 # update the keys dict...
53 self
._interface
.write(data
)
54 def __delitem__(self
, name
):
57 return self
._interface
.delete(self
._data
.pop(name
))
61 for name
in self
._data
:
66 #=======================================================================
67 # vim:set ts=4 sw=4 nowrap :