Skip to content

Releases: python-caldav/caldav

v3.0.1

08 Mar 17:35
v3.0.1

Choose a tag to compare

Highlights:

  • Minor bugfix to support old versions of httpx
  • New test server docker container: OX
  • Minor other fixes and workarounds
  • Started working on proper documentation for the 3.x-series

v3.0.0

03 Mar 16:00
v3.0.0

Choose a tag to compare

Version 3.0 should be fully backward-compatible with version 2.x - but there are massive code changes in version 3.0, so if you're using the Python CalDAV client library in some sharp production environment, I would recommend to wait for two months before upgrading.

Highlights

  • As always, lots of compatibility-tweaking. This release have probably been tested on more server implementations than any earlier version.
  • "Black Style" has been replaced with ruff. This causes quite some minor changes to the code.
  • Full async support -- New AsyncDAVClient and async domain objects using a Sans-I/O architecture. The same Calendar, Event, Todo, etc. objects work with both sync and async clients.
  • Experimental JMAP client -- New caldav.jmap package with JMAPClient and AsyncJMAPClient for servers implementing RFC 8620 (JMAP Core) and RFC 8984 (JMAP Calendars). Note that this is experimental, and the public API may be changed in upcoming minor-releases.
  • Overhaul of the official API -- v3.0 comes with an improved, more pythonic and more consistent API, but aims to be fully backeward compatible. Some work has been done on the documentation, but full QA and updates will have to wait for an upcoming patch release.

v3.0.0a2 -- Alpha Release

25 Feb 22:04
v3.0.0a2

Choose a tag to compare

Pre-release

AI-generated release notes — see CHANGELOG.md for the full entry.


Mostly bugfixes and server compatibility improvements since 3.0.0a1, plus a few new features.

This is an alpha release for testing purposes. Please report issues at https://github.com/python-caldav/caldav/issues

New features

  • Retry-After / rate-limit handling (RFC 6585 / RFC 9110) -- new rate_limit_handle, rate_limit_default_sleep, rate_limit_max_sleep parameters on DAVClient and AsyncDAVClient; new RateLimitError exception with retry_after / retry_after_seconds attributes (PR #628, thanks temsocial)
  • Lazy imports (PEP 562) -- import caldav is now significantly faster; heavy dependencies deferred until first use
  • search.is-not-defined.category and search.is-not-defined.dtend client-side workaround sub-features
  • Base+override feature profiles in YAML config (base: nextcloud)
  • Feature name validation in caldav.config
  • Fallback to principal URL when calendar-home-set property is missing
  • CalendarObjectResource.load() fallback to UID lookup when servers change object URLs after save

Breaking changes

  • caldav/objects.py re-export shim removed — update from caldav.objects import X to from caldav import X
  • caldav.config.read_config() now raises ValueError on YAML/JSON parse errors instead of silently returning {}
  • icalendar-searcher >= 1.0.5 now required (fixes is-not-defined filter for CATEGORIES with icalendar >= 6.x, and for DTEND on recurring all-day events)

Bug fixes

  • Fixed ssl_verify_cert not passed through in get_sync_client / get_async_client
  • Fixed _derive_from_subfeatures partial-config derivation bug
  • Fixed feature name parsing when names include a compatibility_hints. prefix
  • Fixed recursive _search_with_comptypes fallback when search.comp-type is broken
  • Fixed pending todo search on servers with broken comp-type filtering
  • Fixed URL path quoting when extracting calendars from PROPFIND results
  • Fixed create-calendar feature incorrectly derived as unsupported
  • Fixed get_object_by_uid() routing through search() for server-specific retry logic
  • Graceful handling of invalid recurrence data from some servers

Compatibility hints updated

CCS (Apple CalendarServer), Zimbra, Cyrus, Bedework, PurelyMail, GMX, ecloud, Posteo, SOGo, Baikal/Radicale, DAViCal, Synology, Xandikos

v2.2.6

01 Feb 14:46
v2.2.6

Choose a tag to compare

v2.2.6 - various minor fixes

This will hopefully be the last releases before v3.0. 2.2.4 is without niquests dependency, 2.2.6 depends on niquests

See CHANGELOG.md for details.

v2.2.3 - multiplexing/authentication workaround

06 Dec 21:16
v2.2.3

Choose a tag to compare

Users of the ckulka/baikal:nginx docker image could not get HTTP/2 multiplexing to work together with authentication. Workarounds done to turn off multiplexing on affected systems.

v2.2 - compatibility work and misc

04 Dec 21:23
v2.2.1

Choose a tag to compare

Highlights:

  • New ways to set up client connections:
    • For cloud-based services, it should suffice to pass username, password and the name of the service, no URL needed (though, just some few providers supported so far)
    • If the username is in email format, then it's generally not needed to pass a URL.
  • v2.2 comes with lots of workarounds around lack of feature support in the servers - notably the sync-token API will work also towards servers not supporting sync-tokens. In some cases lack of server functionality is detected, but as for now it may be needed to specify what server one is user through the features configuration flag.
  • v2.2 supports more complex searches. Client-side filtering will be utilized for the things that aren't supported on the server side.

v2.2.1 comes with the requests dependency, v2.2.2 comes with niquests dependency (and v2.2.0 with a non-existing riquests dependency ... duh)

Version 2.1.2

08 Nov 14:46
v2.1.2

Choose a tag to compare

Version 2.1.0 comes without niquests in the dependency file. Version 2.1.2 come with niquests in the dependency file. Also fixed up some minor mistakes in the CHANGELOG. Version 2.1.1 was yet another mistake done during the release process and should be ignored.

See description of version 2.1.0 or CHANGELOG.md for more details.

v2.1.0

08 Nov 14:19
v2.1.0

Choose a tag to compare

I'm working on a caldav compatibility checker side project. While doing so, I'm working on redefining the "compatibility matrix". This should only affect the test code. If you maintain a file tests/conf_private.py, chances are that the latest changesets will break Since "running tests towards private CalDAV servers" is not considered to be part of the public API, I deem this to be allowed without bumping the major version number. If you are affected and can't figure out of it, reach out by email, GitHub issue or GitHub discussions. (Frankly, I'm interessted if anyone except me uses this, so feel free to reach out also if you can figure out of it).

As always, the new release comes with quite some bugfixes, compatibility fixes and workarounds improving the support for various calendar servers observed in the wild.

v2.0.1 reverts from niquests back to requests

24 Jun 06:33
v2.0.1
8811410

Choose a tag to compare

Version 2.0.0

23 Jun 06:53
v2.0.0

Choose a tag to compare

Here are the most important changes in 2.0:

  • Version 2.0 drops support for old python versions and replaces requests 2.x with niquests 3.x, a fork of requests.
  • Major overhaul of the documentation
  • Support for reading configuration from a config file or environmental variables - I didn't consider that to be within the scope of the caldav library, but why not - why should every application reinvent some configuration file format, and if an end-user have several applications based on python-caldav, why should he need to configure the caldav credentials explicitly for each of them?
  • New method davclient.principals() to search for other principals on the server - and from there it's possible to do calendar searches and probe what calendars one have access to. If the server will allow it.