The icalendar team is pleased to announce that icalendar 7.3.0 has been released.
Highlighted changes
For the complete change log, visit:
Removals and deprecations
- vBinary.obj is deprecated in favor of vBinary.bytes. It is retained as a lossy string view of the value for backward compatibility, and will be removed in icalendar 8.
New features
- Added Alarm.new_display(), Alarm.new_audio(), and Alarm.new_email() factory methods for creating RFC 5545 Section 3.6.6 VALARM components.
- Added vBinary.bytes, exposing the raw binary value of a BINARY property.
- Added the ICalParsingError exception as a public API for programmatic handling of iCalendar parsing failures.
- Created a script to automatically generate the windows_to_olson module from the Unicode Consortium's CLDR GitHub repository.
- Added vBinary.base64data, a getter/setter for the Base64 string view of a BINARY property's value, so callers no longer need to call base64.b64encode() or base64.b64decode() manually.
- Added Alarm.ACTION and AlarmTime.action access to the RFC 5545 Section 3.8.6.1 ACTION property.
- Added REQUEST_STATUS property to Event, Todo, Journal, and FreeBusy with request_status parameter in new() constructors per RFC 5545 Section 3.8.8.3. I used AI to assist with this change.
Bug fixes
- Values of unrecognized properties and X- properties without a VALUE parameter were altered by escaping when parsed, serialized, or converted to and from jCal, so they did not round-trip unchanged as RFC 7265 specifies. These values are now preserved verbatim.
- Avoid folding content lines between escape prefixes and their escaped characters.
- Added the missing BINARY member to icalendar.enums.VALUE, per RFC 5545 Section 3.2.20.
Documentation
- Revised the security policy to use GitHub Security Advisory procedure instead of emailing the Plone security team, and clarified language.
- Revised how to document parameters in docstrings, specifically their order of appearance and usage of type hints. Revised guidance to write docstrings only for a class, and not their init or new methods.
- Adapted pull request requirements to better handle AI slop.
- Documented how to join the icalendar team.
Support icalendar
This release was made possible through the community built with the support from a NGI Zero Core grant from the NLnet Foundation as part of a larger project to develop the Python Calendaring Ecosystem.
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 at Issues · collective/icalendar · GitHub.
- Comment on and resolve issues.
- Triage open issues and pull requests Pull requests · collective/icalendar · GitHub.
- Review, comment on, and make suggestions to change a pull request.
- Submit pull requests from your fork of the icalendar repository.
- Extend the documentation Documentation — icalendar 7.3.0 documentation.
- Write a blog post about icalendar.
- Share announcements on social media from core contributors to icalendar Credits — icalendar 7.3.0 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
Chat
Mastodon