Пример #1
0
    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))
            ]
Пример #2
0
    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
            ]
Пример #3
0
    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)]
Пример #4
0
 def get(self, start, end=None):
     return [self.extract(date, self.download(date)) for date in daterange(start, end)]