Update dependency caldav to ~=3.2.0 #258

Merged
tyler merged 1 commit from renovate/caldav-3.x into dev 2026-04-24 16:45:14 -07:00
Collaborator

This PR contains the following updates:

Package Change Age Confidence
caldav (changelog) ~=3.1.0~=3.2.0 age confidence

Release Notes

python-caldav/caldav (caldav)

v3.2.0

Compare Source

The two most significant news in v3.2 are relatively well-tested support for scheduling (RFC6638) and better-tested support for async. Care should still be taken, those features are backed by many tests, but lacks testing for how well they support real-world use-case scenarios. While async support was added in version 3.0, it was not well-enough tested. Still only a fraction of all the integration tests for sync usage has been duplicated in the async integration test, I expect to release 3.2.1 with symmetric async integration tests before 2025-07.

Added
  • add_organizer() now accepts an optional explicit organizer argument (a Principal, vCalAddress, or email string)
  • Complete support for Schedule-Tag (RFC 6638 §3.2–3.3) and Etag. Headers from upstream will be catched and stored in the properties. If those properties exists, If-Schedule-Tag-Match or If-Match headers will be sent. A ScheduleTagMismatchError or EtagMismatchError will be raised on 412.
Changed
  • httpx deprecation - earlier, in async mode, if httpx was installed it would be used (while niquests is listed in the requirements). This have been reversed - now httpx will be used if it's installed while niquest isn't installed. httpx seems like a dead end, destroyed by drama and intrigues, and now even flagged as a supply chain risk on Reddit. See #​611 (comment)
  • SEQUENCE property assumed to default to 0 when absent (RFC 5546 §2.1.4). save() then inserts SEQUENCE:1 unless the increase_seqno parameter is set to False.
Fixed
  • Bug with inconsistent search()-results - #​650
  • Compatibility fixing:
    • _resolve_properties() would crash for some disbehaving servers. pycalendar/calendar-cli#114
    • Calendar.get_supported_components() would crash for some servers. #​653
    • Fallback code for accept_invite(), decline_invite() and tentatively_accept_invite() when the server does not expose the calendar-user-address-set property. #​399
  • Quite some code-paths with IO was async-unaware - found and fixed quite many of those. Some places duplicating code seems to be most trivial - but it's something I really want to avoid. There were already places in the code where the async and sync behaviour differed. I've done quite some refactoring to reduce the amount of duplicated code.
  • Done some work on get_object_by_uid(), aligning it with the rest of the search API. Closes #​586
AI transparency

I've been experimenting with Claude Code over the last few months, concerns have been raised that it may have negatively affected code quality - and indeed, this is probably a major reason why the async support in v3.0 was simply not good enough. I've been working a bit more on the AI-POLICY.md, some of the directions for the future looks like this:

  • All work involving new features should primarily be done by hand (AI-assistance allowed for discussing different design decisions, reviewing and fixing trivial bugs in the new code, dealing with trivial TODO-nodes in the handwritten code, etc).
  • All prompts should be logged.
  • Prompts should be included in the commit message.
  • Model and other relevant information on the AI-usage should be included.
  • Commit messages should include information on what and how much is AI-generated (with default being "all" or "none" dependent on the commit message trailer)
  • Commit messages should include information on why AI was used.
  • The AI should be used for Code Review for every release.

The 3.2-release may not be fully up to those standards, as they were made while working on 3.2.

The branch v3.2-development contains "raw" commits, most of the commits are either AI-written (including commit message) or human-written. I've done quite some work trying to squash the commits into fewer commits, in the main branch all the recent commit messages are handwritten, and most of the commits have some notes on how much is AI-generated and why AI-generation was chosen. The manual walk-through of all the commits has been tedious, but useful for QA-purposes. I'm considering this to be the way forward.

I have all relatively fresh communication with Claude in JSON-files, and I was considering to embed them into the repository for increased transparency. Everything considered, I think it would involve too much noise, so I've skipped it as for now. If you want it, I will publish it.

Housekeeping and documentation
  • AI-POLICY.md updated - see also the "AI Transparency" subsection
  • GitHub exit strategy: Issues are now mirrored in the git repository itself using the git-bug package. I'm not intending to leave GitHub for the foreseeable future, but I don't want to be locked-in or dependent on GitHub - this is a first step towards an "exit strategy".
  • Code quality: reduced ruff ignore list (#​634) — removed unused imports (copy, lxml.etree, CalendarSet, cdav/dav re-exports, Optional, timezone, Event/Todo type stubs), replaced bare except: clauses with specific exception types (KeyError, AttributeError, Exception where broad catching is intentional), and removed unused local variables.
  • async documentation brushed up a bit with bugfixes and disclaimers
  • Examples and tests for finding calendar owners - #​544
  • Added funding.json (https://fundingjson.org/) at the repository root. Closes #​608
  • Some broken examples and documentation wasn't properly tested - #​661
Test framework, compatibility hints, documentation, examples
  • Lots of new compatibility feaure hints added (with checking code in the caldav-server-tester tool), including RFC6638-relevant features.
  • Some compatibility feature hints have been renamed and moved around. See the "Breaking changes"-section below.
  • _AsyncTestSchedulingBase added: async counterpart of _TestSchedulingBase with test_invite_and_respond and test_freebusy; TestAsyncSchedulingFor<Server> classes generated for each server with scheduling_users configured.
  • Lots of new test code for the RFC6638-functionality, including setting up extra test users in the docker containers.
Breaking changes
  • Some compatibility feature hints have been moved a bit around. This file is still not considered to be a "sharp" part of the libary, otherwise we'd need to bump the version number to 4.0.
    • freebusy-related flags. The rfc6638-freebusy have been moved to scheduling.freebusy, rfc4791-freebusy have been collapsed down into freebusy (instead of freebusy.rfc4791).
    • search.text.by-uid was removed, there is (probably?) no servers supporting one but not the other. (Though the checks on this may be wrong, as workarounds are automatically employed for servers not supporting text search). #​586

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [caldav](https://github.com/python-caldav/caldav) ([changelog](https://github.com/python-caldav/caldav/blob/master/CHANGELOG.md)) | `~=3.1.0` → `~=3.2.0` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/caldav/3.2.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/caldav/3.1.0/3.2.0?slim=true) | --- ### Release Notes <details> <summary>python-caldav/caldav (caldav)</summary> ### [`v3.2.0`](https://github.com/python-caldav/caldav/blob/HEAD/CHANGELOG.md#320---2026-04-24) [Compare Source](https://github.com/python-caldav/caldav/compare/v3.1.0...v3.2.0) The two most significant news in v3.2 are **relatively well-tested support for scheduling** (RFC6638) and **better-tested support for async**. Care should still be taken, those features are backed by many tests, but lacks testing for how well they support real-world use-case scenarios. While async support was added in version 3.0, it was not well-enough tested. Still only a fraction of all the integration tests for sync usage has been duplicated in the async integration test, I expect to release 3.2.1 with symmetric async integration tests before 2025-07. ##### Added - `add_organizer()` now accepts an optional explicit *organizer* argument (a `Principal`, `vCalAddress`, or email string) - Complete support for **Schedule-Tag** (RFC 6638 §3.2–3.3) and **Etag**. Headers from upstream will be catched and stored in the properties. If those properties exists, `If-Schedule-Tag-Match` or `If-Match` headers will be sent. A `ScheduleTagMismatchError` or `EtagMismatchError` will be raised on 412. ##### Changed - **httpx deprecation** - earlier, in async mode, if httpx was installed it would be used (while niquests is listed in the requirements). This have been reversed - now httpx will be used if it's installed while niquest isn't installed. httpx seems like a dead end, destroyed by drama and intrigues, and now even flagged as a supply chain risk on Reddit. See [#&#8203;611 (comment)](https://github.com/python-caldav/caldav/issues/611#issuecomment-4278875543) - **SEQUENCE property assumed to default to 0** when absent (RFC 5546 §2.1.4). `save()` then inserts `SEQUENCE:1` unless the `increase_seqno` parameter is set to False. ##### Fixed - Bug with inconsistent `search()`-results - [#&#8203;650](https://github.com/python-caldav/caldav/issues/650) - Compatibility fixing: - `_resolve_properties()` would crash for some disbehaving servers. [pycalendar/calendar-cli#114](https://github.com/pycalendar/calendar-cli/issues/114) - `Calendar.get_supported_components()` would crash for some servers. [#&#8203;653](https://github.com/python-caldav/caldav/issues/653) - Fallback code for `accept_invite()`, `decline_invite()` and `tentatively_accept_invite()` when the server does not expose the `calendar-user-address-set` property. [#&#8203;399](https://github.com/python-caldav/caldav/issues/399) - Quite some code-paths with IO was async-unaware - found and fixed quite many of those. Some places duplicating code seems to be most trivial - but it's something I really want to avoid. There were already places in the code where the async and sync behaviour differed. I've done quite some refactoring to reduce the amount of duplicated code. - Done some work on `get_object_by_uid()`, aligning it with the rest of the search API. Closes [#&#8203;586](https://github.com/python-caldav/caldav/issues/586) ##### AI transparency I've been experimenting with Claude Code over the last few months, concerns have been raised that it may have negatively affected code quality - and indeed, this is probably a major reason why the async support in v3.0 was simply not good enough. I've been working a bit more on the [AI-POLICY.md](AI-POLICY.md), some of the directions for the future looks like this: - All work involving *new features* should primarily be done by hand (AI-assistance allowed for discussing different design decisions, reviewing and fixing trivial bugs in the new code, dealing with trivial TODO-nodes in the handwritten code, etc). - All prompts should be logged. - Prompts should be included in the commit message. - Model and other relevant information on the AI-usage should be included. - Commit messages should include information on what and how much is AI-generated (with default being "all" or "none" dependent on the commit message trailer) - Commit messages should include information on why AI was used. - The AI should be used for Code Review for every release. The 3.2-release may not be fully up to those standards, as they were made while working on 3.2. The branch v3.2-development contains "raw" commits, most of the commits are either AI-written (including commit message) or human-written. I've done quite some work trying to squash the commits into fewer commits, in the main branch all the recent commit messages are handwritten, and most of the commits have some notes on how much is AI-generated and why AI-generation was chosen. The manual walk-through of all the commits has been tedious, but useful for QA-purposes. I'm considering this to be the way forward. I have all relatively fresh communication with Claude in JSON-files, and I was considering to embed them into the repository for increased transparency. Everything considered, I think it would involve too much noise, so I've skipped it as for now. If you want it, I will publish it. ##### Housekeeping and documentation - **AI-POLICY.md** updated - see also the "AI Transparency" subsection - **GitHub exit strategy**: Issues are now mirrored in the git repository itself using the [git-bug package](https://github.com/git-bug/git-bug). I'm not intending to leave GitHub for the foreseeable future, but I don't want to be locked-in or dependent on GitHub - this is a first step towards an "exit strategy". - **Code quality**: reduced ruff ignore list ([#&#8203;634](https://github.com/python-caldav/caldav/issues/634)) — removed unused imports (`copy`, `lxml.etree`, `CalendarSet`, `cdav/dav` re-exports, `Optional`, `timezone`, `Event`/`Todo` type stubs), replaced bare `except:` clauses with specific exception types (`KeyError`, `AttributeError`, `Exception` where broad catching is intentional), and removed unused local variables. - async documentation brushed up a bit with bugfixes and disclaimers - Examples and tests for finding calendar owners - [#&#8203;544](https://github.com/python-caldav/caldav/issues/544) - Added `funding.json` (<https://fundingjson.org/>) at the repository root. Closes [#&#8203;608](https://github.com/python-caldav/caldav/issues/608) - Some broken examples and documentation wasn't properly tested - [#&#8203;661](https://github.com/python-caldav/caldav/issues/661) ##### Test framework, compatibility hints, documentation, examples - Lots of new compatibility feaure hints added (with checking code in the caldav-server-tester tool), including RFC6638-relevant features. - Some compatibility feature hints have been renamed and moved around. See the "Breaking changes"-section below. - `_AsyncTestSchedulingBase` added: async counterpart of `_TestSchedulingBase` with `test_invite_and_respond` and `test_freebusy`; `TestAsyncSchedulingFor<Server>` classes generated for each server with `scheduling_users` configured. - Lots of new test code for the RFC6638-functionality, including setting up extra test users in the docker containers. ##### Breaking changes - Some compatibility feature hints have been moved a bit around. This file is still not considered to be a "sharp" part of the libary, otherwise we'd need to bump the version number to 4.0. - freebusy-related flags. The rfc6638-freebusy have been moved to `scheduling.freebusy`, rfc4791-freebusy have been collapsed down into `freebusy` (instead of `freebusy.rfc4791`). - `search.text.by-uid` was removed, there is (probably?) no servers supporting one but not the other. (Though the checks on this may be wrong, as workarounds are automatically employed for servers not supporting text search). [#&#8203;586](https://github.com/python-caldav/caldav/issues/586) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNDAuMCIsInVwZGF0ZWRJblZlciI6IjQzLjE0MC4wIiwidGFyZ2V0QnJhbmNoIjoiZGV2IiwibGFiZWxzIjpbXX0=-->
Update dependency caldav to ~=3.2.0
Some checks failed
Tests / test (pull_request) Failing after 11m11s
91c6973e3f
renovate-bot scheduled this pull request to auto merge when all checks succeed 2026-04-24 12:01:41 -07:00
tyler deleted branch renovate/caldav-3.x 2026-04-24 16:45:19 -07:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
tyler/dailySummaryEmail!258
No description provided.