Skip to content

cron

etl_craft.core.cron

Five-field cron ticks, with one firing through timezone gaps and overlaps.

timezone

timezone(name: str) -> ZoneInfo

Resolve an IANA name, refusing an invalid schedule or project timezone.

parse cached

parse(expr: str) -> tuple[tuple[tuple[int, ...], ...], bool]

Validate fields and return their sorted values and the day-field OR rule.

next_after

next_after(expr: str, instant: datetime, tz: str | ZoneInfo) -> datetime

Return the first tick strictly after an aware instant, normalized to UTC.

Restricted day-of-month and day-of-week fields match either day. A missing wall minute fires at the next valid minute; an ambiguous wall minute uses its first occurrence.