From ed90ed02343ffb56af26b6b7242c91d4d50709a8 Mon Sep 17 00:00:00 2001 From: Dima Gerasimov Date: Tue, 10 Dec 2019 19:28:40 +0000 Subject: [PATCH] add holiday parsing --- my/calendar/__init__.py | 0 my/calendar/holidays.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 my/calendar/__init__.py create mode 100644 my/calendar/holidays.py diff --git a/my/calendar/__init__.py b/my/calendar/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/my/calendar/holidays.py b/my/calendar/holidays.py new file mode 100644 index 0000000..e9560b2 --- /dev/null +++ b/my/calendar/holidays.py @@ -0,0 +1,30 @@ +import re +from typing import Tuple, Iterator +from datetime import date, datetime + + +from my_configuration.holidays_data import HOLIDAYS_DATA + + +def iter_data() -> Iterator[Tuple[date, int]]: + emitted = 0 + for x in HOLIDAYS_DATA.splitlines(): + m = re.search(r'(\d\d/\d\d/\d\d\d\d)(.*)-(\d+.\d+) days \d+.\d+ days', x) + if m is None: + continue + (ds, cmnt, dayss) = m.groups() + if 'carry over' in cmnt: + continue + + d = datetime.strptime(ds, '%d/%m/%Y').date() + dd, u = dayss.split('.') + assert u == '00' # TODO meh + + yield d, int(dd) + emitted += 1 + assert emitted > 5 + + +if __name__ == '__main__': + for d in iter_data(): + print(d)