icalendar 7.2.0 released #1500
stevepiercy
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
The icalendar team is pleased to announce that icalendar 7.2.0 has been released.
For the complete change log, visit:
https://icalendar.readthedocs.io/en/stable/reference/changelog.html
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 Use deprecation function wrapper for private methods from #1308 #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.
https://nlnet.nl/project/OpenWebCalendar-recurring/
Funding development helps create a responsive community around the Python calendaring ecosystem.
https://pycal.org/
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.
Join the icalendar community
The maintainer of icalendar, Nicco Kunzmann (GitHub: @niccokunzmann), gratefully appreciates the contributions for this release. See the list of contributors.
https://github.com/collective/icalendar/graphs/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.
https://icalendar.readthedocs.io/en/stable/contribute/index.html
Additional references
Documentation
https://icalendar.readthedocs.io/en/stable/
Change log
https://icalendar.readthedocs.io/en/stable/reference/changelog.html
Upgrade guide
https://icalendar.readthedocs.io/en/stable/how-to/upgrade.html
PyPI
https://pypi.org/project/icalendar/
Issues
https://github.com/collective/icalendar/issues
Discussions
https://github.com/collective/icalendar/discussions
Mastodon
https://toot.wales/@niccokunzmann/
All reactions