]> granicus.if.org Git - python/commitdiff
Make dumbdbm use bytes for keys consistently.
authorGuido van Rossum <guido@python.org>
Tue, 28 Aug 2007 00:09:54 +0000 (00:09 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 28 Aug 2007 00:09:54 +0000 (00:09 +0000)
Lib/dumbdbm.py
Lib/test/test_dumbdbm.py

index ad3ebcbcb9b131e8817052f34b0b314f747caffc..b47b7bd4b293cddec38fb3e9bd3dac5351fbaf26 100644 (file)
@@ -200,7 +200,11 @@ class _Database(UserDict.DictMixin):
         self._commit()
 
     def keys(self):
-        return self._index.keys()
+        return [key.encode("latin-1") for key in self._index.keys()]
+
+    def items(self):
+        return [(key.encode("latin-1"), self[key.encode("latin-1")])
+                for key in self._index.keys()]
 
     def __contains__(self, key):
         key = key.decode("latin-1")
index f327a5ae52c2b355515ab92589cee07ca387b29c..44bb36941c957fa9849144ddfb7b387a2ec14ee3 100644 (file)
@@ -102,7 +102,7 @@ class DumbDBMTestCase(unittest.TestCase):
         f[b'1'] = b'hello2'
         f.close()
         f = dumbdbm.open(_fname)
-        self.assertEqual(f['1'], b'hello2')
+        self.assertEqual(f[b'1'], b'hello2')
         f.close()
 
     def test_line_endings(self):
@@ -157,11 +157,11 @@ class DumbDBMTestCase(unittest.TestCase):
                     v = random.choice((b'a', b'b', b'c')) * random.randrange(10000)
                     d[k] = v
                     f[k.encode("ascii")] = v
-                    self.assertEqual(f[k], v)
+                    self.assertEqual(f[k.encode("ascii")], v)
             f.close()
 
             f = dumbdbm.open(_fname)
-            expected = sorted(d.items())
+            expected = sorted((k.encode("latin-1"), v) for k, v in d.items())
             got = sorted(f.items())
             self.assertEqual(expected, got)
             f.close()