(#1966) overridden recurrence validation

This commit is contained in:
Georgiy
2026-01-25 18:21:22 +03:00
parent e4b337d3ff
commit 10c750f6fa

View File

@@ -632,6 +632,23 @@ def _split_overridden_vevents(
vevent_recurrence = vevent
if vevent_recurrence:
# RFC 5545 3.8.4.4: RECURRENCE-ID MUST have the same value type as DTSTART
# in the recurring component.
base_dtstart = vevent_recurrence.dtstart.value
expected_type = datetime.date
if isinstance(base_dtstart, datetime.datetime):
expected_type = datetime.datetime
for ov in vevents_overridden:
rid = ov.recurrence_id.value
if not isinstance(rid, expected_type):
raise ValueError(
f"component with UID {vevent_recurrence.uid} has "
f"incompatible RECURRENCE-ID value type: base DTSTART is "
f"{type(base_dtstart).__name__}, but override RECURRENCE-ID is "
f"{type(rid).__name__} ({ov.recurrence_id.value!r})"
)
return (
vevent_recurrence, sorted(
vevents_overridden,