docs: module docstring now documents the implemented month-end clamp policy
This commit is contained in:
@@ -39,11 +39,16 @@ reach storage):
|
|||||||
- ``start_date`` is a strict ISO date; ``end_date`` is optional and,
|
- ``start_date`` is a strict ISO date; ``end_date`` is optional and,
|
||||||
when present, on or after ``start_date``.
|
when present, on or after ``start_date``.
|
||||||
|
|
||||||
Month-end policy (documented for Feature 04): a MONTHLY_DAY rule for
|
Month-end policy (implemented in :func:`_occurs_monthly_day` and
|
||||||
the 31st does NOT fire in a 30-day month, and a YEARLY rule for
|
documented for Feature 04): a MONTHLY_DAY rule for a day that does not
|
||||||
February 29th does NOT fire in a non-leap year — the engine skips
|
exist in a given month — the 31st in April, the 30th or 29th in
|
||||||
instead of clamping to month end, because clamping silently moves
|
February, February 29th in a non-leap year — fires on the LAST day of
|
||||||
"the 31st" to "the 30th" and double-fires tasks.
|
that month instead of being skipped. A monthly chore still happens
|
||||||
|
every month, pinned to the month's end when its nominal date is
|
||||||
|
absent; exactly one day per month matches the rule (nominal day when
|
||||||
|
it exists, month end when it does not). The interval anchors on
|
||||||
|
nominal months elapsed from start_date's month, so clamping never
|
||||||
|
shifts the cadence.
|
||||||
"""
|
"""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user