core: update cachew annotations
orgmode: expose method to construct cacheable note
This commit is contained in:
parent
bdfac96352
commit
2a2478bfa9
3 changed files with 33 additions and 12 deletions
|
@ -197,7 +197,16 @@ if TYPE_CHECKING:
|
|||
# ok, that's actually a super nice 'pattern'
|
||||
F = TypeVar('F')
|
||||
class McachewType(Protocol):
|
||||
def __call__(self, cache_path: Any=None, *, hashf: Any=None, chunk_by: int=0, logger: Any=None) -> Callable[[F], F]:
|
||||
def __call__(
|
||||
self,
|
||||
cache_path: Any=None,
|
||||
*,
|
||||
hashf: Any=None, # todo deprecate
|
||||
depends_on: Any=None,
|
||||
force_file: bool=False,
|
||||
chunk_by: int=0,
|
||||
logger: Any=None,
|
||||
) -> Callable[[F], F]:
|
||||
...
|
||||
|
||||
mcachew: McachewType
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
'''
|
||||
Programmatic access and queries to org-mode files on the filesystem
|
||||
'''
|
||||
from datetime import datetime
|
||||
from datetime import datetime, date
|
||||
from pathlib import Path
|
||||
from typing import List, Sequence, Iterable, NamedTuple, Optional
|
||||
|
||||
|
@ -28,6 +28,26 @@ def _sanitize(p: Path) -> str:
|
|||
return re.sub(r'\W', '_', str(p))
|
||||
|
||||
|
||||
def to_note(x: Org) -> OrgNote:
|
||||
# ugh. hack to merely make it cacheable
|
||||
created: Optional[datetime]
|
||||
try:
|
||||
# TODO(porg) not sure if created should ever throw... maybe warning/log?
|
||||
c = x.created
|
||||
if c is not None and isinstance(c, date):
|
||||
# meh. not sure if should return date...
|
||||
created = None
|
||||
else:
|
||||
created = c
|
||||
except Exception as e:
|
||||
created = None
|
||||
return OrgNote(
|
||||
created=created,
|
||||
heading=x.heading, # todo include the rest?
|
||||
tags=list(x.tags),
|
||||
)
|
||||
|
||||
|
||||
# todo move to porg?
|
||||
class Query:
|
||||
def __init__(self, files: Sequence[Path]) -> None:
|
||||
|
@ -41,16 +61,7 @@ class Query:
|
|||
def _iterate(self, f: Path) -> Iterable[OrgNote]:
|
||||
o = Org.from_file(f)
|
||||
for x in o.iterate():
|
||||
try:
|
||||
# TODO(porg) not sure if created should ever throw... maybe warning/log?
|
||||
created = x.created
|
||||
except Exception as e:
|
||||
created = None
|
||||
yield OrgNote(
|
||||
created=created,
|
||||
heading=x.heading, # todo include the rest?
|
||||
tags=list(x.tags),
|
||||
)
|
||||
yield to_note(x)
|
||||
|
||||
def all(self) -> Iterable[OrgNote]:
|
||||
for f in self.files:
|
||||
|
|
|
@ -40,6 +40,7 @@ class Entry(NamedTuple):
|
|||
def timestamp(self) -> datetime:
|
||||
ts = self.row['timestamp']
|
||||
# already with timezone apparently
|
||||
# TODO not sure if should stil localize though? it only kept tz offset, not real tz
|
||||
return fromisoformat(ts)
|
||||
# TODO also has gps info!
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue