Update dependency icalendar to v7 #129

Open
renovate-bot wants to merge 1 commit from renovate/icalendar-7.x into master
Collaborator

This PR contains the following updates:

Package Change Age Confidence
icalendar (changelog) ==6.3.2==7.0.3 age confidence

Release Notes

collective/icalendar (icalendar)

v7.0.3

Compare Source

Minor changes


- Show colorful required code changes in the CI output to help contributors solve the formatting issues. :pr:`1216`
- Use ruff 0.15.0 for code formatting in :file:`tox.ini`. :pr:`1215`

New features
~~~~~~~~~~~~

- Added :attr:`Event.RECURRENCE_ID <icalendar.cal.event.Event.RECURRENCE_ID>`, :attr:`Todo.RECURRENCE_ID <icalendar.cal.todo.Todo.RECURRENCE_ID>`, and :attr:`Journal.RECURRENCE_ID <icalendar.cal.journal.Journal.RECURRENCE_ID>` properties, including support in their ``new()`` constructors. :issue:`1231`

Bug fixes
~~~~~~~~~

- Fixed :func:`~icalendar.timezone.tzid.tzids_from_tzinfo` not recognizing
  ``dateutil.tz.win.tzwin`` objects on Windows. UTC datetimes using
  ``dateutil.tz.gettz("UTC")`` now correctly serialize with the ``Z`` suffix
  instead of ``TZID=Coordinated Universal Time``. :issue:`1056`
- Fixed :meth:`Calendar.get_missing_tzids <icalendar.cal.calendar.Calendar.get_missing_tzids>`
  raising ``KeyError`` when a VTIMEZONE exists for a timezone not referenced by any event TZID,
  for example, when added by the ``x-wr-timezone`` conversion. :issue:`1124`
- Fixed :meth:`Calendar.get_missing_tzids <icalendar.cal.calendar.Calendar.get_missing_tzids>`
  and :meth:`Calendar.add_missing_timezones <icalendar.cal.calendar.Calendar.add_missing_timezones>`
  generating a spurious ``VTIMEZONE`` for UTC. :rfc:`5545#section-3.2.19` requires UTC datetimes
  to use the ``Z`` suffix; no ``VTIMEZONE`` component is needed or permitted. :issue:`1124`
- Fixed :meth:`Parameters.update_tzid_from <icalendar.parser.parameter.Parameters.update_tzid_from>`
  incorrectly setting ``TZID=UTC`` on UTC datetimes. :rfc:`5545#section-3.2.19` requires UTC datetimes to
  use the ``Z`` suffix without a ``TZID`` parameter. :issue:`1124`
- Renamed the public functions ``escape_char`` and ``unescape_char`` to implicit private methods ``_escape_char`` and ``_unescape_char``
  Fixed regression from :issue:`1008` by restoring :func:`~icalendar.parser.string.escape_char` and :func:`~icalendar.parser.string.unescape_char` as public functions.
  The public functions :func:`~icalendar.parser.string.escape_char` and :func:`~icalendar.parser.string.unescape_char` are now deprecated with warnings for external users.
  :pr:`1241`

Documentation
  • Add icalendar as a local workspace dependency to the docs dependency group in :file:pyproject.toml to fix dependency resolution issues with uv lock during documentation builds. :issue:1253 :pr:1254
  • Use sphinx-icalendar to add syntax highlighting to iCalendar text

v7.0.2

Compare Source

Minor changes


- Show required code changes in the CI output to help contributors solve the formatting issues. :pr:`1216`
- Use ruff 0.15.0 for code formatting in :file:`tox.ini`. :pr:`1215`

New features
~~~~~~~~~~~~

- Enabled :meth:`Calendar.from_ical <icalendar.cal.calendar.Calendar.from_ical>` to read calendars from files. :issue:`756`
- Added :attr:`Calendar.journals <icalendar.cal.calendar.Calendar.journals>` property to retrieve all journal components. :issue:`1230`

Documentation
  • Removed methods of str, int, and other classes and methods in the Python standard library from the documentation.

v7.0.1

Compare Source

Minor changes


- Setting :attr:`~cal.calendar.Calendar.calendar_name` now also writes ``X-WR-CALNAME``, and setting :attr:`~cal.calendar.Calendar.description` now also writes ``X-WR-CALDESC``, for improved client compatibility. :issue:`918`

Bug fixes
~~~~~~~~~

- Make ``typing_extensions`` a dependency. :issue:`1202`

Documentation
  • Fixed the version switcher on Read the Docs, and documented the process for a major release. :issue:1194
  • Added usage examples for reading calendars from files and URL. :issue:756
  • Add type hints and convert docstrings to Google Style in :file:cli.py. :issue:938

v7.0.0

Compare Source

Minor changes


- Created an :meth:`~cal.todo.Todo.example` method for the :class:`~cal.todo.Todo` component. :issue:`743`
- Created an :meth:`~cal.alarm.Alarm.example` method for the :class:`~cal.alarm.Alarm` component. :issue:`743`
- Move property classes from :mod:`icalendar.prop` into their own files with sub-packages :mod:`icalendar.prop.recur` and :mod:`icalendar.prop.dt`. :issue:`987`
- Move classes and functions in :mod:`icalendar.parser` into their own files. :issue:`987`
- Clarified custom component (X-* and IANA-registered) parsing behavior through enhanced documentation and comprehensive how-to guide. Custom components are automatically handled by the library with no special configuration required. :issue:`432`
- Reorganized custom component tests into a dedicated :file:`test_custom_components.py` file with expanded test coverage for :meth:`Component.from_ical <icalendar.cal.component.Component.from_ical>`, :meth:`Calendar.from_ical <icalendar.cal.calendar.Calendar.from_ical>`, and :class:`~icalendar.cal.component_factory.ComponentFactory` usage. :issue:`433`
- The ``typing-extensions`` dependency on Python < 3.13 is now optional, part of the ``test`` extra.
- The :func:`icalendar.tools.is_pytz_dt` return value is now hinted as ``TypeGuard[datetime]``, not ``TypeIs[datetime]``, since returning ``False`` should not allow narrowing it as non-datetime.
- Regroup dependencies in, and remove obsolete ones, from :file:`pyproject.toml`. :issue:`906`
- Add type hints to internal helper functions. :issue:`938`
- Add type hints to prop value classes (vBoolean, vFloat, vUri, vBinary, vInline). :issue:`938`
- Add type hints to remaining prop value classes (vText, vCalAddress, vCategory, vGeo, vN, vOrg, vAdr, vBroken, vUid, Conference, Image). :issue:`938`
- Added type hints and overloads to :meth:`Calendar.from_ical <icalendar.cal.calendar.Calendar.from_ical>` and :meth:`Component.from_ical <icalendar.cal.component.Component.from_ical>` to support ``multiple=True/False`` return types. :issue:`1129`
- CI: Print a link to Vale documentation when the spell checker fails.
- Remove :file:`bootstrap.py` and :file:`buildout.cfg` files as they are old build configurations. :pr:`1171`
- Enforce ruff formatting and linting across the entire codebase, with CI check to prevent regressions.
  :issue:`672`, :pr:`1171`, :pr:`1172`, :pr:`1173`, :pr:`1174`, :pr:`1175`, :pr:`1176`, :pr:`1177`, :pr:`1178`, :pr:`1179`, :pr:`1180`, and :pr:`1181`
- Fix type annotations, typos, and validation logic in prop module: corrected return type hints in ``parse_jcal_value`` methods, fixed ``to_ical()`` return type in vDDDTypes, updated ClassVar type hint in TypesFactory, removed dead code, fixed "abbrevation" typo in vWeekday, and corrected validation logic in vMonth. :issue:`1185`
- Rename :class:`~icalendar.prop.vBrokenProperty` to :class:`~icalendar.prop.vBroken` to match naming convention. :class:`~icalendar.prop.vBroken` now stores the actual exception object in ``parse_error`` instead of a string, and raises :class:`~icalendar.error.BrokenCalendarProperty` when accessing attributes like ``.dt`` that the expected type would have. :issue:`1087`

Breaking changes
  • Drop support for Python 3.8 and 3.9. :issue:977
  • DURATION_REGEX moved from :mod:icalendar.prop to :mod:icalendar.prop.dt.duration. :issue:987
  • WEEKDAY_RULE moved from :mod:icalendar.prop to :mod:icalendar.prop.recur.weekday. :issue:987
  • Removed tzid_from_dt and tzid_from_tzinfo from :mod:icalendar.prop as they exist in :mod:icalendar.timezone. :issue:987
  • :meth:Component.decoded now returns a string instead of bytes for text properties.
  • Remove constants FOLD, NAME, NEWLINE, QUNSAFE_CHAR, QUOTABLE, UFOLD, and UNSAFE_CHAR from :mod:icalendar.parser's export. :issue:987

New features


- Added ``recursive`` parameter to :meth:`Component.copy` to control copying of subcomponents and properties. :issue:`899`
- Event components now have error-tolerant property parsing. Properties with parsing errors fall back to :class:`~icalendar.prop.vBroken`, preserving the raw value and allowing access to other valid properties. Errors are recorded in ``component.errors``. Partially addresses :issue:`158`
- Added :class:`~icalendar.prop.AdrFields` and :class:`~icalendar.prop.NFields` named tuples for structured access to vCard ADR and N property fields. The ``fields`` attribute and ``from_ical()`` return value of :class:`~icalendar.prop.vAdr` and :class:`~icalendar.prop.vN` now return these typed named tuples, enabling access like ``adr.fields.street`` and ``n.fields.family``. Since named tuples are tuple subclasses, existing code using tuple indexing or unpacking remains compatible. Added ``name`` and ``units`` properties to :class:`~icalendar.prop.vOrg` for convenient access to the organization name and organizational units. Added ``ical_value`` property to all three classes. :issue:`1060`
- Added ``with_uid`` method to ``Component`` to filter subcomponents by UID. :issue:`950`
- Enforce linting of code with Ruff in CI. :issue:`672`

Bug fixes
~~~~~~~~~

- Fixed :meth:`Calendar.new <icalendar.cal.calendar.Calendar.new>` to automatically generate a UID when not provided, matching the documented behavior. Previously, the documentation stated that ``uid`` would be set to a new :func:`uuid.uuid4` if ``None``, but the implementation did not generate it. :issue:`1066`
- Fixed import failure in Pyodide/WebAssembly environments by using lazy initialization for timezone data in the zoneinfo provider. The library can now be imported in environments without timezone data (e.g., Cloudflare Workers, PyScript, JupyterLite). :issue:`1073`
- Fixed :meth:`icalendar.caselessdict.CaselessDict.__eq__` to return ``NotImplemented`` when comparing with non-dict types instead of raising ``AttributeError``. :issue:`1016`
- Fixed decoding of categories. :issue:`279`
- Link ``timedelta`` to :py:class:`datetime.timedelta` in the Python standard library documentation. :issue:`951`
- Fix round-trip parsing of :class:`~icalendar.prop.vCategory` (CATEGORIES property) when category values contain commas. Categories like ``'Meeting, John'`` now correctly survive round trips between :meth:`Component.to_ical <icalendar.cal.component.Component.to_ical>` and :meth:`Component.from_ical <icalendar.cal.component.Component.from_ical>` instead of being split into multiple categories. Added :func:`~icalendar.parser.split_on_unescaped_comma` helper function. :issue:`127`
- Fixed semicolon escaping in vCard structured properties (ADR, N, ORG). Semicolons are now correctly treated as field separators per :rfc:`6350`, not escaped as in iCalendar TEXT values. Added :func:`~icalendar.parser.split_on_unescaped_semicolon` helper function and :class:`~icalendar.prop.vAdr`, :class:`~icalendar.prop.vN`, :class:`~icalendar.prop.vOrg` property types. :issue:`137`
- Fix :meth:`Image.from_property_value <icalendar.prop.image.Image.from_property_value>` to raise ``TypeError`` instead of ``AttributeError`` when ``value.params`` isn't valid (most notably, isn't dict-like). :issue:`909`

Documentation
  • Improved docstrings and formatting for the :class:~icalendar.alarms.AlarmTime class. :issue:1072
  • Added how-to guide for handling parsing errors with :class:~icalendar.prop.vBroken and the component.errors attribute. :issue:1085
  • Updated 11 function docstrings in :mod:icalendar.parser to follow the Google Style guide, improving API documentation clarity and consistency. :issue:1072
  • Applied Google-style docstrings to :mod:icalendar.tools utility functions with Args, Returns, and Example sections. :issue:1072
  • Simplify contributors and add supporters in credits. :issue:1035
  • Add a section in the change log for Documentation. :issue:1043
  • Fixed multiple more than one target found for cross-reference warnings, and stopped using sphinx.ext.autosectionlabel, in documentation. :issue:952
  • Add funding.json manifest for funding information. :issue:1047
  • Resolved Cannot resolve forward reference in type annotations warning in documentation.
    Added SPHINX_APIDOC_OPTIONS to make apidoc command, excluding __all__ items from being duplicated in the documentation, and rebuilt the API documentation source files.
    :issue:952
  • Document how to create and read attendee information in events. :issue:130
  • Add usage examples. :issue:443
  • Improve documentation contribution guide by adding chapters for small edits, builds and checks, and a style guide. Added details for Vale usage, Diátaxis framework, narrative and API documentation, and fixing all spelling errors. :issue:991
  • Document dictionary and property accessors. :issue:124
  • Moved content from the README into documentation to reduce maintenance and point to the authoritative source of information.
    :issue:1006
  • Added "Code conventions" section to the Development contributing guide.
    :issue:1004
  • Use Google style docstrings in :mod:~icalendar.parser_tools
    :issue:1017
  • Document compatibility of icalendar with RFCs. :issue:1147
  • Added Upgrade guide. :issue:997
  • Fixed links in jCal usage documentation.
  • Enable sphinx-issues extension. :issue:1091
  • Replaced "Arguments" and "Args" with "Parameters". :issue:1076
  • Added documentation of how to set up a development environment with git. :issue:906
  • Documented how to install and use pre-commit. :issue:996
  • Added a new rule to our docstring style guide to escape docstrings, and added a new section for type hints in the code conventions section. :issue:1080
  • Documented __init__ methods. :issue:1079
  • Moved "Edit this page" link to above the page table of contents. :issue:1106
  • Added Good First Issue link and fixed Up For Grabs link in Contribute guide. :issue:1095
  • Updated CONTRIBUTING.rst to explicitly state not to use Args sections in docstrings. :issue:1076
  • Document vInt.__new__ method parameters in class docstring with :rfc:5545 examples. :issue:1118
  • Improved make vale command to provide guidance on failure or success. :issue:1137
  • Add sphinx_copybutton configuration to exclude line numbers, prompts, and console output when copying code blocks.
  • Change Sphinx configuration to convert -- to en dash -, --- to em dash , and ... to ellipsis , but doesn't transform quote marks as they should be preserved.
    This restores cleaner and consistent rendering of docstrings in the :doc:API Reference <../reference/api/icalendar>.
    See smartquotes_action <https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-smartquotes_action>_.
  • Fix incorrect return type annotation in :meth:Component.from_ical <icalendar.cal.component.Component.from_ical>. :issue:1141
  • Fixed broken links in docs/how-to/usage.rst documentation. Part of :issue:1158
  • Enhanced the first-time contributors section, in hopes that fewer contributors ask permission before starting work. :issue:1165
  • Changed Sphinx configuration to inherit from CaselessDict, displaying all of its class members in the in-page navigation.
    Fixed broken cross-component links in Availability.new(). :issue:994
  • Configured Sphinx to append the docstring from the __init__ method into its class docstring. :issue:1156

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [icalendar](https://github.com/collective/icalendar) ([changelog](https://icalendar.readthedocs.io/en/stable/changelog.html)) | `==6.3.2` → `==7.0.3` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/icalendar/7.0.3?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/icalendar/6.3.2/7.0.3?slim=true) | --- ### Release Notes <details> <summary>collective/icalendar (icalendar)</summary> ### [`v7.0.3`](https://github.com/collective/icalendar/blob/HEAD/CHANGES.rst#703-2026-03-03) [Compare Source](https://github.com/collective/icalendar/compare/v7.0.2...v7.0.3) Minor changes ``` - Show colorful required code changes in the CI output to help contributors solve the formatting issues. :pr:`1216` - Use ruff 0.15.0 for code formatting in :file:`tox.ini`. :pr:`1215` New features ~~~~~~~~~~~~ - Added :attr:`Event.RECURRENCE_ID <icalendar.cal.event.Event.RECURRENCE_ID>`, :attr:`Todo.RECURRENCE_ID <icalendar.cal.todo.Todo.RECURRENCE_ID>`, and :attr:`Journal.RECURRENCE_ID <icalendar.cal.journal.Journal.RECURRENCE_ID>` properties, including support in their ``new()`` constructors. :issue:`1231` Bug fixes ~~~~~~~~~ - Fixed :func:`~icalendar.timezone.tzid.tzids_from_tzinfo` not recognizing ``dateutil.tz.win.tzwin`` objects on Windows. UTC datetimes using ``dateutil.tz.gettz("UTC")`` now correctly serialize with the ``Z`` suffix instead of ``TZID=Coordinated Universal Time``. :issue:`1056` - Fixed :meth:`Calendar.get_missing_tzids <icalendar.cal.calendar.Calendar.get_missing_tzids>` raising ``KeyError`` when a VTIMEZONE exists for a timezone not referenced by any event TZID, for example, when added by the ``x-wr-timezone`` conversion. :issue:`1124` - Fixed :meth:`Calendar.get_missing_tzids <icalendar.cal.calendar.Calendar.get_missing_tzids>` and :meth:`Calendar.add_missing_timezones <icalendar.cal.calendar.Calendar.add_missing_timezones>` generating a spurious ``VTIMEZONE`` for UTC. :rfc:`5545#section-3.2.19` requires UTC datetimes to use the ``Z`` suffix; no ``VTIMEZONE`` component is needed or permitted. :issue:`1124` - Fixed :meth:`Parameters.update_tzid_from <icalendar.parser.parameter.Parameters.update_tzid_from>` incorrectly setting ``TZID=UTC`` on UTC datetimes. :rfc:`5545#section-3.2.19` requires UTC datetimes to use the ``Z`` suffix without a ``TZID`` parameter. :issue:`1124` - Renamed the public functions ``escape_char`` and ``unescape_char`` to implicit private methods ``_escape_char`` and ``_unescape_char`` Fixed regression from :issue:`1008` by restoring :func:`~icalendar.parser.string.escape_char` and :func:`~icalendar.parser.string.unescape_char` as public functions. The public functions :func:`~icalendar.parser.string.escape_char` and :func:`~icalendar.parser.string.unescape_char` are now deprecated with warnings for external users. :pr:`1241` Documentation ``` - Add `icalendar` as a local workspace dependency to the `docs` dependency group in :file:`pyproject.toml` to fix dependency resolution issues with `uv lock` during documentation builds. :issue:`1253` :pr:`1254` - Use `sphinx-icalendar` to add syntax highlighting to iCalendar text ### [`v7.0.2`](https://github.com/collective/icalendar/blob/HEAD/CHANGES.rst#702-2026-02-24) [Compare Source](https://github.com/collective/icalendar/compare/v7.0.1...v7.0.2) Minor changes ``` - Show required code changes in the CI output to help contributors solve the formatting issues. :pr:`1216` - Use ruff 0.15.0 for code formatting in :file:`tox.ini`. :pr:`1215` New features ~~~~~~~~~~~~ - Enabled :meth:`Calendar.from_ical <icalendar.cal.calendar.Calendar.from_ical>` to read calendars from files. :issue:`756` - Added :attr:`Calendar.journals <icalendar.cal.calendar.Calendar.journals>` property to retrieve all journal components. :issue:`1230` Documentation ``` - Removed methods of `str`, `int`, and other classes and methods in the Python standard library from the documentation. ### [`v7.0.1`](https://github.com/collective/icalendar/blob/HEAD/CHANGES.rst#701-2026-02-17) [Compare Source](https://github.com/collective/icalendar/compare/v7.0.0...v7.0.1) Minor changes ``` - Setting :attr:`~cal.calendar.Calendar.calendar_name` now also writes ``X-WR-CALNAME``, and setting :attr:`~cal.calendar.Calendar.description` now also writes ``X-WR-CALDESC``, for improved client compatibility. :issue:`918` Bug fixes ~~~~~~~~~ - Make ``typing_extensions`` a dependency. :issue:`1202` Documentation ``` - Fixed the version switcher on Read the Docs, and documented the process for a major release. :issue:`1194` - Added usage examples for reading calendars from files and URL. :issue:`756` - Add type hints and convert docstrings to Google Style in :file:`cli.py`. :issue:`938` ### [`v7.0.0`](https://github.com/collective/icalendar/blob/HEAD/CHANGES.rst#700-2026-02-11) [Compare Source](https://github.com/collective/icalendar/compare/v6.3.2...v7.0.0) Minor changes ``` - Created an :meth:`~cal.todo.Todo.example` method for the :class:`~cal.todo.Todo` component. :issue:`743` - Created an :meth:`~cal.alarm.Alarm.example` method for the :class:`~cal.alarm.Alarm` component. :issue:`743` - Move property classes from :mod:`icalendar.prop` into their own files with sub-packages :mod:`icalendar.prop.recur` and :mod:`icalendar.prop.dt`. :issue:`987` - Move classes and functions in :mod:`icalendar.parser` into their own files. :issue:`987` - Clarified custom component (X-* and IANA-registered) parsing behavior through enhanced documentation and comprehensive how-to guide. Custom components are automatically handled by the library with no special configuration required. :issue:`432` - Reorganized custom component tests into a dedicated :file:`test_custom_components.py` file with expanded test coverage for :meth:`Component.from_ical <icalendar.cal.component.Component.from_ical>`, :meth:`Calendar.from_ical <icalendar.cal.calendar.Calendar.from_ical>`, and :class:`~icalendar.cal.component_factory.ComponentFactory` usage. :issue:`433` - The ``typing-extensions`` dependency on Python < 3.13 is now optional, part of the ``test`` extra. - The :func:`icalendar.tools.is_pytz_dt` return value is now hinted as ``TypeGuard[datetime]``, not ``TypeIs[datetime]``, since returning ``False`` should not allow narrowing it as non-datetime. - Regroup dependencies in, and remove obsolete ones, from :file:`pyproject.toml`. :issue:`906` - Add type hints to internal helper functions. :issue:`938` - Add type hints to prop value classes (vBoolean, vFloat, vUri, vBinary, vInline). :issue:`938` - Add type hints to remaining prop value classes (vText, vCalAddress, vCategory, vGeo, vN, vOrg, vAdr, vBroken, vUid, Conference, Image). :issue:`938` - Added type hints and overloads to :meth:`Calendar.from_ical <icalendar.cal.calendar.Calendar.from_ical>` and :meth:`Component.from_ical <icalendar.cal.component.Component.from_ical>` to support ``multiple=True/False`` return types. :issue:`1129` - CI: Print a link to Vale documentation when the spell checker fails. - Remove :file:`bootstrap.py` and :file:`buildout.cfg` files as they are old build configurations. :pr:`1171` - Enforce ruff formatting and linting across the entire codebase, with CI check to prevent regressions. :issue:`672`, :pr:`1171`, :pr:`1172`, :pr:`1173`, :pr:`1174`, :pr:`1175`, :pr:`1176`, :pr:`1177`, :pr:`1178`, :pr:`1179`, :pr:`1180`, and :pr:`1181` - Fix type annotations, typos, and validation logic in prop module: corrected return type hints in ``parse_jcal_value`` methods, fixed ``to_ical()`` return type in vDDDTypes, updated ClassVar type hint in TypesFactory, removed dead code, fixed "abbrevation" typo in vWeekday, and corrected validation logic in vMonth. :issue:`1185` - Rename :class:`~icalendar.prop.vBrokenProperty` to :class:`~icalendar.prop.vBroken` to match naming convention. :class:`~icalendar.prop.vBroken` now stores the actual exception object in ``parse_error`` instead of a string, and raises :class:`~icalendar.error.BrokenCalendarProperty` when accessing attributes like ``.dt`` that the expected type would have. :issue:`1087` Breaking changes ``` - Drop support for Python 3.8 and 3.9. :issue:`977` - `DURATION_REGEX` moved from :mod:`icalendar.prop` to :mod:`icalendar.prop.dt.duration`. :issue:`987` - `WEEKDAY_RULE` moved from :mod:`icalendar.prop` to :mod:`icalendar.prop.recur.weekday`. :issue:`987` - Removed `tzid_from_dt` and `tzid_from_tzinfo` from :mod:`icalendar.prop` as they exist in :mod:`icalendar.timezone`. :issue:`987` - :meth:`Component.decoded` now returns a string instead of bytes for text properties. - Remove constants `FOLD`, `NAME`, `NEWLINE`, `QUNSAFE_CHAR`, `QUOTABLE`, `UFOLD`, and `UNSAFE_CHAR` from :mod:`icalendar.parser`'s export. :issue:`987` New features ``` - Added ``recursive`` parameter to :meth:`Component.copy` to control copying of subcomponents and properties. :issue:`899` - Event components now have error-tolerant property parsing. Properties with parsing errors fall back to :class:`~icalendar.prop.vBroken`, preserving the raw value and allowing access to other valid properties. Errors are recorded in ``component.errors``. Partially addresses :issue:`158` - Added :class:`~icalendar.prop.AdrFields` and :class:`~icalendar.prop.NFields` named tuples for structured access to vCard ADR and N property fields. The ``fields`` attribute and ``from_ical()`` return value of :class:`~icalendar.prop.vAdr` and :class:`~icalendar.prop.vN` now return these typed named tuples, enabling access like ``adr.fields.street`` and ``n.fields.family``. Since named tuples are tuple subclasses, existing code using tuple indexing or unpacking remains compatible. Added ``name`` and ``units`` properties to :class:`~icalendar.prop.vOrg` for convenient access to the organization name and organizational units. Added ``ical_value`` property to all three classes. :issue:`1060` - Added ``with_uid`` method to ``Component`` to filter subcomponents by UID. :issue:`950` - Enforce linting of code with Ruff in CI. :issue:`672` Bug fixes ~~~~~~~~~ - Fixed :meth:`Calendar.new <icalendar.cal.calendar.Calendar.new>` to automatically generate a UID when not provided, matching the documented behavior. Previously, the documentation stated that ``uid`` would be set to a new :func:`uuid.uuid4` if ``None``, but the implementation did not generate it. :issue:`1066` - Fixed import failure in Pyodide/WebAssembly environments by using lazy initialization for timezone data in the zoneinfo provider. The library can now be imported in environments without timezone data (e.g., Cloudflare Workers, PyScript, JupyterLite). :issue:`1073` - Fixed :meth:`icalendar.caselessdict.CaselessDict.__eq__` to return ``NotImplemented`` when comparing with non-dict types instead of raising ``AttributeError``. :issue:`1016` - Fixed decoding of categories. :issue:`279` - Link ``timedelta`` to :py:class:`datetime.timedelta` in the Python standard library documentation. :issue:`951` - Fix round-trip parsing of :class:`~icalendar.prop.vCategory` (CATEGORIES property) when category values contain commas. Categories like ``'Meeting, John'`` now correctly survive round trips between :meth:`Component.to_ical <icalendar.cal.component.Component.to_ical>` and :meth:`Component.from_ical <icalendar.cal.component.Component.from_ical>` instead of being split into multiple categories. Added :func:`~icalendar.parser.split_on_unescaped_comma` helper function. :issue:`127` - Fixed semicolon escaping in vCard structured properties (ADR, N, ORG). Semicolons are now correctly treated as field separators per :rfc:`6350`, not escaped as in iCalendar TEXT values. Added :func:`~icalendar.parser.split_on_unescaped_semicolon` helper function and :class:`~icalendar.prop.vAdr`, :class:`~icalendar.prop.vN`, :class:`~icalendar.prop.vOrg` property types. :issue:`137` - Fix :meth:`Image.from_property_value <icalendar.prop.image.Image.from_property_value>` to raise ``TypeError`` instead of ``AttributeError`` when ``value.params`` isn't valid (most notably, isn't dict-like). :issue:`909` Documentation ``` - Improved docstrings and formatting for the :class:`~icalendar.alarms.AlarmTime` class. :issue:`1072` - Added how-to guide for handling parsing errors with :class:`~icalendar.prop.vBroken` and the `component.errors` attribute. :issue:`1085` - Updated 11 function docstrings in :mod:`icalendar.parser` to follow the Google Style guide, improving API documentation clarity and consistency. :issue:`1072` - Applied Google-style docstrings to :mod:`icalendar.tools` utility functions with Args, Returns, and Example sections. :issue:`1072` - Simplify contributors and add supporters in credits. :issue:`1035` - Add a section in the change log for Documentation. :issue:`1043` - Fixed multiple `more than one target found for cross-reference` warnings, and stopped using `sphinx.ext.autosectionlabel`, in documentation. :issue:`952` - Add `funding.json` manifest for funding information. :issue:`1047` - Resolved `Cannot resolve forward reference in type annotations` warning in documentation. Added `SPHINX_APIDOC_OPTIONS` to `make apidoc` command, excluding `__all__` items from being duplicated in the documentation, and rebuilt the API documentation source files. :issue:`952` - Document how to create and read attendee information in events. :issue:`130` - Add usage examples. :issue:`443` - Improve documentation contribution guide by adding chapters for small edits, builds and checks, and a style guide. Added details for Vale usage, Diátaxis framework, narrative and API documentation, and fixing all spelling errors. :issue:`991` - Document dictionary and property accessors. :issue:`124` - Moved content from the README into documentation to reduce maintenance and point to the authoritative source of information. :issue:`1006` - Added "Code conventions" section to the Development contributing guide. :issue:`1004` - Use Google style docstrings in :mod:`~icalendar.parser_tools` :issue:`1017` - Document compatibility of icalendar with RFCs. :issue:`1147` - Added Upgrade guide. :issue:`997` - Fixed links in jCal usage documentation. - Enable sphinx-issues extension. :issue:`1091` - Replaced "Arguments" and "Args" with "Parameters". :issue:`1076` - Added documentation of how to set up a development environment with git. :issue:`906` - Documented how to install and use pre-commit. :issue:`996` - Added a new rule to our docstring style guide to escape docstrings, and added a new section for type hints in the code conventions section. :issue:`1080` - Documented `__init__` methods. :issue:`1079` - Moved "Edit this page" link to above the page table of contents. :issue:`1106` - Added Good First Issue link and fixed Up For Grabs link in Contribute guide. :issue:`1095` - Updated `CONTRIBUTING.rst` to explicitly state not to use Args sections in docstrings. :issue:`1076` - Document `vInt.__new__` method parameters in class docstring with :rfc:`5545` examples. :issue:`1118` - Improved `make vale` command to provide guidance on failure or success. :issue:`1137` - Add `sphinx_copybutton` configuration to exclude line numbers, prompts, and console output when copying code blocks. - Change Sphinx configuration to convert `--` to en dash `-`, `---` to em dash `—`, and `...` to ellipsis `…`, but doesn't transform quote marks as they should be preserved. This restores cleaner and consistent rendering of docstrings in the :doc:`API Reference <../reference/api/icalendar>`. See `smartquotes_action <https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-smartquotes_action>`\_. - Fix incorrect return type annotation in :meth:`Component.from_ical <icalendar.cal.component.Component.from_ical>`. :issue:`1141` - Fixed broken links in `docs/how-to/usage.rst` documentation. Part of :issue:`1158` - Enhanced the first-time contributors section, in hopes that fewer contributors ask permission before starting work. :issue:`1165` - Changed Sphinx configuration to inherit from `CaselessDict`, displaying all of its class members in the in-page navigation. Fixed broken cross-component links in `Availability.new()`. :issue:`994` - Configured Sphinx to append the docstring from the `__init__` method into its class docstring. :issue:`1156` </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4wLjciLCJ1cGRhdGVkSW5WZXIiOiI0My4xMTAuMTAiLCJ0YXJnZXRCcmFuY2giOiJtYXN0ZXIiLCJsYWJlbHMiOltdfQ==-->
Update dependency icalendar to v7
All checks were successful
Python formatting PEP8 / Python-PEP8 (push) Successful in 11s
Test / test (pull_request) Successful in 15s
Renovate / forgejo (push) Successful in 18s
Test / test (push) Successful in 15s
9eeba8a7a0
renovate-bot force-pushed renovate/icalendar-7.x from 9eeba8a7a0
All checks were successful
Python formatting PEP8 / Python-PEP8 (push) Successful in 11s
Test / test (pull_request) Successful in 15s
Renovate / forgejo (push) Successful in 18s
Test / test (push) Successful in 15s
to f9ee320393
All checks were successful
Python formatting PEP8 / Python-PEP8 (push) Successful in 11s
Renovate / forgejo (push) Successful in 16s
Test / test (push) Successful in 15s
Test / test (pull_request) Successful in 16s
2026-02-13 17:00:57 +01:00
Compare
renovate-bot force-pushed renovate/icalendar-7.x from f9ee320393
All checks were successful
Python formatting PEP8 / Python-PEP8 (push) Successful in 11s
Renovate / forgejo (push) Successful in 16s
Test / test (push) Successful in 15s
Test / test (pull_request) Successful in 16s
to 8de2d499d7
All checks were successful
Python formatting PEP8 / Python-PEP8 (push) Successful in 11s
Renovate / forgejo (push) Successful in 18s
Test / test (push) Successful in 15s
Test / test (pull_request) Successful in 15s
2026-02-18 01:00:29 +01:00
Compare
renovate-bot force-pushed renovate/icalendar-7.x from 8de2d499d7
All checks were successful
Python formatting PEP8 / Python-PEP8 (push) Successful in 11s
Renovate / forgejo (push) Successful in 18s
Test / test (push) Successful in 15s
Test / test (pull_request) Successful in 15s
to 674a0ee98b
All checks were successful
Python formatting PEP8 / Python-PEP8 (push) Successful in 11s
Renovate / forgejo (push) Successful in 18s
Test / test (push) Successful in 16s
Test / test (pull_request) Successful in 16s
2026-04-07 02:00:34 +02:00
Compare
All checks were successful
Python formatting PEP8 / Python-PEP8 (push) Successful in 11s
Renovate / forgejo (push) Successful in 18s
Test / test (push) Successful in 16s
Test / test (pull_request) Successful in 16s
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/icalendar-7.x:renovate/icalendar-7.x
git switch renovate/icalendar-7.x

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch master
git merge --no-ff renovate/icalendar-7.x
git switch renovate/icalendar-7.x
git rebase master
git switch master
git merge --ff-only renovate/icalendar-7.x
git switch renovate/icalendar-7.x
git rebase master
git switch master
git merge --no-ff renovate/icalendar-7.x
git switch master
git merge --squash renovate/icalendar-7.x
git switch master
git merge --ff-only renovate/icalendar-7.x
git switch master
git merge renovate/icalendar-7.x
git push origin master
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
finn/reminder!129
No description provided.