summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen West <bewest@gmail.com>2015-05-01 14:43:21 -0700
committerBen West <bewest@gmail.com>2015-05-01 14:43:21 -0700
commit6c7df26409a80c819b36c4bcf21ce21697505a35 (patch)
tree8ba7b8adb37065f1d559c2ea13601dc32870fd04
parent086e7387d37e427a5bcab87da1314b6c8281072f (diff)
lazy iter over all records
Only downloads pages if iterator requires it.
-rw-r--r--dexcom_reader/readdata.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/dexcom_reader/readdata.py b/dexcom_reader/readdata.py
index b08e5fa..b685fcd 100644
--- a/dexcom_reader/readdata.py
+++ b/dexcom_reader/readdata.py
@@ -225,7 +225,7 @@ class Dexcom(object):
225 return self.ParsePage(header, packet_data) 225 return self.ParsePage(header, packet_data)
226 226
227 def GenericRecordYielder(self, header, data, record_type): 227 def GenericRecordYielder(self, header, data, record_type):
228 for x in range(header[1]): 228 for x in xrange(header[1]):
229 yield record_type.Create(data, x) 229 yield record_type.Create(data, x)
230 230
231 def ParsePage(self, header, data): 231 def ParsePage(self, header, data):
@@ -247,6 +247,14 @@ class Dexcom(object):
247 raise NotImplementedError('Parsing of %s has not yet been implemented' 247 raise NotImplementedError('Parsing of %s has not yet been implemented'
248 % record_type) 248 % record_type)
249 249
250 def iter_records (self, record_type):
251 assert record_type in constants.RECORD_TYPES
252 page_range = self.ReadDatabasePageRange(record_type)
253 for x in xrange(page_range[1], page_range[0] or 1, -1):
254 records = list(self.ReadDatabasePage(record_type, x))
255 records.reverse( )
256 for record in records:
257 yield record
250 def ReadRecords(self, record_type): 258 def ReadRecords(self, record_type):
251 records = [] 259 records = []
252 assert record_type in constants.RECORD_TYPES 260 assert record_type in constants.RECORD_TYPES