diff --git a/timetracking.py b/timetracking.py index f0a40f2bd9130aae106ffd1acc9cb8e8cf543a97..34fc41a107fd784eeb72b6e6ec4fdc3f980a0c3f 100644 --- a/timetracking.py +++ b/timetracking.py @@ -262,11 +262,11 @@ class Day: class Timesheet: def __init__(self, month, data): - self.month = month - self.start = self.header - self.end = object() - self.days = defaultdict(Day) + self._month = month + self._start = self.header + self._end = object() self._home_office_start = None + self.days = defaultdict(Day) self.parse(data) def __iter__(self): @@ -280,7 +280,7 @@ class Timesheet: def footer(self): line = next(self.tokens) if line == '*** Ende Monatsjournal ***': - return self.end + return self._end raise ValueError(line) def tableheader(self): @@ -291,7 +291,7 @@ class Timesheet: if re.match(r'\s+(anteilige\s+)?Wochensumme', line): continue if re.match(r'\s+Periodensumme', line): - return self.end + return self._end if re.match(r'-+$', line): continue self.tokens.rewind() @@ -335,7 +335,7 @@ class Timesheet: r'(?P<notes>[^|]+)\|' r'(?:\s+(?P<expected>\d+\.\d+)\s+(?P<worked>\d+\.\d+)\s+(?P<difference>[-+]\d+\.\d+)\s+(?P<balance>[-+]\d+\.\d+))?$', line): # entry - date = self.month.replace(day=int(m.group('day'))) + date = self._month.replace(day=int(m.group('day'))) tin = datetime.strptime(m.group('tin'), '%H:%M') if m.group('tin') else None tout = datetime.strptime(m.group('tout'), '%H:%M') if m.group('tout') else None code = Code(m.group('code') or '') @@ -371,8 +371,8 @@ class Timesheet: def parse(self, s): self.tokens = Tokenizer(s) - f = self.start - while f is not self.end: + f = self._start + while f is not self._end: f = f()