From 6b74de5493013b4d30bc72c2adeb5b459ec3154e Mon Sep 17 00:00:00 2001 From: Dima Gerasimov Date: Wed, 6 Feb 2019 23:09:19 +0000 Subject: [PATCH] extract todos, add more stuff --- hypothesis/__init__.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/hypothesis/__init__.py b/hypothesis/__init__.py index 2aa43e6..e5d6ab4 100644 --- a/hypothesis/__init__.py +++ b/hypothesis/__init__.py @@ -1,6 +1,6 @@ from functools import lru_cache from kython import listdir_abs, json_load, JSONType -from typing import Dict, List, NamedTuple +from typing import Dict, List, NamedTuple, Optional from pytz import UTC from datetime import datetime import os @@ -13,6 +13,9 @@ class Entry(NamedTuple): content: str link: str eid: str + annotation: Optional[str] + context: str + tags: List[str] # TODO guarantee order? def _iter(): @@ -35,14 +38,29 @@ def _iter(): eid = i['id'] link = i['uri'] dt = datetime.strptime(dts[:-3] + dts[-2:], '%Y-%m-%dT%H:%M:%S.%f%z') + txt = i['text'] + annotation = None if len(txt.strip()) == 0 else txt + context = i['links']['incontext'] yield Entry( dt, title, content, link, eid, + annotation=annotation, + context=context, + tags=i['tags'], ) def get_entries(): return list(_iter()) + +def get_todos(): + def is_todo(e: Entry) -> bool: + if any(t.lower() == 'todo' for t in e.tags): + return True + if e.annotation is None: + return False + return e.annotation.lstrip().lower().startswith('todo') + return list(filter(is_todo, get_entries()))