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