Issue 7975: in python 2.6 bsddb.dbshelve switched from DictMixin to

MutableMapping, and thereby lost functionality because the replacement
functionality was implemented incorrectly or incompletely).  Since bsddb
isn't in py3k, this patch just goes back to using DictMixin in order to
correct the regression.
This commit is contained in:
R. David Murray 2010-02-24 02:31:27 +00:00
parent 300c5cc874
commit 48605be128
2 changed files with 8 additions and 15 deletions

View File

@ -59,16 +59,11 @@ else:
return cPickle.dumps(object, bin=protocol)
if sys.version_info[0:2] <= (2, 5) :
try:
from UserDict import DictMixin
except ImportError:
# DictMixin is new in Python 2.3
class DictMixin: pass
MutableMapping = DictMixin
else :
import collections
MutableMapping = collections.MutableMapping
try:
from UserDict import DictMixin
except ImportError:
# DictMixin is new in Python 2.3
class DictMixin: pass
#------------------------------------------------------------------------
@ -111,7 +106,7 @@ def open(filename, flags=db.DB_CREATE, mode=0660, filetype=db.DB_HASH,
class DBShelveError(db.DBError): pass
class DBShelf(MutableMapping):
class DBShelf(DictMixin):
"""A shelf to hold pickled objects, built upon a bsddb DB object. It
automatically pickles/unpickles data objects going to/from the DB.
"""
@ -162,10 +157,6 @@ class DBShelf(MutableMapping):
else:
return self.db.keys()
if sys.version_info[0:2] >= (2, 6) :
def __iter__(self) :
return self.db.__iter__()
def open(self, *args, **kwargs):
self.db.open(*args, **kwargs)

View File

@ -30,6 +30,8 @@ Core and Builtins
Library
-------
- Issue #7975: correct regression in dict methods supported by bsddb.dbshelve.
- Issue #7959: ctypes callback functions are now registered correctly
with the cylce garbage collector.