Repository navigation
Roadmap 2.2: the files backend - #26
Merged
Merged
Conversation
Backend.open(path) reads and writes a vdir, as vdirsyncer, khal and todoman lay it out, and a single .ics file, picking the layout from the path. Writes go through a temporary file, keeping the mode and any symlink; a vdir create never overwrites another object or stores a UID twice, and a single file is locked (filelock) around each write. File I/O runs in worker threads in the async mode. It passes the conformance suite in all three layouts and both modes. Prompt: [Please make the files backend, based on the earlier design decisions] Assisted-By: Claude Opus 5.5 (1M context) Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>
The author decided that the occurrence merge and recurring-task completion go to edit-icalendar, superseding recurring-ical-events issue 292. The capability note backends give for those features now says so, and API_DESIGN and the ROADMAP no longer say CalDAV may call caldav's code for them. That note, and the one for time-log in a collection without events, are public constants in capabilities, so out-of-tree backends can declare the same. Prompt: As for the recurring-ical-events #292, I think the decision was to do it in a separate edit-icalendar package. It's OK to throw NotImplementedError until that's done. [#292: niccokunzmann/python-recurring-ical-events#292] Assisted-By: Claude Opus 5.5 (1M context) Reviewed-by: Tobias Brox <tobias@redpill-linpro.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Disclaimer: Code and the text below the line are AI-generated, by Claude Opus 5.5.
Implements roadmap item 2.2, a backend for local iCalendar files.
Layouts.
Backend.open(path)picks the layout from the path:.icsfile;path =names it.khal, todoman and vdirsyncer can share the same vdir. A path that cannot be a calendar is a
ConfigurationError.Writes.
filelock, a new dependency) around each write.Async. In the async mode, file I/O runs in worker threads, through a new
ato_threadhelper whose sync twin is a plain call.Capabilities.
.calendaring-componentsfile, since the vdir spec has no place for it.time-logis unsupported in a collection holding no events.Tests. The conformance suite passes in all three layouts and both modes.
A separate commit records the decision that occurrence edits and recurring-task completion go to edit-icalendar, superseding Proposal: helpers for completing one occurrence of a recurring VTODO (and editing one occurrence) niccokunzmann/python-recurring-ical-events#292. Until edit-icalendar has them, every backend declares them
UNSUPPORTED. The capability notes for them, and fortime-logwithout events, are now public constants incalendaring.capabilities.Left for later:
.icsfiles.os.replacewhile a reader holds the file open is untested, since CI runs on Linux.🤖 Generated with Claude Code