skillfed

caldav

CalDAV (RFC4791) client library

caldav v3.2.1 911.4K downloads/30d#4,746 on PyPI411
License unclear GPL-3.0-or-later OR Apache-2.0 Active released

What it is and what it does

Caldav is a Python client for the CalDAV protocol (RFC4791), allowing you to interact with calendar servers to create, modify, delete, and search calendar events. It wraps the complexity of CalDAV's WebDAV-based protocol and iCalendar format handling, exposing a straightforward object-oriented API. The library depends on icalendar for iCalendar parsing, lxml for XML handling, niquests for HTTP requests, and several supporting libraries for date handling and recurring event expansion.

The package offers both synchronous and asynchronous interfaces—the main caldav module for blocking I/O and caldav.aio for async/await patterns. It's actively maintained, supports modern Python versions (3.10–3.14), and has been in development since 2010. The dual GPL-3.0-or-later / Apache-2.0 licensing is noted as unclear in the metadata, so license compatibility should be verified before use in proprietary projects.

Use it for:

  • Sync calendar events between a Python application and a CalDAV server (e.g., Nextcloud, Radicale).
  • Build a calendar management tool that creates, updates, or deletes events on a remote CalDAV-compatible server.
  • Search and retrieve events within a date range from a CalDAV server for reporting or integration workflows.
  • Implement async calendar operations in a high-concurrency application using caldav.aio.
  • Expand and query recurring events using the recurring-ical-events integration.

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

A CalDAV (RFC4791) client library for Python that lets you create, modify, and search calendar events on CalDAV servers, with both synchronous and asynchronous APIs.

Yes, if you need CalDAV client functionality. The library is actively maintained, has low install friction, supports current Python versions, and carries no known vulnerabilities. The main caveat is the unclear dual-license status—verify that GPL-3.0-or-later or Apache-2.0 aligns with your project's licensing before committing to it.

Install

caldav on PyPI

pip

pip install caldav

uv

uv add caldav

poetry

poetry add caldav

Installing caldav

Before you install

Low install friction; pure Python wheel with nine runtime dependencies including niquests, icalendar, and lxml. Actively maintained with a release 78 days ago and recent commits; supports Python 3.10 through 3.14.

License in practice

Dual-licensed under GPL-3.0-or-later or Apache-2.0, but license_treatment is marked unclear in the fact sheet. Verify which license applies to your use case before integrating into proprietary code.

Quickstart

from caldav import get_davclient

with get_davclient() as client:
    principal = client.principal()
    calendars = principal.get_calendars()
    for cal in calendars:
        print(f"Calendar: {cal.name}")

Requires a CalDAV server endpoint and valid credentials; get_davclient() will need connection parameters (typically via environment or explicit arguments).

Verify before relying

  • Whether the dual-license uncertainty affects commercial use or if one license is preferred by maintainers
  • CalDAV server compatibility matrix and known limitations with specific server implementations
  • Performance characteristics when handling large numbers of events or recurring event expansions

Package facts

License GPL-3.0-or-later OR Apache-2.0 (unclear)
Python support supports the current Python release (>=3.10)
Install friction low — pure-Python wheel
Runtime dependencies 9 — dnspython, icalendar-searcher, icalendar, lxml, niquests, python-dateutil, pyyaml, recurring-ical-events, typing-extensions
Maintenance actively maintained — 78 days since the last release
Last repo commit
First released
Downloads 911,396/month — #4,746 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: caldav-3.2.1-py3-none-any.whl

Development Status :: 4 - BetaIntended Audience :: DevelopersOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Topic :: Office/Business :: SchedulingTopic :: Software Development :: Libraries :: Python Modules

Tags

caldav client librarycalendar event management pythonrfc4791 caldavsync calendar eventscaldav async supportcalendar server integrationicalendar python client
calendar-synccaldav-clientasync-support

More Python Modules packages