From 2ba0ad6f2b6e5a6572e1dc159f75b53da5c4971c Mon Sep 17 00:00:00 2001 From: Dima Gerasimov Date: Sat, 13 Apr 2019 14:14:33 +0100 Subject: [PATCH] handle missing epochs defensively --- emfit/__init__.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/emfit/__init__.py b/emfit/__init__.py index 09a724e..01aa482 100755 --- a/emfit/__init__.py +++ b/emfit/__init__.py @@ -9,7 +9,7 @@ from typing import List, Dict, Iterator, NamedTuple import json import pytz -from kython import cproperty +from kython import cproperty, timed, group_by_key def get_logger(): @@ -252,9 +252,8 @@ recovery: {self.recovery:3.0f} return covered / expected * 100 -import functools -@functools.lru_cache(1000) # TODO hmm. should I configure it dynamically??? +@lru_cache(1000) # TODO hmm. should I configure it dynamically??? def get_emfit(sid: str, f: Path) -> Emfit: return Emfit(sid=sid, jj=json.loads(f.read_text())) @@ -272,8 +271,6 @@ def get_datas() -> List[Emfit]: return list(sorted(iter_datas(), key=lambda e: e.start)) # TODO move away old entries if there is a diff?? -from kython import timed -from kython import group_by_key @timed def by_night() -> Dict[date, Emfit]: @@ -285,6 +282,11 @@ def by_night() -> Dict[date, Emfit]: logger.warning("multiple sleeps per night, not handled yet: %s", sleeps) continue [s] = sleeps + + if s.epochs is None: + logger.error('%s (on %s) got None in epochs! ignoring', s.sid, dd) + continue + res[s.date] = s return res @@ -321,4 +323,6 @@ def main(): print(k, v.start, v.end) if __name__ == '__main__': + from kython.klogging import setup_logzero + setup_logzero(get_logger()) main()