Skip to content

Commit edf5c70

Browse files
tobixenclaude
andcommitted
Add [Unreleased] section to CHANGELOG
Covers changes since 3.0.0a2: rate-limit bug fixes (sync + async), async multiget fallback, Principal._async_get_property fix, URL quoting fix, expand_simple_props fix, and Stalwart test server support. I'm also upgrading the icalendar dependency to icalendar7. Co-Authored-By: Claude <noreply@anthropic.com>
1 parent 8cacbc0 commit edf5c70

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,29 @@ Changelogs prior to v2.0 is pruned, but was available in the v2.x releases
1212

1313
This project should adhere to [Semantic Versioning](https://semver.org/spec/v2.0.0.html), though for pre-releases PEP 440 takes precedence.
1414

15+
## [Unreleased]
16+
17+
### Breaking Changes
18+
19+
* The icalendar dependency is updated from 6 to 7 - not because 3.0 depends on icalendar7, but because I'm planning to use icalendar7-features in some upcoming 3.x. If this causes problems for you, just reach out and I will downgrade the dependency, release a new 3.0.1, and possibly procrastinate the icalendar7-stuff until 4.0.
20+
21+
### Added
22+
23+
* **Stalwart CalDAV server** added to Docker test server framework.
24+
* **Async multiget fallback in `_async_load()`** -- `CalendarObjectResource._async_load()` now has the same two-stage fallback as sync `load()`: on a 404, first tries calendar-multiget REPORT, then re-fetches by UID. Previously the async path only had the UID re-fetch fallback.
25+
26+
### Fixed
27+
28+
* Fixed two bugs in `DAVClient` rate-limit auto-detection: (1) `is_supported('rate-limit', dict)` returns `{'enable': False}` (a truthy dict) for unconfigured clients, causing rate-limiting to be enabled unintentionally; (2) crash (`TypeError: '>' not supported between 'int' and 'NoneType'`) when `rate_limit_max_sleep` is `None` and a 429 is received.
29+
* Fixed `AsyncDAVClient` rate-limit handling to be fully symmetric with the sync client: same `Optional[bool]` default, same features-based auto-detect, same adaptive backoff accumulating sleep time across retries.
30+
* Fixed `Principal._async_get_property()` override having an incompatible signature (missing `use_cached` and `**passthrough`) and reimplementing PROPFIND logic already handled correctly by the parent `DAVObject._async_get_property()`. The override has been removed.
31+
* Fixed inconsistent URL quoting for calendar object UIDs containing slashes -- both `_generate_url()` and `_find_id_and_path()` in `calendarobject_ops.py` now share a single `_quote_uid()` helper (related to https://github.com/python-caldav/caldav/issues/143).
32+
* Fixed `expand_simple_props()` return value handling.
33+
34+
### Test Framework
35+
36+
* Added async rate-limit unit tests matching the sync test suite.
37+
1538
## [3.0.0a2] - 2026-02-25 (Alpha Release)
1639

1740
**This is an alpha release for testing purposes.** Please report issues at https://github.com/python-caldav/caldav/issues

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ dependencies = [
5656
"niquests",
5757
"recurring-ical-events>=2.0.0",
5858
"typing_extensions;python_version<'3.11'",
59-
"icalendar>6.0.0",
59+
"icalendar>7.0.0",
6060
"icalendar-searcher>=1.0.5,<2",
6161
"dnspython",
6262
"python-dateutil",

0 commit comments

Comments
 (0)