Commit b948d032 authored by Klaus Wölfel's avatar Klaus Wölfel

Make use of lazy sequence in data bucket stream api

parent 317f0836
...@@ -83,24 +83,35 @@ class DataBucketStream(Document): ...@@ -83,24 +83,35 @@ class DataBucketStream(Document):
""" """
return self._tree.pop(key) return self._tree.pop(key)
def itervalues(self, min_key=None, count=None): def getBucketKeySequence(self, start_key=None, count=None):
""" """
Yield complete buckets of data. Get a lazy sequence of bucket values
""" """
for i, chunk in enumerate(self._tree.itervalues(min_key)): excludemin = start_key is not None
if count is not None and i > count - 1: sequence = self._tree.keys(min=start_key, excludemin=excludemin)
break if count is None:
out = chunk.value return sequence
# Free memory used by chunk. Helps avoiding thrashing connection return sequence[:count]
# cache by discarding chunks earlier.
chunk._p_deactivate()
yield out
def readBucketList(self, min_key=None, count=None): def getBucketValueSequence(self, start_key=None, count=None):
""" """
Get complete buckets of data. Get a lazy sequence of bucket values
""" """
return [bucket for bucket in self.itervalues(min_key, count)] excludemin = start_key is not None
sequence = self._tree.values(min=start_key, excludemin=excludemin)
if count is None:
return sequence
return sequence[:count]
def getBucketItemSequence(self, start_key=None, count=True):
"""
Get a lazy sequence of bucket values
"""
excludemin = start_key is not None
sequence = self._tree.items(min=start_key, excludemin=excludemin)
if count is None:
return sequence
return sequence[:count]
def getItemList(self): def getItemList(self):
""" """
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment