Skip to content

Commit e197842

Browse files
committed
docs: more tweaking on the docs
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.
1 parent f479b49 commit e197842

2 files changed

Lines changed: 19 additions & 42 deletions

File tree

docs/source/about.rst

Lines changed: 18 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,7 @@ If serious problems are found with v2.2.6 during 2026, v2.2.7 will be
4141
released.
4242

4343
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
4645
``caldav/objects.py`` backward-compatibility shim has been removed;
4746
any code doing ``from caldav.objects import <something>`` must be
4847
updated to import directly from ``caldav``. The wildcard import has
@@ -59,7 +58,7 @@ Python compatibility notice
5958
===========================
6059

6160
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.
6362

6463
Support for Python2 was officially not supported starting from caldav
6564
version 1.0.
@@ -105,28 +104,6 @@ support, but as many people requested the vobject dependency to be
105104
replaced with icalendar, both are now supported, and the icalendar
106105
library is now consistently used internally
107106

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-
130107

131108
Notable classes and workflow
132109
============================
@@ -160,10 +137,11 @@ For convenience, the classes above are also available as
160137
Compatibility
161138
=============
162139

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.
167145

168146
Compatibility hints system
169147
--------------------------
@@ -187,6 +165,10 @@ range when ``search.unlimited-time-range`` is ``broken``).
187165
Configuring compatibility hints
188166
--------------------------------
189167

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+
190172
The ``features`` parameter of :func:`caldav.get_davclient` (or
191173
:class:`caldav.DAVClient`) selects a named server profile from
192174
``compatibility_hints.py``, or accepts a dict of feature overrides:
@@ -216,11 +198,9 @@ that the server deviates from the standard.
216198
Server-specific highlights
217199
--------------------------
218200

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-
221201
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
222202

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)
224204

225205
Some notes on CalDAV URLs
226206
=========================
@@ -236,7 +216,7 @@ CalDAV URLs can be quite confusing, some software requires the URL to the calend
236216
typical icloud calendar URL looks like
237217
``https://p12-caldav.icloud.com/12345/calendars/CALNAME``.
238218
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>`_)
240220

241221
* Google - legacy: ``https://www.google.com/calendar/dav/``,
242222
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
245225
namespace.
246226

247227
* 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.
249229

250230
* 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``.
251231

252232
* 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.
253233

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)
255235

256236
* GMX: `f"https://caldav.gmx.net/begenda/dav/{userid}@gmx.net/calendar`"`
257237

@@ -285,7 +265,7 @@ private servers into tests/caldav_test_servers.yaml, see tests/caldav_test_serve
285265
Niquests vs Requests vs HTTPX
286266
=============================
287267

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.
289269

290270
Documentation
291271
=============
@@ -294,12 +274,12 @@ To build the documentation, install sphinx and run:
294274

295275
.. code-block:: bash
296276
297-
$ python setup.py build_sphinx
277+
$ make html
298278
299279
Code of Conduct
300280
===============
301281

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.
303283

304284
License
305285
=======

docs/source/http-libraries.rst

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,6 @@ a complaint was raised from a distro package maintainer who found
2121
niquests unacceptable. Due to that the CalDAV library now has a
2222
fallback implemented; it can use requests for sync communication.
2323

24-
Niquests started with contributions to the urllib3 and requests
25-
library, but the changes were not accepted, hence the fork.
26-
2724
For async communications (and also as a replacement for requests in
2825
sync usage), **httpx** seems to have been the most popular library
2926
candidate. However, niquests supports async communication. It was
@@ -54,7 +51,7 @@ Recommendations
5451
* If you're using the CalDAV library in an async project that is
5552
already heavily dependent on httpx and don't want to drag in extra
5653
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
5855

5956
Multiplexing
6057
------------

0 commit comments

Comments
 (0)