The icalendar team is pleased to announce that icalendar 7.2.0 has been released.
For the complete change log, visit:
Highlighted improvements
There are fifty changes from dozens of contributors in the latest release of icalendar. The following are a few highlights.
Removals and deprecations
-
Deprecated icalendar.parser.string.foldline() as a private function for icalendar version 8. @IoannaGiag (Issue #1011)
-
Deprecated icalendar.parser.string.escape_char(), icalendar.parser.string.unescape_char(), icalendar.parser.string.escape_string(), and icalendar.parser.string.unescape_string() using the standard deprecate_for_version_8 wrapper as per issue #1405. (Issue #1405)
New features
-
Created an ical_value property for the vFrequency component, mirroring the existing pattern on vWeekday. @mvanhorn (Issue #876)
-
Created an ical_value property for the vGeo component. @IoannaGiag (Issue #876)
-
The Alarm.uid accessor now falls back to vendor-specific UID properties (the existing X-ALARMUID and the newly added X-EVOLUTION-ALARM-UID) when no canonical UID is present, so alarms exported by Evolution/GNOME Calendar expose a usable identifier. single_string_property now accepts an ordered list of fallback keys so further vendor aliases can be added later. AI disclosure: I used GPT-5 Codex (via the Codex CLI) to draft and refine this change and its tests; I reviewed and validated the output locally. @mvanhorn (Issue #1421)
-
The rdates and exdates properties are now writable: assigning a list replaces the RDATE/EXDATE values, del (or assigning an empty list or None) clears them, and assigning the value the getter returns round-trips. Prepared with the assistance of an AI coding agent (Anthropic's Claude). @gaoflow (Issue #1442)
Bug fixes
-
Preserve an explicit VALUE parameter (for example RDATE;VALUE=PERIOD or TRIGGER;VALUE=DATE-TIME) when converting from jCal. Previously Component.from_jcal dropped the value type, which is encoded in the jCal type field rather than as a parameter. Prepared with the assistance of an AI coding agent (Anthropic's Claude Opus 4). @gaoflow @lcampanella98 (Issue #1426)
-
Parse and serialize jCal iteratively so that deeply nested components no longer raise an uncaught RecursionError. Component.from_jcal and Component.to_jcal now handle arbitrary nesting depth, matching the iterative iCal parser and serializer. @arshsmith
Documentation
-
Replaced the RFC quotation in the docstring for vBoolean with a Pythonic description, including parsing behavior, a conformance reference, and a working example. @tsai135 (Issue #1244)
-
Improved the documentation for attr.url_property by converting raw RFC text into a comprehensive Python docstring with usage examples and explicit RFC cross-references. Assisting tool: Gemini 1.5. @samrodri911 (Issue #1244)
-
Improved the LAST_MODIFIED docstring to a clearer Pythonic docstring. Assisting tool: Claude Haiku 4.5 @valemm13 (Issue #1244)
-
Clarified that Calendar.new automatically sets not only required, but recommended properties too. @scop (Issue #1459)
-
Add how to report security issues. @stevepiercy (Issue #1463)
-
Added NixOS installation instructions to the documentation. @MichaelFehdrau0205
-
Added instructions to Change log entry format in Contribute documentation for how to avoid a filename conflict when adding a change log entry. @stevepiercy
Internal changes
-
Added .pre-commit-config.yaml configuration and documentation to automatically record AI prompts in commit messages with ai-prompt-auto-commit. @AniruthKarthik (Issue #1320)
-
Trigger the creation of a comment with links to Read the Docs of the changed files to review in a pull request preview build. @stevepiercy (Issue #1396)
-
Add gh-profiler workflow to help triage AI-generated contributions. @SashankBhamidi (Issue #1484)
Support icalendar
This release was made possible through a NGI Zero Core grant from the NLnet Foundation as part of a larger project to develop the Open Web Calendar stack.
Funding development helps create a responsive community around the Python calendaring ecosystem.
As free and open source software, icalendar thrives and grows only when it receives support from you. You can help icalendar keep up-to-date with your platform and continue to use it in your applications in many ways.
- Make a one-time or recurring financial contribution through OpenCollective at icalendar - Open Collective.
- Report security issues per icalendar/SECURITY.md at main · collective/icalendar · GitHub.
- Report all other issues in the issue tracker.
- Comment on and resolve issues.
- Review and triage pull requests.
- Submit pull requests from your fork of the icalendar repository.
- Extend the documentation.
Join the icalendar community
The maintainer of icalendar, Nicco Kunzmann (GitHub: @niccokunzmann), gratefully appreciates the contributions for this release. See the list of contributors.
By fostering a warm and welcoming community around free and open source software, icalendar attracts both experienced and first-time contributors to participate. See how to contribute.
Additional references
Documentation
Change log
Upgrade guide
PyPI
Issues
Discussions
Mastodon