Closed WhyNotHugo closed 1 year ago
The issue with trying to return cal will be fixed with #1259
With that applied we get
Invalid iCalendar duration: PT-2H
Traceback (most recent call last):
File "/Users/cg/workspace/khal/khal/controllers.py", line 612, in import_ics
vevents = split_ics(ics, random_uid, conf['locale']['default_timezone'])
File "/Users/cg/workspace/khal/khal/icalendar.py", line 49, in split_ics
cal = cal_from_ics(ics)
File "/Users/cg/workspace/khal/khal/icalendar.py", line 539, in cal_from_ics
cal = icalendar.Calendar.from_ical(ics)
File "/Users/cg/mambaforge/lib/python3.9/site-packages/icalendar/cal.py", line 380, in from_ical
vals = factory(factory.from_ical(vals))
File "/Users/cg/mambaforge/lib/python3.9/site-packages/icalendar/prop.py", line 332, in from_ical
return vDuration.from_ical(ical)
File "/Users/cg/mambaforge/lib/python3.9/site-packages/icalendar/prop.py", line 477, in from_ical
raise ValueError(f'Invalid iCalendar duration: {ical}')
ValueError: Invalid iCalendar duration: PT-2H
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/cg/workspace/khal/khal/cli.py", line 464, in import_ics
controllers.import_ics(
File "/Users/cg/workspace/khal/khal/controllers.py", line 614, in import_ics
raise FatalError(error)
khal.exceptions.FatalError: Invalid iCalendar duration: PT-2H
critical: An error occurred when trying to import the file from ns.ics
For the actual issue: I believe we can't do anything about this at khal at the moment, instead we could need to teach icalendar to accept somewhat broken icalendar files.
closed as duplicate of #1264
I tried importing this file, which is generated by NS International.
Khal crashed with the following error:
The issue seems to be this line in particular:
TRIGGER;RELATED=START:PT-2H
. I recently wrote a parser for the icalendar duration type, and it also rejects this input. After looking at the spec closely, I found the issue; this should beTRIGGER;RELATED=START:-PT2H
. Note that the-
goes before the duration itself, and not before each part (otherwise we'd be able to have2H-3M
, which is super quirky.Anyway, it's clear that this input has a technically invalid alarm, but I think we can do better and khal should be able to:
More into details:
The
cal_from_ics
function tries toreturn cal
even if it's never defined it. Note that theif
might be false, at which pointcal
is never assigned.I don't think we need to parse alarms; if an alarm is invalid, we should ignore it and import it as-is. Khal doesn't deal with alarms anyway.