diff options
author | Ben West <bewest@gmail.com> | 2015-05-01 14:43:21 -0700 |
---|---|---|
committer | Ben West <bewest@gmail.com> | 2015-05-01 14:43:21 -0700 |
commit | 6c7df26409a80c819b36c4bcf21ce21697505a35 (patch) | |
tree | 8ba7b8adb37065f1d559c2ea13601dc32870fd04 | |
parent | 086e7387d37e427a5bcab87da1314b6c8281072f (diff) |
lazy iter over all records
Only downloads pages if iterator requires it.
-rw-r--r-- | dexcom_reader/readdata.py | 10 |
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 |