Icalendar 7.2.0 released

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

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.

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

1 Like