You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
AI Prompts:
claude-sonnet-4-6: do you see anything that is obviously outdated?
claude-sonnet-4-6: Please convert the markdown link to RST
claude-sonnet-4-6: Fix typos.
Copy file name to clipboardExpand all lines: docs/source/about.rst
+18-38Lines changed: 18 additions & 38 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,8 +41,7 @@ If serious problems are found with v2.2.6 during 2026, v2.2.7 will be
41
41
released.
42
42
43
43
The 3.x version series (released 2026-03) is almost
44
-
backwards-compatible with version 2.x. Python 3.10+ is required
45
-
(Python 3.8 and 3.9 are no longer supported). The
44
+
backwards-compatible with version 2.x. The
46
45
``caldav/objects.py`` backward-compatibility shim has been removed;
47
46
any code doing ``from caldav.objects import <something>`` must be
48
47
updated to import directly from ``caldav``. The wildcard import has
@@ -59,7 +58,7 @@ Python compatibility notice
59
58
===========================
60
59
61
60
Most of the code is regularly tested towards different versions of
62
-
Python, the oldest being Python 3.10 (as of v3.0).
61
+
Python. As of 3.x.x, 3.10 to 3.14 is tested. The 3.x-series does not support Python 3.8 (due to type hints), Python 3.9 is just not tested.
63
62
64
63
Support for Python2 was officially not supported starting from caldav
65
64
version 1.0.
@@ -105,28 +104,6 @@ support, but as many people requested the vobject dependency to be
105
104
replaced with icalendar, both are now supported, and the icalendar
106
105
library is now consistently used internally
107
106
108
-
Misbehaving server implementations
109
-
----------------------------------
110
-
111
-
Some server implementations may have some "caldav"-support that either
112
-
doesn't implement all of :rfc:`4791`, breaks the standard a bit, or has
113
-
extra features. As long as it doesn't add too much complexity to the
114
-
code, hacks and workarounds for "badly behaving caldav servers" are
115
-
considered to be within the scope. Ideally, users of the caldav
116
-
library should be able to download all the data from one calendar
117
-
server or cloud provider, upload it to another server type or cloud
118
-
provider, and continue using the library without noticing any
119
-
differences. To get there, it may be needed to add tweaks in the
120
-
library covering the things the servers are doing wrong.
121
-
122
-
There exists an extension to the standard covering calendar color and
123
-
calendar order, allegedly with an xml namespace
124
-
``http://apple.com/ns/ical/``. That URL gives (301 https and
125
-
then) 404. I've so far found no documentation at all
126
-
on this extension - however, it seems to be supported by several
127
-
caldav libraries, clients and servers. As of 0.7, calendar colors and
128
-
order is available for "power users".
129
-
130
107
131
108
Notable classes and workflow
132
109
============================
@@ -160,10 +137,11 @@ For convenience, the classes above are also available as
160
137
Compatibility
161
138
=============
162
139
163
-
CalDAV server implementations vary widely in which optional RFC features they
164
-
support, and how gracefully they handle things they do not support. The caldav
165
-
library contains a compatibility layer that works around known issues
166
-
automatically when the server is identified.
140
+
The calendaring server supporting the CalDAV standards fully and perfectly does not exist. CalDAV server implementations vary widely in which optional RFC features they
141
+
support, and how gracefully they handle things they do not support, as well as how the standard is interpreted, things not working due to bugs, etc.
142
+
143
+
The caldav library contains a compatibility layer that works around
144
+
some known issues automatically when the server is identified.
167
145
168
146
Compatibility hints system
169
147
--------------------------
@@ -187,6 +165,10 @@ range when ``search.unlimited-time-range`` is ``broken``).
187
165
Configuring compatibility hints
188
166
--------------------------------
189
167
168
+
A separate tool https://github.com/python-caldav/caldav-server-tester has been split out to do compatibility testing towards the servers. The results are stored in ``caldav/compatibility_hints.py``. The server supporting everything in the CalDAV RFCs perfectly does not exist.
169
+
170
+
Compatibility testing has traditionally only been done by the maintainer - one of the purposes of the caldav-server-tester is to allow anyone to run the checks towards the software they use, without having to share any account information with the CalDAV maintainer. The tool may spit out code blocks to be included in the compatibility hints file, as well as yaml snippets to be included in configuration files.
171
+
190
172
The ``features`` parameter of :func:`caldav.get_davclient` (or
191
173
:class:`caldav.DAVClient`) selects a named server profile from
192
174
``compatibility_hints.py``, or accepts a dict of feature overrides:
@@ -216,11 +198,9 @@ that the server deviates from the standard.
216
198
Server-specific highlights
217
199
--------------------------
218
200
219
-
A separate tool https://github.com/python-caldav/caldav-server-tester has been split out to do compatibility testing towards the servers. The results are stored in ``caldav/compatibility_hints.py``. The server supporting everything in the CalDAV RFCs perfectly does not exist.
220
-
221
201
Over the past years, the focus has been on compatibility-testing towards open source calendar servers. In particular Google and iCloud haven't been tested for a long time. Google officially supports CalDAV, see https://developers.google.com/workspace/calendar/caldav/v2/guide - iCloud supports CalDAV partly, but there exists no official information about it. iCloud limitations has been tracked in https://github.com/python-caldav/caldav/issues/3
222
202
223
-
Compatibility testing has traditionally only been done by the maintainer - one of the purposes of the caldav-server-tester is to allow anyone to run the checks towards the software they use, without having to share any account information with the CalDAV maintainer.
203
+
(This section contained lots of detailed information on how the different servers handle it, but it has been removed as much of it was outdated. All the information is available in ``compatibility_hints.py``, though it should probably be redone a bit for better readability)
224
204
225
205
Some notes on CalDAV URLs
226
206
=========================
@@ -236,7 +216,7 @@ CalDAV URLs can be quite confusing, some software requires the URL to the calend
If you encounter troubles with iCloud, try toggling
239
-
between IPv4 and IPv6 (see [issue 393](https://github.com/python-caldav/caldav/issues/393))
219
+
between IPv4 and IPv6 (see `issue 393<https://github.com/python-caldav/caldav/issues/393>`_)
240
220
241
221
* Google - legacy: ``https://www.google.com/calendar/dav/``,
242
222
The calendar URL for the primary personal calendar seems to be of the
@@ -245,13 +225,13 @@ CalDAV URLs can be quite confusing, some software requires the URL to the calend
245
225
namespace.
246
226
247
227
* Google - new api: see https://developers.google.com/calendar/caldav/v2/guide.
248
-
There is some information in https://github.com/python-caldav/caldav/issues/119 on how to connect to Google, and there are two contributed :ref:`examples:examples` on how to obtain a bearer token and use it in the caldav lbirary. There is also a `blog post <https://blog.lasall.dev/post/tell-me-why-google-and-caldav/>`_ describing the process.
228
+
There is some information in https://github.com/python-caldav/caldav/issues/119 on how to connect to Google, and there are two contributed :ref:`examples:examples` on how to obtain a bearer token and use it in the caldav library. There is also a `blog post <https://blog.lasall.dev/post/tell-me-why-google-and-caldav/>`_ describing the process.
249
229
250
230
* DAViCal: The caldav URL typically seems to be on the format ``https://your.server.example.com/caldav.php/``, though it depends on how the web server is configured. The primary calendars have URLs like ``https://your.server.example.com/caldav.php/donald/calendar`` and other calendars have names like ``https://your.server.example.com/caldav.php/donald/golfing_calendar``.
251
231
252
232
* Zimbra: The caldav URL is typically on the format ``https://mail.example.com/dav/``, calendar URLs can be on the format ``https://mail.example.com/dav/donald@example.com/My%20Golfing%20Calendar``. Display name always matches the last part of the URL.
253
233
254
-
* Fastmail: ``https://caldav.fastmail.com/dav/`` - note that the trailing dash is significant (ref https://github.com/home-assistant/core/issues/66599)
234
+
* Fastmail: ``https://caldav.fastmail.com/dav/`` - note that the trailing slash is significant (ref https://github.com/home-assistant/core/issues/66599)
@@ -285,7 +265,7 @@ private servers into tests/caldav_test_servers.yaml, see tests/caldav_test_serve
285
265
Niquests vs Requests vs HTTPX
286
266
=============================
287
267
288
-
By default, CalDAV depends on the niquests library. Some people are not happy with that, there exists fallbacks to utilize httpx and requests. See the :doc:`http-libraries` document.
268
+
By default, CalDAV depends on the niquests library. Some people are not happy with that, so there exists fallbacks to utilize httpx and requests. See the :doc:`http-libraries` document.
289
269
290
270
Documentation
291
271
=============
@@ -294,12 +274,12 @@ To build the documentation, install sphinx and run:
294
274
295
275
.. code-block:: bash
296
276
297
-
$ python setup.py build_sphinx
277
+
$ make html
298
278
299
279
Code of Conduct
300
280
===============
301
281
302
-
While I hope we never will need to refer to it, the `Contributor Covenant <https://www.contributor-covenant.org/version/2/1/code_of_conduct/>`_ applies to this project, see also `CODE_OF_CONDUCT <https://github.com/python-caldav/caldav/blob/master/CODE_OF_CONDUCT>`_. Avoid toxic negativity in general, but Tobias Brox can probably handle some blunt criticism if it may help getting the project on a better track.
282
+
While I hope we never will need to refer to it, the `Contributor Covenant <https://www.contributor-covenant.org/version/2/1/code_of_conduct/>`_ applies to this project, see also `CODE_OF_CONDUCT <https://github.com/python-caldav/caldav/blob/master/CODE_OF_CONDUCT>`_. Avoid toxic negativity in general, but the maintainer can handle some blunt criticism as long as it may help getting the project on a better track.
Copy file name to clipboardExpand all lines: docs/source/http-libraries.rst
+1-4Lines changed: 1 addition & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,9 +21,6 @@ a complaint was raised from a distro package maintainer who found
21
21
niquests unacceptable. Due to that the CalDAV library now has a
22
22
fallback implemented; it can use requests for sync communication.
23
23
24
-
Niquests started with contributions to the urllib3 and requests
25
-
library, but the changes were not accepted, hence the fork.
26
-
27
24
For async communications (and also as a replacement for requests in
28
25
sync usage), **httpx** seems to have been the most popular library
29
26
candidate. However, niquests supports async communication. It was
@@ -54,7 +51,7 @@ Recommendations
54
51
* If you're using the CalDAV library in an async project that is
55
52
already heavily dependent on httpx and don't want to drag in extra
56
53
dependencies, use httpx - but do your own due diligence.
57
-
* If you have strong personal opinions against niquests, then don't use it - but it would be nice if you could share your reasons, i.e. in issue https://github.com/python-caldav/caldav/issues/611
54
+
* If you have strong personal opinions against niquests, then don't use it. Please share your thoughts at https://github.com/python-caldav/caldav/issues/611
0 commit comments