summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/bsddb/__init__.py8
-rw-r--r--Lib/bsddb/dbobj.py9
-rw-r--r--Lib/bsddb/dbshelve.py8
3 files changed, 14 insertions, 11 deletions
diff --git a/Lib/bsddb/__init__.py b/Lib/bsddb/__init__.py
index 26e41b1..939700f 100644
--- a/Lib/bsddb/__init__.py
+++ b/Lib/bsddb/__init__.py
@@ -64,10 +64,10 @@ error = db.DBError # So bsddb.error will mean something...
#----------------------------------------------------------------------
-import sys, os, UserDict
+import sys, os, collections
from weakref import ref
-class _iter_mixin(UserDict.DictMixin):
+class _iter_mixin(collections.MutableMapping):
def _make_iter_cursor(self):
cur = _DeadlockWrap(self.db.cursor)
key = id(cur)
@@ -289,7 +289,7 @@ class _ExposedProperties:
def _cursor_refs(self):
return self.db._cursor_refs
-class StringKeys(UserDict.DictMixin, _ExposedProperties):
+class StringKeys(collections.MutableMapping, _ExposedProperties):
"""Wrapper around DB object that automatically encodes
all keys as UTF-8; the keys must be strings."""
@@ -357,7 +357,7 @@ class StringKeys(UserDict.DictMixin, _ExposedProperties):
def sync(self):
return self.db.sync()
-class StringValues(UserDict.DictMixin, _ExposedProperties):
+class StringValues(collections.MutableMapping, _ExposedProperties):
"""Wrapper around DB object that automatically encodes
and decodes all values as UTF-8; input values must be strings."""
diff --git a/Lib/bsddb/dbobj.py b/Lib/bsddb/dbobj.py
index 987f773..4c0f125 100644
--- a/Lib/bsddb/dbobj.py
+++ b/Lib/bsddb/dbobj.py
@@ -24,10 +24,9 @@
from . import db
try:
- from UserDict import DictMixin
+ from collections import MutableMapping
except ImportError:
- # DictMixin is new in Python 2.3
- class DictMixin: pass
+ class MutableMapping: pass
class DBEnv:
def __init__(self, *args, **kwargs):
@@ -113,7 +112,7 @@ class DBEnv:
return self._cobj.lsn_reset(*args, **kwargs)
-class DB(DictMixin):
+class DB(MutableMapping):
def __init__(self, dbenv, *args, **kwargs):
# give it the proper DBEnv C object that its expecting
self._cobj = db.DB(dbenv._cobj, *args, **kwargs)
@@ -127,6 +126,8 @@ class DB(DictMixin):
self._cobj[key] = value
def __delitem__(self, arg):
del self._cobj[arg]
+ def __iter__(self):
+ return iter(self.keys())
def append(self, *args, **kwargs):
return self._cobj.append(*args, **kwargs)
diff --git a/Lib/bsddb/dbshelve.py b/Lib/bsddb/dbshelve.py
index 8264f2d..942ee17 100644
--- a/Lib/bsddb/dbshelve.py
+++ b/Lib/bsddb/dbshelve.py
@@ -38,12 +38,12 @@ if sys.version_info[:3] >= (2, 3, 0):
HIGHEST_PROTOCOL = pickle.HIGHEST_PROTOCOL
def _dumps(object, protocol):
return pickle.dumps(object, protocol=protocol)
- from UserDict import DictMixin
+ from collections import MutableMapping
else:
HIGHEST_PROTOCOL = None
def _dumps(object, protocol):
return pickle.dumps(object, bin=protocol)
- class DictMixin: pass
+ class MutableMapping: pass
from . import db
@@ -90,7 +90,7 @@ def open(filename, flags=db.DB_CREATE, mode=0o660, filetype=db.DB_HASH,
class DBShelveError(db.DBError): pass
-class DBShelf(DictMixin):
+class DBShelf(MutableMapping):
"""A shelf to hold pickled objects, built upon a bsddb DB object. It
automatically pickles/unpickles data objects going to/from the DB.
"""
@@ -141,6 +141,8 @@ class DBShelf(DictMixin):
else:
return self.db.keys()
+ def __iter__(self):
+ return iter(self.keys())
def open(self, *args, **kwargs):
self.db.open(*args, **kwargs)