Skip to content

chore(deps): update icalendar to v7#440

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/icalendar-7.x
Open

chore(deps): update icalendar to v7#440
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/icalendar-7.x

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented Feb 18, 2026

This PR contains the following updates:

Package Change Age Confidence
icalendar (changelog) >=5,<7>=7,<8 age confidence

Release Notes

collective/icalendar (icalendar)

v7.1.0

Compare Source

Minor changes


- Deprecate ``icalendar.parser.escape_string`` and ``icalendar.parser.unescape_string`` for icalendar version 8. Use ``_escape_string`` and ``_unescape_string`` internally. :issue:`1011`
- Added behavioral tests for :class:`~icalendar.cal.lazy.LazyCalendar` covering serialization round-trips, ``.todos``, ``.journals``, forward timezone references, and ``with_uid()`` substring false-positives. :issue:`1050`
- Added edge case tests for :class:`~icalendar.prop.conference.Conference` parameter normalization covering string passthrough, empty list filtering, and ``None`` omission. :issue:`925`
- Make icalendar an explicit editable install for clarity. :pr:`1268`
- Do not run some tests until a pull request is approved. :pr:`1246`
- Mark skipped CI tasks as skipped instead of running them. :issue:`1286`
- Created an :meth:`~icalendar.prop.boolean.vBoolean.ical_value` property for the :class:`~icalendar.prop.boolean.vBoolean` component. :issue:`876`
- Created an :meth:`~icalendar.prop.float.vFloat.ical_value` property for the :class:`~icalendar.prop.float.vFloat` component. :issue:`876`
- Created an :meth:`~icalendar.prop.integer.vInt.ical_value` property for the :class:`~icalendar.prop.integer.vInt` component. :issue:`876`
- Created an :meth:`~icalendar.prop.binary.vBinary.ical_value` property for the :class:`~icalendar.prop.binary.vBinary` component. :issue:`876`
- Put the link check as the last documentation CI task, allowing the documentation build and Vale to run first and fail faster. :pr:`1295`
- Extended :func:`~icalendar.timezone.tzp.TZP.localize` to support localizing both :class:`datetime.datetime` and :class:`datetime.time` objects, returning timezone-aware :class:`datetime.time` objects for the latter. :issue:`1142`
- Add type hints to tests directory functions. :issue:`938`
- Update to Contributor Covenant 3.0 Code of Conduct, hosted at https://pycal.org/code-of-conduct/.

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

- Added :class:`~icalendar.cal.lazy.LazyCalendar` for lazy parsing of subcomponents. :issue:`158`, :issue:`1050`
- Updated :func:`icalendar.prop.dt.time.vTime.from_ical` to support parsing time values with TZID parameters, returning timezone-aware :class:`datetime.time` objects. :issue:`1142`
- Added ``subcomponents`` parameter to :meth:`Component.new <icalendar.cal.component.Component.new>`, :meth:`Event.new <icalendar.cal.event.Event.new>`, :meth:`Todo.new <icalendar.cal.todo.Todo.new>`, and :meth:`Availability.new <icalendar.cal.availability.Availability.new>`. :issue:`1065`
- Switch to uv for development. :issue:`1102`

Bug fixes
~~~~~~~~~

- Allow lenient parsing of content lines with optional whitespace around property and parameter delimiters (for example, ``REFRESH - INTERVAL; VALUE = DURATION:PT48H``) when parsing calendars with ``strict=False``. :issue:`351`
- X-properties with a ``VALUE`` parameter are now parsed using the correct type instead of falling back to :class:`~icalendar.prop.unkown.vUnknown`. :issue:`1238`
- Test that the ``DURATION`` property catches :class:`datetime.timedelta` objects without vProperty wrappers. :issue:`884`
- Fixed :func:`~icalendar.attr.get_end_property` to avoid allowing the creating of VEVENT components with negative durations. Only VTODO components are allowed to have negative durations. :issue:`999`
- GitHub Actions: conditional tests now show as "skipped" instead of "pending". :issue:`1264`
- Fixed :meth:`Component.__eq__ <icalendar.cal.component.Component.__eq__>` method not being commutative when comparing subcomponents. :issue:`1224`
- Verified that the ``VALUE`` parameter of jCal components is used for the type of the component property. :issue:`1237`
- Fix :func:`~icalendar.parser.string.escape_char` handling of ``bytes`` input by converting with :func:`icalendar.parser_tools.to_unicode` before escaping. :issue:`1226`
- Fixed ``RecursionError`` in ``walk()``, ``property_items()``, and ``to_ical()`` by using iterative implementations for component traversal and property extraction. :pr:`1348`

Documentation
  • Convert docstring of :func:~icalendar.param.string_parameter to Google style. :issue:1072, :pr:1316
  • Run sphinx-build with -W to turn warnings into errors. :issue:1306
  • Added sphinx-llms-txt <https://sphinx-llms-txt.readthedocs.io/en/stable/>_ extension to generate :file:llms.txt and :file:llms-full.txt files for AI/LLM documentation consumption. :issue:1302
  • Fixed CI Vale check reporting and resolved Vale errors. :issue:1277
  • Include :file:Makefile in documentation workflow path filters so documentation CI runs when Makefile logic changes, and keep Vale failures visible in CI output. :issue:1277
  • Document how to install icalendar on Alpine Linux. :pr:1290
  • Add documentation for usage of the Sphinx extension sphinx-icalendar <https://sphinx-icalendar.readthedocs.io/en/latest/>_. :pr:1268
  • Add Repology badge and distribution installation instructions to install documentation. :issue:1119
  • Updated references to :class:~icalendar.prop.uri.vUri and :class:~icalendar.enums.RELTYPE classes in :file:attr.py. :issue:1158
  • Convert docstrings in :file:attr.py and :file:cal/calendar.py to Google Style format. :issue:1072
  • Explained import shortcuts in :doc:../explanation/api-design documentation. :issue:1161
  • Added tutorial for creating a calendar with events with attendees. :pr:1262
  • Added recognition of NLnet Foundation for its funding and Open Collective for donations to the documentation footer. :issue:1214
  • Documented vText properties according to :rfc:5545#section-3.3.11. :issue:742
  • Convert docstrings in :mod:icalendar.caselessdict to Google Style format with Parameters, Returns, Raises, and Example sections as appropriate. :issue:1072
  • Fix broken docstring for :meth:~icalendar.cal.component.Component.add_component link in :attr:~icalendar.cal.availability.Availability.available. :issue:1158
  • Revise AI policy, per NLnet advice. See discussion under pycal.org issue #&#8203;24 <https://github.com/pycalendar/pycal.org/issues/24>_.
  • Add documentation for how to use uv for development. :issue:1102
  • Reorganize Design documentation. :issue:1292
  • Improve docstring for categories_property, which renders to HTML in :attr:Calendar.categories <icalendar.cal.calendar.Calendar.categories>, :attr:Event.categories <icalendar.cal.event.Event.categories>, :attr:Journal.categories <icalendar.cal.journal.Journal.categories>, and :attr:Todo.categories <icalendar.cal.todo.Todo.categories>. :issue:1244
  • Fixed Python object cross-references in icalendar.cal.component.Component._infer_value_type. :issue:1158, :pr:1344

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

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

@renovate renovate Bot force-pushed the renovate/icalendar-7.x branch 2 times, most recently from 8130006 to 4914435 Compare March 2, 2026 21:33
@renovate renovate Bot force-pushed the renovate/icalendar-7.x branch 2 times, most recently from e06cf98 to 77cdccd Compare March 13, 2026 12:02
@renovate renovate Bot force-pushed the renovate/icalendar-7.x branch from 77cdccd to 5ddc9cf Compare March 26, 2026 18:51
@renovate renovate Bot force-pushed the renovate/icalendar-7.x branch from 5ddc9cf to a077b75 Compare April 30, 2026 16:00
@renovate renovate Bot force-pushed the renovate/icalendar-7.x branch from a077b75 to 4c29e04 Compare May 8, 2026 04:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants