[Python-3000-checkins] r60574 - python/branches/py3k/Lib/bsddb/__init__.py python/branches/py3k/Lib/bsddb/dbobj.py python/branches/py3k/Lib/bsddb/dbshelve.py

raymond.hettinger python-3000-checkins at python.org
Mon Feb 4 22:26:28 CET 2008


Author: raymond.hettinger
Date: Mon Feb  4 22:26:27 2008
New Revision: 60574

Modified:
   python/branches/py3k/Lib/bsddb/__init__.py
   python/branches/py3k/Lib/bsddb/dbobj.py
   python/branches/py3k/Lib/bsddb/dbshelve.py
Log:
In bsddb, replace UserDict.DictMixin with collections.MutableMapping.
I can't test this directly on my build, so letting the buildbots do it for me.
If it fails, expect a reversion.



Modified: python/branches/py3k/Lib/bsddb/__init__.py
==============================================================================
--- python/branches/py3k/Lib/bsddb/__init__.py	(original)
+++ python/branches/py3k/Lib/bsddb/__init__.py	Mon Feb  4 22:26:27 2008
@@ -64,10 +64,10 @@
 
 #----------------------------------------------------------------------
 
-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 @@
     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 @@
     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."""
 

Modified: python/branches/py3k/Lib/bsddb/dbobj.py
==============================================================================
--- python/branches/py3k/Lib/bsddb/dbobj.py	(original)
+++ python/branches/py3k/Lib/bsddb/dbobj.py	Mon Feb  4 22:26:27 2008
@@ -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 @@
             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 @@
         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)

Modified: python/branches/py3k/Lib/bsddb/dbshelve.py
==============================================================================
--- python/branches/py3k/Lib/bsddb/dbshelve.py	(original)
+++ python/branches/py3k/Lib/bsddb/dbshelve.py	Mon Feb  4 22:26:27 2008
@@ -38,12 +38,12 @@
     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 @@
 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 @@
         else:
             return self.db.keys()
 
+    def __iter__(self):
+        return iter(self.keys())
 
     def open(self, *args, **kwargs):
         self.db.open(*args, **kwargs)


More information about the Python-3000-checkins mailing list