Really, just getting the tests to pass.  I think there are a lot of legacy,
but still supporte features that need to be fixed.  (This is a really
old package.)

If it's just a matter of making the tests pass, maybe this will help?

Please let me know if there are any other fixes I could help with.

Cheers,

Pedro
Index: src/BTrees/___BTree.py
===================================================================
--- src/BTrees/___BTree.py	(revision 123034)
+++ src/BTrees/___BTree.py	(working copy)
@@ -67,8 +67,8 @@
         return -1-low
 
 
-    def minKey(self, key=_marker):
-        if key is _marker:
+    def minKey(self, key=None):
+        if key is None:
             return self._keys[0]
         else:
             key = self._to_key(key)
@@ -82,8 +82,8 @@
                 else:
                     raise ValueError("no key satisfies the conditions")
 
-    def maxKey(self, key=_marker):
-        if key is _marker:
+    def maxKey(self, key=None):
+        if key is None:
             return self._keys[-1]
         else:
             key = self._to_key(key)
@@ -97,9 +97,9 @@
                 else:
                     raise ValueError("no key satisfies the conditions")
 
-    def _range(self, min=_marker, max=_marker,
+    def _range(self, min=None, max=None,
                excludemin=False, excludemax=False):
-        if min is _marker:
+        if min is None:
             start = 0
             if excludemin:
                 start = 1
@@ -111,7 +111,7 @@
                     start += 1
             else:
                 start = -start - 1
-        if max is _marker:
+        if max is None:
             end = len(self._keys)
             if excludemax:
                 end -= 1
@@ -597,13 +597,13 @@
         r = self._data[index].child.has_key(key)
         return r and r + 1
 
-    def keys(self, min=_marker, max=_marker,
+    def keys(self, min=None, max=None,
              excludemin=False, excludemax=False,
              itertype='iterkeys'):
         if not self._data:
             return ()
 
-        if min != _marker:
+        if min != None:
             min = self._to_key(min)
             bucket = self._findbucket(min)
         else:
@@ -613,15 +613,15 @@
 
         return _TreeItems(bucket, itertype, iterargs)
 
-    def iterkeys(self, min=_marker, max=_marker,
+    def iterkeys(self, min=None, max=None,
                  excludemin=False, excludemax=False):
         return iter(self.keys(min, max, excludemin, excludemax))
 
     def __iter__(self):
         return iter(self.keys())
 
-    def minKey(self, min=_marker):
-        if min is _marker:
+    def minKey(self, min=None):
+        if min is None:
             bucket = self._firstbucket
         else:
             min = self._to_key(min)
@@ -631,11 +631,11 @@
         else:
             raise ValueError('empty tree')
 
-    def maxKey(self, max=_marker):
+    def maxKey(self, max=None):
         data = self._data
         if not data:
             raise ValueError('empty tree')
-        if max is _marker:
+        if max is None:
             return data[-1].child.maxKey()
 
         max = self._to_key(max)
@@ -962,19 +962,19 @@
             return bucket[key]
         raise KeyError(key)
 
-    def values(self, min=_marker, max=_marker,
+    def values(self, min=None, max=None,
                excludemin=False, excludemax=False):
         return self.keys(min, max, excludemin, excludemax, 'itervalues')
 
-    def itervalues(self, min=_marker, max=_marker,
+    def itervalues(self, min=None, max=None,
                    excludemin=False, excludemax=False):
         return iter(self.values(min, max, excludemin, excludemax))
 
-    def items(self, min=_marker, max=_marker,
+    def items(self, min=None, max=None,
               excludemin=False, excludemax=False):
         return self.keys(min, max, excludemin, excludemax, 'iteritems')
 
-    def iteritems(self, min=_marker, max=_marker,
+    def iteritems(self, min=None, max=None,
                   excludemin=False, excludemax=False):
         return iter(self.items(min, max, excludemin, excludemax))
 
Index: src/BTrees/fsBTree.py
===================================================================
--- src/BTrees/fsBTree.py	(revision 123034)
+++ src/BTrees/fsBTree.py	(working copy)
@@ -20,7 +20,29 @@
     from _fsBTree import *
 except ImportError:
     import ___BTree
-    ___BTree._import(globals(), 'fs', 500, 500,
+    ___BTree._import(globals(), '_fs', 500, 500,
                      to_key=___BTree.to_str(2),
                      to_value=___BTree.to_str(6),
                      )
+
+    class fsBucket(_fsBucket):
+
+        def toString(self):
+            return ''.join(self._keys) + ''.join(self._values)
+
+        def fromString(self, state):
+
+            if len(state) % 8:
+                raise ValueError("state string of wrong size")
+
+            self._keys = []
+            self._values = []
+            two_l = len(state) / 4
+            k, v = 0, two_l
+
+            while k < two_l:
+                self._keys.append(state[k:k+2])
+                self._values.append(state[v:v+6])
+                k += 2
+                v += 6
+            return self
_______________________________________________
For more information about ZODB, see http://zodb.org/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev

Reply via email to