def get(self, start, end=None): # TODO: Don't let this code survive!! assertDateOrNone('start', start) assertDateOrNone('end', end) def extract(line): items = line.rstrip().split(';') return { 'datetime': parseLocalTime(items[0]+':00', items[1]=='S'), 'ae': items[2] } if not end: end = toLocal(datetime.datetime.now()).date() with open(self.res, 'rb') as csvfile: content = csvfile.readlines() return [ [ measure for measure in ( extract(line) for line in content[1:] ) if measure['datetime'].date() == date # TODO: la mare dels ous ] for date in daterange(start, end + datetime.timedelta(days=1)) ]
def extract(self, content, start, end=None): def valid(line): items = line.split(';') n_items = 4 return (items[0].isdigit() and items[1].isdigit() and items[2].isdigit() and items[3] in ['S', 'W']) if (len(items)==n_items and '' not in items) else False def parse(line): if not valid(line): raise BaseProviderSyntaxError('Data not valid: %s' % line) items = line.split(';') measureTime = parseLocalTime(items[0], items[3]=='S') periodStart = addHours(measureTime, hours=-1) return { 'datetime': periodStart, 'ae': int(items[1]) } if not end: end = start header_offset = 1 return [measure for date in daterange(start, end + datetime.timedelta(days=1)) for measure in (parse(line) for idx,line in enumerate(content) if idx>header_offset) if measure['datetime'].date() == date ]
def get(self, start, end): assert start is None or type(start)==datetime.date, ( "start date should be a date but is {}".format(start)) assert end is None or type(end)==datetime.date, ( "start date should be a date but is {}".format(end)) if not end: end = toLocal(datetime.datetime.now()).date() return [self.extract(self.download(date), date) for date in daterange(start, end)]
def get(self, start, end=None): return [self.extract(date, self.download(date)) for date in daterange(start, end)]