Version 0.8.0 - sync tokens, api improvements and misc
Release notes v0.8
The tagged version has been tested towards xandikos, radicale, google, icloud plus an old version of DAViCal. It is expected to work for other
servers as well.
Support for WebDAV sync-tokens
The most significant enhancement for v0.8 is support for syncing collections using a sync-token. Some (untested) meta-code in the examples folder on how to use it. It's also thoroughly tested in the functional tests, but the test code is not optimized for readability.
Work on support for RFC6635, scheduling/RVSP (partially done)
Convenience-methods for finding CalDAV inbox and outbox, for accepting calendar invites, for adding invitations to an icalendar object, doing freebusy-requests towards email addresses and misc. Should be ready for use, but it's relatively untested.
Improved support for iCloud, Google
Apple seems to have more or less abandoned their position in the CalDAV ecosystem. While they've never said officially that iCloud supports CalDAV, they do support some basic CalDAV operations. There hasn't been done much dedicated work on supporting iCloud in this release, but a lot of testing has been done, some few tweaks, and some documentation.
Google has two APIs, one legacy API and one new API. The new API is not supported yet. As with iCloud, while very little dedicated work has been done to support Google, I've done a lot of testing, some few tweaks, and some documentation. Unlike Apple, Google is very transparent on their (lack of proper) CalDAV support.
Calendar API improvements
- Method for doing a multiget for fetching multiple events in one http request has been added, but more work is needed (multiget should be utilized by the library when applicable without the end-user having to be explicit on it, it's missing test code).
- Possible to look up a calendar by name
- Possible to access a calendar by url from the DAVClient object (instead of creating a Calendar object and pass the client)
- New method calendar.get_supported_components()
Improvement of the documentation, examples and inline docstrings and comments
I'm not much good at documentation, for one thing English is not my first language. Anyway, I've tried my best to improve on it and I'm prioritizing good example code. I believe a good and readable code example is worth more than a thousand pages of documentation. I do appreciate all help I can get on this field (even when it's just pointing out typos and grammar errors).
Bugfixes
0.7.1 was pretty solid. There are some few new bugfixes in 0.8, nothing significant.
Test framework
Probably the bulk of the work for this release has been on the test suite; work that won't be visible for the end user, but which hopefully will reduce the number of regression problems. It should also be a little bit easier to run the test suite towards private test servers now.
Refactoring
"Rewritten code" is hardly a selling point, it typically means more bugs and sometimes even less features - but I think the effort done here will pay back relatively soon. I'd say it's a bit important that the maintainer of the library understands the code he's trying to maintain :-)
Credits
Thanks to Nylas, Mincheol Song (@mtorange), @olf42, @tfinke, Teymour Aldridge (@teymour-aldridge), @Vankurt, Ian Bottomley (@kyloe), Michael Wieland (@Programie), Herve Commowick (@vr), Jelmer Vernooij (@jelmer), Stephan (@kiffie), @pleasedonotwatch, @frank-pet.