@@ -86,6 +86,7 @@ class DBShelf(DictMixin):
8686 """
8787 def __init__ (self , dbenv = None ):
8888 self .db = db .DB (dbenv )
89+ self ._closed = True
8990 self .binary = 1
9091
9192
@@ -128,6 +129,23 @@ def keys(self, txn=None):
128129 return self .db .keys ()
129130
130131
132+ def open (self , * args , ** kwargs ):
133+ self .db .open (* args , ** kwargs )
134+ self ._closed = False
135+
136+
137+ def close (self , * args , ** kwargs ):
138+ self .db .close (* args , ** kwargs )
139+ self ._closed = True
140+
141+
142+ def __repr__ (self ):
143+ if self ._closed :
144+ return '<DBShelf @ 0x%x - closed>' % (id (self ))
145+ else :
146+ return repr (dict (self .iteritems ()))
147+
148+
131149 def items (self , txn = None ):
132150 if txn != None :
133151 items = self .db .items (txn )
@@ -156,8 +174,7 @@ def __append(self, value, txn=None):
156174
157175 def append (self , value , txn = None ):
158176 if self .get_type () == db .DB_RECNO :
159- self .append = self .__append
160- return self .append (value , txn = txn )
177+ return self .__append (value , txn = txn )
161178 raise DBShelveError ("append() only supported when dbshelve opened with filetype=dbshelve.db.DB_RECNO" )
162179
163180
0 commit comments