Skip to content

Releases: python-caldav/caldav

Version 0.8.0 - sync tokens, api improvements and misc

11 Mar 11:47
Compare
Choose a tag to compare

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.

Compatibility bugfix

13 Jun 18:14
Compare
Choose a tag to compare

Version 0.7 introduced a bug for caldav servers returning absolute rather than relative URLs. Credits to @mzyy94 for discovery, analysis and a fix.

Version 0.7.0 - icalendar support and quite some fixups

08 Jun 08:43
Compare
Choose a tag to compare

Version 0.7.0.

Updates since 0.6.2:

As for real code changes - actually, not that much. The library is relatively mature now - the remaining changes and issues are mostly either sufficiently significant that they should be procrastinated for a 1.0-release, or I consider them too insignificant to bother with it (except #87 which may come in a 0.8-release). Here is the list of changes:

  • Some tweaks to support newer versions of Zimbra and other caldav server implementations with slightly twisted support for the RFC.
  • API change: add_event, add_todo and add_journal methods are now deprecated and aliases of save_. New attributes no_create and no_overwrite if one wants to be sure the save_-methods does the right thing.
  • Calendars can now be created without a display name
  • Quite some minor bugfixes
  • Some code refactoring, removing some duplicated code
  • library will gracefully create an UID if fed with caldav data missing the UID field
  • Earlier, for calendar servers not supporting the digest auth format, every request towards the server would be duplicated (try digest auth, retry basic auth). I'm sure there is a more proper fix for it, but at least now it should only try digest auth once, and then save the authentication information.
  • it's now possible to use the caldav library together with icalendar instances (but as of 0.7.0, vobject is still the officially supported icalendar library, one has to use event_object.icalendar_instance rather than event_object.instance, the icalendar library is imported when needed and not included in the requirements).
  • the code for calendar searches has been reorganized making it possible for "power users" to do custom calendar searches.

Changes outside the library code itself:

  • Makefile
  • A python file has been stored in the examples folder, with quite some basic usage examples
  • The documentation has been refreshed, manually copied some of the lines from that example file into the documentation. Documentation has been uploaded to ReadTheDocs (but something is buggy there, as the autogenerated parts of the documentation isn't available there)
  • Quite some work has been done on the test code - doing my best to uncover weird RFC incompatibilities from the servers tested as well as increasing code coverage.
  • Quite some cleanup work in the github issues

ref #97