luplo.core.timeparse¶
Lightweight time-range parser shared by CLI and MCP idea search.
Accepts:
- "" (empty) → None
- ISO datetime: 2026-04-01 or 2026-04-01T12:00:00+00:00
- Relative: Nd / Nw (last N days / weeks)
- Anchors: this_week / this_month / this_quarter —
since-only. Anchors return the start of the named period, which is the desired semantic for
--since(“everything from then to now”) but garbage for--until(“everything before this period started”). Whenmode='until'we reject anchors with a clear error.
Naive datetimes get UTC. Garbage input raises ValueError carrying the
list of accepted dialects so callers can surface a friendly message.
Functions¶
|
Parse the time-range dialect; return |
Module Contents¶
- luplo.core.timeparse.parse_since(value: str | None, *, mode: Literal['since', 'until'] = 'since') datetime.datetime | None¶
Parse the time-range dialect; return
Nonefor empty input.mode='since'(default) accepts every dialect including anchors, which return the start of the named period.mode='until'rejects anchors because “before the start of this month” almost always filters out the entire current period — likely not what the caller meant.- Raises:
ValueError – when the input is non-empty but not a recognised form, or when
mode='until'and an anchor is supplied. The message names the supported dialects so callers can forward it without further wrapping.