Skip to content

Commit 8fac798

Browse files
tobixenclaude
andcommitted
chore: remove dead old_flags entries and superseded incompatibility_description keys
- Remove no_supported_components_support from robur/purelymail (superseded by get-supported-components: unsupported new-style feature) - Remove no_delete_event from zimbra (event_by_url was fixed; flag unused in tests) - Remove empty old_flags: [] from cyrus and posteo - Remove from incompatibility_description: - no_default_calendar, no_freebusy_rfc6638 (superseded/dead) - text_search_is_case_insensitive (superseded by search.text.case-sensitive) - date_search_ignores_duration, vtodo_no_dtstart_infinite_duration (dead, uncovered) - vtodo_no_dtstart_search_weirdness, vtodo_no_duration_search_weirdness, vtodo_with_due_weirdness (dead "Zimbra is weird" entries) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent c31db96 commit 8fac798

File tree

5 files changed

+12
-48
lines changed

5 files changed

+12
-48
lines changed

AI-POLICY.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,11 @@ rewritten.
7070
adding value to the project. You should at least do a quick QA on
7171
the AI-answer and acknowledge that it was generated by the AI.
7272

73+
* Most AI policies warns about potential copyright infringements. I
74+
can hardly think it's any risk wrg of contributions to the Python
75+
CalDAV library. In particular, if your changeset consists of lots
76+
of minor changes to existing code, then it's nothing to worry about.
77+
7378
* The Contributors Guidelines aren't strongly enforced on this project
7479
as of 2026-02, and I can hardly see cases where the AI would break
7580
the Code of Conduct, but at the end of the day, it's **YOUR**
@@ -79,7 +84,7 @@ rewritten.
7984

8085
The maintainer started playing with Claude Code in the end of 2025 - and [blogged about it](https://www.redpill-linpro.com/techblog/2026/03/20/from-luddite-to-vibe-coder.html)
8186

82-
Releases 2.2.6 - 3.2.0 has been heavily assisted by Claude - which is pretty obvious when looking into the commit messages. My experiences has been mixed - sometimes it seems to be doing a better and faster job than me, other times it seems to be making a mess a lot faster than what I can do it. Despite (or because of?) using Claude extensively, I spent much more time on it than estimated.
87+
Releases 2.2.6 - 3.2.0 has been heavily assisted by Claude - which is pretty obvious when looking into the commit messages. My experiences has been mixed - sometimes it seems to be doing a better and faster job than me, other times it seems to be making a mess a lot faster than what I can do it. Despiteof (or because of?) using Claude extensively, I spent much more time on the 3.0.0-release than estimated.
8388

8489
Lots of time and efforts have been spent on doing QA on the changes, fixing up things and/or asking Claude to do a better job. The surge of issues reported after the 3.0-release is probably unrelated to the AI usage - it's a result of trying to shoehorn both async and API changes into it without breaking backward compatbility and without duplicating too much code. The CHANGELOG.md entry for 3.0 explicitly declared a caveat: "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".
8590

@@ -104,4 +109,4 @@ I still intend to use GenAI heavily for certain tasks, like:
104109
* Investigations of different architectural choices - like with the async work I had claude develop different design approaches and chose the one that I felt most comfortable with (though I'm still not sure that I did the right choice).
105110
* Reading RFCs and quickly give a pointer to the relevant sections, or verifying that the code is according to the standards or not.
106111

107-
I will do some research on how to log prompts and chat.
112+
I will do some research on how to log prompts and chat - but it's difficult, my feedback to Claude is maningless without the context - Claude may deliver tons of text and rejected code changes for every commit.

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ Other documentation:
5656
* [Apache License](COPYING.APACHE)
5757
* [GPL license](COPYING.GPL)
5858

59+
There is also a directory [docs/design](docs/design) containing lots of documents, mostly AI-generated, containing things like design decisions and other things that neither is deemed important enough to have a document on the root of the project nor deemed to be "user documentation".
60+
5961
The package is published at [Pypi](https://pypi.org/project/caldav)
6062

6163
## HTTP Libraries

caldav/compatibility_hints.py

Lines changed: 1 addition & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -725,13 +725,6 @@ def dotted_feature_set_list(self, compact=False):
725725
## * Perhaps some more readable format should be considered (yaml?).
726726
## * Consider how to get this into the documentation
727727
incompatibility_description = {
728-
'no_default_calendar':
729-
"""The given user starts without an assigned default calendar """
730-
"""(or without pre-defined calendars at all)""",
731-
732-
'no_freebusy_rfc6638':
733-
"""Server does not support a freebusy-request as per RFC6638""",
734-
735728
'calendar_order':
736729
"""Server supports (nonstandard) calendar ordering property""",
737730

@@ -746,10 +739,6 @@ def dotted_feature_set_list(self, compact=False):
746739
'event_by_url_is_broken':
747740
"""A GET towards a valid calendar object resource URL will yield 404 (wtf?)""",
748741

749-
'no_delete_event':
750-
"""Zimbra does not support deleting an event, probably because event_by_url is broken""",
751-
752-
753742
'propfind_allprop_failure':
754743
"""The propfind test fails ... """
755744
"""it asserts DAV:allprop response contains the text 'resourcetype', """
@@ -773,20 +762,6 @@ def dotted_feature_set_list(self, compact=False):
773762
"""before the date search interval. This is in breach of rfc4791"""
774763
"""section 9.9""",
775764

776-
'vtodo_no_dtstart_infinite_duration':
777-
"""date search will find todo-items without dtstart if due is """
778-
"""after the date search interval. This is in breach of rfc4791"""
779-
"""section 9.9""",
780-
781-
'vtodo_no_dtstart_search_weirdness':
782-
"""Zimbra is weird""",
783-
784-
'vtodo_no_duration_search_weirdness':
785-
"""Zimbra is weird""",
786-
787-
'vtodo_with_due_weirdness':
788-
"""Zimbra is weird""",
789-
790765
'vtodo-cannot-be-uncompleted':
791766
"""If a VTODO object has been set with STATUS:COMPLETE, it's not possible to delete the COMPLTEDED attribute and change back to STATUS:IN-ACTION""",
792767

@@ -803,12 +778,6 @@ def dotted_feature_set_list(self, compact=False):
803778
'dav_not_supported':
804779
"""when asked, the server may claim it doesn't support the DAV protocol. Observed by one baikal server, should be investigated more (TODO) and robur""",
805780

806-
'text_search_is_case_insensitive':
807-
"""Probably not supporting the collation used by the caldav library""",
808-
809-
'date_search_ignores_duration':
810-
"""Date search with search interval overlapping event interval works on events with dtstart and dtend, but not on events with dtstart and due""",
811-
812781
'date_todo_search_ignores_duration':
813782
"""Same as above, but specifically for tasks""",
814783

@@ -933,7 +902,7 @@ def dotted_feature_set_list(self, compact=False):
933902
#'save-load.todo.mixed-calendar': {'support': 'unsupported'}, ## Why? It started complaining about this just recently.
934903
'principal-search.by-name.self': {'support': 'unsupported'},
935904
'principal-search': {'support': 'ungraceful'},
936-
'old_flags': ['unique_calendar_ids'],
905+
#'old_flags': ['unique_calendar_ids'],
937906
## I'm surprised, I'm quite sure this was passing earlier. Caldav commit a98d50490b872e9b9d8e93e2e401c936ad193003, caldav server checker commit 3cae24cf99da1702b851b5a74a9b88c8e5317dad
938907
'search.combined-is-logical-and': False
939908
}
@@ -986,16 +955,13 @@ def dotted_feature_set_list(self, compact=False):
986955
"scheduling.mailbox.inbox-delivery": {"support": "unsupported"},
987956

988957
"old_flags": [
989-
## apparently, zimbra has no journal support
990-
991958
## setting display name in zimbra does not work (display name,
992959
## calendar-ID and URL is the same, the display name cannot be
993960
## changed, it can only be given if no calendar-ID is given. In
994961
## earlier versions of Zimbra display-name could be changed, but
995962
## then the calendar would not be available on the old URL
996963
## anymore)
997964
## 'event_by_url_is_broken' removed - works in zimbra/zcs-foss:latest
998-
'no_delete_event',
999965
'vtodo_datesearch_notime_task_is_skipped',
1000966
'no_relships',
1001967

@@ -1118,7 +1084,6 @@ def dotted_feature_set_list(self, compact=False):
11181084
"support": "quirk",
11191085
"behaviour": "server delivers iTIP notification to inbox AND auto-schedules into calendar",
11201086
},
1121-
'old_flags': []
11221087
}
11231088

11241089
## See comments on https://github.com/python-caldav/caldav/issues/3
@@ -1261,7 +1226,6 @@ def dotted_feature_set_list(self, compact=False):
12611226
"scheduling": {"support": "unsupported"},
12621227
'old_flags': [
12631228
'non_existing_raises_other', ## AuthorizationError instead of NotFoundError
1264-
'no_supported_components_support',
12651229
'no_relships',
12661230
],
12671231
'test-calendar': {'cleanup-regime': 'wipe-calendar'},
@@ -1302,9 +1266,6 @@ def dotted_feature_set_list(self, compact=False):
13021266
'sync-token': {'support': 'ungraceful'},
13031267
'principal-search': {'support': 'unsupported'},
13041268
"scheduling": {"support": "unsupported"},
1305-
'old_flags': [
1306-
#'no_recurring_todo', ## todo
1307-
]
13081269
}
13091270

13101271
#calendar_mail_ru = [
@@ -1446,9 +1407,6 @@ def dotted_feature_set_list(self, compact=False):
14461407
},
14471408
## Known, work in progress
14481409
"scheduling": {"support": "unsupported"},
1449-
'old_flags': [
1450-
'no_supported_components_support',
1451-
],
14521410
## Known, not a breach of standard
14531411
"get-supported-components": {"support": "unsupported"},
14541412
}

docs/design/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# CalDAV Design Documents
22

3-
End-user documentation belongs under `../srv` and more or less important stuff belongs under the project root. "Everything else" may be thrown into this directory.
3+
End-user documentation belongs under `../source` and more or less important stuff belongs under the project root. "Everything else" may be thrown into this directory.
44

55
Admittedly it's quite much junk in this folder.
66

docs/source/http-libraries.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,7 @@ decisions, it may have been due to personal conflicts - or, perhaps
2525
the quality of the code was found not to be good enough. It works for
2626
me. I've had Claude to do a code review of niquests and urllib3 - it
2727
gave a thumbs-up for Niquests, while urllib3.future could benefit from
28-
some refactoring (claude also recommends shedding backward
29-
compatibility).
28+
some refactoring.
3029

3130
I see some possible reasons why one would like to avoid niquests:
3231
* Many projects are already dependent on requests and/or httpx, and one

0 commit comments

Comments
 (0)