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 - [email protected]
https://mail.zope.org/mailman/listinfo/zodb-dev