]> granicus.if.org Git - python/commitdiff
Move shelve over to BytesIO as pickle.(Pickler | Unpickler) expect binary
authorBrett Cannon <bcannon@gmail.com>
Thu, 26 Jul 2007 03:07:02 +0000 (03:07 +0000)
committerBrett Cannon <bcannon@gmail.com>
Thu, 26 Jul 2007 03:07:02 +0000 (03:07 +0000)
files, not text files.

test_shelve still fails thanks to bsddb not having been fixed.

Lib/shelve.py
Lib/test/test_anydbm.py

index 5aa8263f05883f7484d56a5f7d23ccc305a0e4cb..5759d4ec63ce15246467fb0e19f48c7610862011 100644 (file)
@@ -57,7 +57,7 @@ the persistent dictionary on disk, if feasible).
 """
 
 from pickle import Pickler, Unpickler
-from io import StringIO
+from io import BytesIO
 
 import UserDict
 import warnings
@@ -97,7 +97,7 @@ class Shelf(UserDict.DictMixin):
         try:
             value = self.cache[key]
         except KeyError:
-            f = StringIO(self.dict[key])
+            f = BytesIO(self.dict[key])
             value = Unpickler(f).load()
             if self.writeback:
                 self.cache[key] = value
@@ -106,7 +106,7 @@ class Shelf(UserDict.DictMixin):
     def __setitem__(self, key, value):
         if self.writeback:
             self.cache[key] = value
-        f = StringIO()
+        f = BytesIO()
         p = Pickler(f, self._protocol)
         p.dump(value)
         self.dict[key] = f.getvalue()
@@ -161,27 +161,27 @@ class BsdDbShelf(Shelf):
 
     def set_location(self, key):
         (key, value) = self.dict.set_location(key)
-        f = StringIO(value)
+        f = BytesIO(value)
         return (key, Unpickler(f).load())
 
     def next(self):
         (key, value) = next(self.dict)
-        f = StringIO(value)
+        f = BytesIO(value)
         return (key, Unpickler(f).load())
 
     def previous(self):
         (key, value) = self.dict.previous()
-        f = StringIO(value)
+        f = BytesIO(value)
         return (key, Unpickler(f).load())
 
     def first(self):
         (key, value) = self.dict.first()
-        f = StringIO(value)
+        f = BytesIO(value)
         return (key, Unpickler(f).load())
 
     def last(self):
         (key, value) = self.dict.last()
-        f = StringIO(value)
+        f = BytesIO(value)
         return (key, Unpickler(f).load())
 
 
index f5eae42f09bfdbf96d85cc7ef99462f832fc05d4..b396d6f2b35805d11dbbe6b2afec372cd7d7f75a 100644 (file)
@@ -21,13 +21,13 @@ def _delete_files():
             pass
 
 class AnyDBMTestCase(unittest.TestCase):
-    _dict = {'0': b'',
-             'a': b'Python:',
-             'b': b'Programming',
-             'c': b'the',
-             'd': b'way',
-             'f': b'Guido',
-             'g': b'intended',
+    _dict = {str8('0'): b'',
+             str8('a'): b'Python:',
+             str8('b'): b'Programming',
+             str8('c'): b'the',
+             str8('d'): b'way',
+             str8('f'): b'Guido',
+             str8('g'): b'intended',
              }
 
     def __init__(self, *args):
@@ -44,7 +44,7 @@ class AnyDBMTestCase(unittest.TestCase):
     def test_anydbm_modification(self):
         self.init_db()
         f = anydbm.open(_fname, 'c')
-        self._dict['g'] = f['g'] = b"indented"
+        self._dict[str8('g')] = f[str8('g')] = b"indented"
         self.read_helper(f)
         f.close()