Skip to content

Preserve URI parameters on jCal round-trip - #1526

Merged
stevepiercy merged 3 commits into
collective:mainfrom
binggao1230:fix-vuri-jcal-parameters
Jul 17, 2026
Merged

Preserve URI parameters on jCal round-trip#1526
stevepiercy merged 3 commits into
collective:mainfrom
binggao1230:fix-vuri-jcal-parameters

Conversation

@binggao1230

Copy link
Copy Markdown
Contributor

vUri.from_jcal reconstructs a vUri from a jCal property and passed the parameters positionally:

return cls(
    jcal_property[3],
    Parameters.from_jcal_property(jcal_property),
)

But vUri.__new__(cls, value, encoding=DEFAULT_ENCODING, /, params=None) has encoding as its second positional argument (positional-only, before the /). So the Parameters object was consumed as the encoding argument and the parameters were dropped, while encoding silently received a non-string. A URI value's parameters were therefore lost on a jCal round-trip, e.g. ATTACH;FMTTYPE=text/plain or CONFERENCE;FEATURE=AUDIO.

The fix passes them as the params keyword, matching every other from_jcal that targets an encoding-taking type (e.g. vText, vInline):

return cls(
    jcal_property[3],
    params=Parameters.from_jcal_property(jcal_property),
)

vUri is the only from_jcal that had this mismatch: the other positional callers (vCategory, vGeo, adr, org) take params as their second positional, so they were unaffected.

test_uri_parameters_round_trip.py covers a single parameter, multiple parameters, ATTACH/CONFERENCE real-world cases, and jCal round-trip idempotence. Full rfc_7265_jcal suite passes (1213).

Prepared with the assistance of an AI coding agent (Anthropic's Claude Opus 4.8); I reviewed and validated the change locally.

@binggao1230
binggao1230 force-pushed the fix-vuri-jcal-parameters branch from 72cfdbb to a6a0f10 Compare July 4, 2026 21:09
@github-actions

github-actions Bot commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

Profile summary:

GitHub user: gaoflow
🟢 No concerns found with user's profile.
🟢 No concerns found with recent PR activity.
🟢 No concerns found with recent issue activity.

For a more detailed report, run `gh-profiler gaoflow`.
Full profile
GitHub user: gaoflow
🟢 No concerns found with user's profile.
   🟢 Account age: 13 years
   🟢 Profile information:
        name: Vincent Gao
        location: Paris
        email: gaobing1230@gmail.com
      Empty fields: company, blog, bio

🟢 No concerns found with recent PR activity.
   100 PRs opened in the last 21 days.
      0 opened against repos the user owns.
      0 opened against repos in publicly associated orgs.
      100 opened against external repos.

   🟢 5 of 100 external PRs closed without merging in the last 21 days.

🟢 No concerns found with recent issue activity.
   10 new issues opened in the last 21 days.
      6 opened in repos the user owns.
      0 opened in repos in publicly associated orgs.
      4 opened in external repos.

   🟢 0 external issues closed as NOT_PLANNED.
   🟢 0 external issues opened with the same title.

@read-the-docs-community

read-the-docs-community Bot commented Jul 4, 2026

Copy link
Copy Markdown

@angatha

angatha commented Jul 5, 2026

Copy link
Copy Markdown
Collaborator

Thank you for your contribution. First please follow our contributing guide. That includes, that you disclose AI use not just in the PR but also in each commit message:

In your git commit messages, you must specify both (1) which AI model and version you used, and (2) how you used it, by either including the prompts and interactions you used or summarizing them. You can automate this by using the ai-prompt-auto-commit pre-commit hook. See AI prompt automation for setup instructions.

https://icalendar.readthedocs.io/en/latest/contribute/index.html#responsible-ai-use third to last bullet point.

Note that we are working on an update of the the guideline. The relevant PR is already linked. Please have a look when it was accepted.

@angatha

angatha commented Jul 5, 2026

Copy link
Copy Markdown
Collaborator

LGTM

Comment thread news/1526.bugfix Outdated
@binggao1230

Copy link
Copy Markdown
Contributor Author

Applied your suggested wording for the changelog — thanks for the parameter/argument correction and the clearer phrasing.

Comment thread src/icalendar/prop/uri.py
@stevepiercy
stevepiercy enabled auto-merge (squash) July 17, 2026 10:35

@stevepiercy stevepiercy left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your contribution! Will automerge after CI checks pass.

@stevepiercy
stevepiercy merged commit 0ed9b5c into collective:main Jul 17, 2026
32 checks passed
@coveralls

Copy link
Copy Markdown
Collaborator

Coverage Report for CI Build 29574023220

Warning

Build has drifted: This PR's base is out of sync with its target branch, so coverage data may include unrelated changes.
Quick fix: rebase this PR. Learn more →

Coverage increased (+0.005%) to 97.906%

Details

  • Coverage increased (+0.005%) from the base build.
  • Patch coverage: 35 of 35 lines across 1 file are fully covered (100%).
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 13373
Covered Lines: 13098
Line Coverage: 97.94%
Relevant Branches: 813
Covered Branches: 791
Branch Coverage: 97.29%
Branches in Coverage %: Yes
Coverage Strength: 6.85 hits per line

💛 - Coveralls

@niccokunzmann

Copy link
Copy Markdown
Member

This has been released with v7.3.0.

pchopinet pushed a commit to JaaJSoft/workspace that referenced this pull request Aug 25, 2026
Bumps [icalendar](https://github.com/collective/icalendar) from 7.2.2 to
7.3.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/collective/icalendar/releases">icalendar's
releases</a>.</em></p>
<blockquote>
<h2>v7.3.0</h2>
<p>To view the changes, please see the <a
href="https://icalendar.readthedocs.io/en/stable/reference/changelog.html">Changelog</a>.
This release can be installed from <a
href="https://pypi.org/project/icalendar/">PyPI</a>.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/collective/icalendar/blob/main/CHANGES.rst">icalendar's
changelog</a>.</em></p>
<blockquote>
<h2>7.3.0 (2026-08-19)</h2>
<p>Removals and deprecations</p>
<pre><code>
- :attr:`vBinary.obj &lt;icalendar.prop.binary.vBinary.obj&gt;` is
deprecated in favor of :attr:`vBinary.bytes
&lt;icalendar.prop.binary.vBinary.bytes&gt;`. It is retained as a lossy
string view of the value for backward compatibility, and will be removed
in icalendar 8. The ``test_ical_value_rejects_non_base64_characters``
test was removed because :attr:`vBinary.ical_value
&lt;icalendar.prop.binary.vBinary.ical_value&gt;` no longer validates or
decodes Base64. @uwezkhan (`Issue
[#1356](collective/icalendar#1356)
&lt;https://github.com/collective/icalendar/issues/1356&gt;`_)
<p>New features</p>
<pre><code>
- Created an :meth:`~cal.journal.Journal.example` method for the
:class:`~cal.journal.Journal` component and an
:meth:`~cal.free_busy.FreeBusy.example` method for the
:class:`~cal.free_busy.FreeBusy` component, added the :rfc:`5545`
examples that they load, and documented their usage in both class
docstrings. AI assistance: Kiro CLI with the claude-opus-5 model was
used to draft this change. @Souptik96 (`Issue
[#743](collective/icalendar#743)
&amp;lt;https://github.com/collective/icalendar/issues/743&amp;gt;`_)
- Add :meth:`Alarm.new_display()
&amp;lt;icalendar.cal.alarm.Alarm.new_display&amp;gt;`,
:meth:`Alarm.new_audio()
&amp;lt;icalendar.cal.alarm.Alarm.new_audio&amp;gt;`, and
:meth:`Alarm.new_email()
&amp;lt;icalendar.cal.alarm.Alarm.new_email&amp;gt;` factory methods for
creating :rfc:`5545#section-3.6.6` VALARM components. @klouds27 (`Issue
[#865](collective/icalendar#865)
&amp;lt;https://github.com/collective/icalendar/issues/865&amp;gt;`_)
- :class:`~icalendar.prop.binary.vBinary` now stores the raw ``bytes``
of the value internally, so non-UTF-8 binary data round-trips
losslessly. With the release of icalendar 7.1.0, and previous to this
bug fix, :attr:`vBinary.ical_value
&amp;lt;icalendar.prop.binary.vBinary.ical_value&amp;gt;` Base64-decoded
the raw stored bytes and raised :class:`ValueError` for non-Base64
input. :attr:`vBinary.ical_value
&amp;lt;icalendar.prop.binary.vBinary.ical_value&amp;gt;` now returns
the raw stored bytes instead of Base64-decoding them, and no longer
raises :class:`ValueError` for non-Base64 input. @uwezkhan (`Issue
[#1356](collective/icalendar#1356)
&amp;lt;https://github.com/collective/icalendar/issues/1356&amp;gt;`_)
- Added :attr:`vBinary.bytes
&amp;lt;icalendar.prop.binary.vBinary.bytes&amp;gt;`, exposing the raw
binary value of a BINARY property. @uwezkhan (`Issue
[#1356](collective/icalendar#1356)
&amp;lt;https://github.com/collective/icalendar/issues/1356&amp;gt;`_)
- Added the :exc:`~icalendar.error.ICalParsingError` exception as a
public API for programmatic handling of iCalendar parsing failures. AI
assistance: ChatGPT was used to help debug terminal errors encountered
during development. @GAUTAMSANSWAL (`Issue
[#1536](collective/icalendar#1536)
&amp;lt;https://github.com/collective/icalendar/issues/1536&amp;gt;`_)
- Created a script to automatically generate the
:mod:`~icalendar.timezone.windows_to_olson` module from the Unicode
Consortium's CLDR GitHub repository. Added lxml as a new development
dependency. Added the target ``wo`` to the ``Makefile`` to generate the
file from the root of the repository with ``make wo``. @stevepiercy
(`Issue [#1548](collective/icalendar#1548)
&amp;lt;https://github.com/collective/icalendar/issues/1548&amp;gt;`_)
- Added :attr:`vBinary.base64data
&amp;lt;icalendar.prop.binary.vBinary.base64data&amp;gt;`, a
getter/setter for the Base64 string view of a BINARY property's value,
so callers no longer need to call :func:`base64.b64encode` or
:func:`base64.b64decode` manually. @gagana2023 (`Issue
[#1550](collective/icalendar#1550)
&amp;lt;https://github.com/collective/icalendar/issues/1550&amp;gt;`_)
- Added :attr:`Alarm.ACTION
&amp;lt;icalendar.cal.alarm.Alarm.ACTION&amp;gt;` and
:attr:`AlarmTime.action
&amp;lt;icalendar.alarms.AlarmTime.action&amp;gt;` access to the
:rfc:`5545#section-3.8.6.1` ``ACTION`` property. I used OpenAI Codex
with GPT-5 to assist with this change, then reviewed and tested the
result. @bm1016bm-svg (`Issue
[#1569](collective/icalendar#1569)
&amp;lt;https://github.com/collective/icalendar/issues/1569&amp;gt;`_)
- Record the exact CLDR commit used to generate the Windows-to-Olson
timezone mapping and fetch the mapping from that pinned revision. I used
AI to assist me with this change. @patrickswedish (`Issue
[#1575](collective/icalendar#1575)
&amp;lt;https://github.com/collective/icalendar/issues/1575&amp;gt;`_)
- Used :meth:`vBinary.from_ical()
&amp;lt;icalendar.prop.binary.vBinary.from_ical&amp;gt;` in
:attr:`Image.data &amp;lt;icalendar.prop.image.Image.data&amp;gt;` for
consistent Base64 validation, removing the manual
:func:`base64.b64decode` call. @klouds27 (`Issue
[#1638](collective/icalendar#1638)
&amp;lt;https://github.com/collective/icalendar/issues/1638&amp;gt;`_)
- Added ``REQUEST_STATUS`` property to
:class:`~icalendar.cal.event.Event`, :class:`~icalendar.cal.todo.Todo`,
:class:`~icalendar.cal.journal.Journal`, and
:class:`~icalendar.cal.free_busy.FreeBusy` with ``request_status``
parameter in ``new()`` constructors per :rfc:`5545#section-3.8.8.3`. I
used AI to assist with this change. @SemTiOne (`Issue
[#1666](collective/icalendar#1666)
&amp;lt;https://github.com/collective/icalendar/issues/1666&amp;gt;`_)
- Improved :exc:`~icalendar.error.ICalParsingError` by including
optional value, line, and line number information in exception messages
for more consistent iCalendar parsing error reporting. AI assistance:
ChatGPT was used to help debug terminal errors encountered during
development. @GAUTAMSANSWAL
- Made :exc:`~icalendar.error.JCalParsingError` inherit from
:exc:`~icalendar.error.InvalidCalendar` for consistency with
:exc:`~icalendar.error.ICalParsingError`. AI assistance: ChatGPT was
used to help debug terminal errors encountered during development.
@GAUTAMSANSWAL


Bug fixes
~~~~~~~~~

- Resolve the timezone of a &amp;quot;globally unique&amp;quot;
:rfc:`5545#section-3.2.19` ``TZID`` such as
``/freeassociation.sourceforge.net/Europe/Berlin``, which is emitted by
some clients, including libical and Evolution. :meth:`TZP.timezone
&amp;lt;icalendar.timezone.tzp.TZP.timezone&amp;gt;` now strips the
leading vendor prefix and resolves the trailing Olson identifier, so the
value is parsed as timezone-aware instead of being silently treated as
naive. Prepared with AI assistance. @vjsai (`Issue
[#313](collective/icalendar#313)
&amp;lt;https://github.com/collective/icalendar/issues/313&amp;gt;`_)
- Fixed the :file:`equivalent_timezone_ids.py` script after the call to
generate the timezone Python code was removed. @gjabell (`Issue
[#1392](collective/icalendar#1392)
&amp;lt;https://github.com/collective/icalendar/issues/1392&amp;gt;`_)
- 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.
Additionally, the ``PROXIMITY`` property (:rfc:`9074`) was treated as an
unknown value type instead of ``TEXT`` and is now recognized correctly.
AI disclosure: I used Claude Code (Anthropic's Claude Opus) to draft and
refine this change and its tests; I reviewed the output and validated
the change locally. @lcampanella98 (`Issue
[#1445](collective/icalendar#1445)
&amp;lt;https://github.com/collective/icalendar/issues/1445&amp;gt;`_)
- Ship :file:`funding.json` in PyPI source distributions so packaging
and test runs from the sdist no longer fail with
:class:`FileNotFoundError`. @Hishamkhashman1 (`Issue
[#1493](collective/icalendar#1493)
&amp;lt;https://github.com/collective/icalendar/issues/1493&amp;gt;`_)
- Avoid folding content lines between escape prefixes and their escaped
characters. AI disclosure: I used GPT-5 Codex to help draft and refine
this change and its tests; I reviewed and validated the output locally.
@kingrubic (`Issue
[#1501](collective/icalendar#1501)
&amp;lt;https://github.com/collective/icalendar/issues/1501&amp;gt;`_)
- Preserve ``URI`` value parameters on a jCal round-trip.
:meth:`vUri.from_jcal &amp;lt;icalendar.prop.uri.vUri.from_jcal&amp;gt;`
previously passed the parameters positionally, but ``vUri.__new__``
takes ``encoding`` as its second positional parameter. As a result, the
``URI`` value parameters were consumed as ``encoding`` and dropped. For
example, ``ATTACH;FMTTYPE=...`` or ``CONFERENCE;FEATURE=...`` lost their
parameters. They are now passed as the ``params`` keyword. Prepared with
the assistance of an AI coding agent (Anthropic's Claude Opus 4.8).
@gaoflow (`Issue
[#1526](collective/icalendar#1526)
&amp;lt;https://github.com/collective/icalendar/issues/1526&amp;gt;`_)
- Updated the Windows timezone mapping for ``Mountain Standard Time
(Mexico)`` to ``America/Mazatlan``, so dates after Mexico's 2022
timezone changes use the correct UTC-7 offset instead of UTC-6. Prepared
with AI assistance. @RobHannay (`Issue
[#1546](collective/icalendar#1546)
&amp;lt;https://github.com/collective/icalendar/issues/1546&amp;gt;`_)
- ``IMAGE`` properties now use their explicitly declared ``VALUE`` type
instead of always being parsed as unknown, while ``IMAGE`` without a
``VALUE`` parameter remains unknown. I used OpenAI Codex with GPT-5 to
assist with this change. @floze-the-genius (`Issue
[#1561](collective/icalendar#1561)
&amp;lt;https://github.com/collective/icalendar/issues/1561&amp;gt;`_)
- Removed ``ATTACH`` from :attr:`Alarm.singletons
&amp;lt;icalendar.cal.alarm.Alarm.singletons&amp;gt;`. An
&amp;quot;email&amp;quot; ``VALARM`` may carry more than one ``ATTACH``
per :rfc:`5545#section-3.6.6`, so ``ATTACH`` belongs in ``multiple``
only; it was previously listed in both ``singletons`` and ``multiple``.
Added a regression test that ``singletons`` and ``multiple`` are
disjoint for every registered component. Prepared with the assistance of
an AI coding agent (Anthropic's Claude Opus 4.8). @vtino17 (`Issue
[#1569](collective/icalendar#1569)
&amp;lt;https://github.com/collective/icalendar/issues/1569&amp;gt;`_)
- :attr:`Alarm.REPEAT &amp;lt;icalendar.cal.alarm.Alarm.REPEAT&amp;gt;`,
:attr:`Alarm.repeat &amp;lt;icalendar.cal.alarm.Alarm.repeat&amp;gt;`,
:attr:`Event.sequence
&amp;lt;icalendar.cal.event.Event.sequence&amp;gt;`, and
:attr:`Event.priority
&amp;lt;icalendar.cal.event.Event.priority&amp;gt;` now reject
non-integers (including booleans) with :exc:`TypeError` and negative
values with :exc:`~icalendar.error.InvalidCalendar`. @heyncth (`Issue
[#1594](collective/icalendar#1594)
&amp;lt;https://github.com/collective/icalendar/issues/1594&amp;gt;`_)
- Added the missing ``BINARY`` member to :class:`icalendar.enums.VALUE`,
per :rfc:`5545#section-3.2.20`. ``VALUE.BINARY`` previously raised
:exc:`AttributeError`. Prepared with the assistance of an AI coding
agent (Anthropic's Claude Opus 4.8). @vtino17 (`Issue
[#1607](collective/icalendar#1607)
&amp;lt;https://github.com/collective/icalendar/issues/1607&amp;gt;`_)
- A ``PERIOD`` value written with dates instead of datetimes, such as
``RDATE;VALUE=PERIOD:19970101/19970102``, was accepted when a calendar
was parsed and then raised an :exc:`AttributeError` when it was written
out again, or a :exc:`TypeError` where only one half was a date. Such a
value is now read as midnight, in the timezone of the other half where
it has one. I used AI to assist me with this change. @lcampanella98
(`Issue [#1633](collective/icalendar#1633)
&amp;lt;https://github.com/collective/icalendar/issues/1633&amp;gt;`_)
- When :func:`timezone.use_pytz
&amp;lt;icalendar.timezone.use_pytz&amp;gt;` was in effect, a date
parsed with a ``TZID``, such as
``RDATE;TZID=America/New_York;VALUE=DATE:19970101``, was given the
timezone's oldest known offset, its local mean time, so the value was
minutes off. It is now read with the offset that applied on that date.
Calendars read with zoneinfo, the default, were not affected. I used AI
to assist me with this change. @lcampanella98 (`Issue
[#1633](collective/icalendar#1633)
&amp;lt;https://github.com/collective/icalendar/issues/1633&amp;gt;`_)
- Escape a lone ``\r`` as ``\n`` in
``icalendar.parser.string._escape_char``, used by :meth:`vText.to_ical
&amp;lt;icalendar.prop.text.vText.to_ical&amp;gt;`. A carriage return
not followed by a line feed was previously left raw in the serialized
content line, so a ``SUMMARY`` or ``DESCRIPTION`` built from untrusted
text could carry a control character into the iCalendar stream and split
the line for lenient consumers. ``\r\n`` and ``\n`` were already
escaped, and the parameter escaper already mapped ``\r`` to ``^n``.
@alhudz (`Pull Request
[#1462](collective/icalendar#1462)
&amp;lt;https://github.com/collective/icalendar/pull/1462&amp;gt;`_)
- Reject non-ASCII digits in the ``ordwk`` part of
:class:`~icalendar.prop.recur.weekday.vWeekday` (``BYDAY``,
``BYWEEKDAY``, and ``WKST``). The value validation regular expression
``\d`` matches non-ASCII digits, such as the Arabic-Indic ``١٢``. A
value such as ``١٢MO`` was silently accepted as ``relative == 12``,
instead of being rejected, as required by :rfc:`5545#section-3.3.10`
(``ordwk = 1*2DIGIT``). This mirrors the earlier
:class:`~icalendar.prop.recur.month.vMonth` fix. Drafted with AI
assistance (Claude Opus 4.8); reviewed, tested, and verified by the
author. @Labib-Bin-Salam
- Reject raw CR and LF in :class:`~icalendar.prop.uri.vUri`,
:class:`~icalendar.prop.cal_address.vCalAddress`,
:class:`~icalendar.prop.inline.vInline`, and
:class:`~icalendar.prop.xml_reference.vXmlReference`. These value types
are not escaped on serialization, so a lone ``\r`` in the value was
written straight into the content line, slipping past the newline-only
assertion in ``Contentline`` and reparsing as a separate property. This
was reachable from untrusted jCal via ``URL``, ``ATTENDEE``, and
``ORGANIZER``. @alhudz
- jCal property names, parameter names, and ``RRULE`` part names are now
validated as lowercase iCalendar tokens when parsing jCal (RFC 7265
sections :rfc:`7265#section-3.4`, :rfc:`7265#section-3.5`, and
:rfc:`7265#section-3.6.10`). They were kept verbatim and re-emitted into
the content line on serialization, so a name containing ``:``, ``;``, or
a lone carriage return could inject parameters or a new content line for
consumers that treat a bare ``\r`` as a break. @alhudz


Documentation
&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;... (truncated)&lt;/p&gt;
&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;Commits&lt;/summary&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a
href=&quot;collective/icalendar@138c8453db34fbb584bbcbc592fd7bd4b972e8ef&quot;&gt;&lt;code&gt;138c845&lt;/code&gt;&lt;/a&gt;
remove duplicated news fragment&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;collective/icalendar@933ff2c789dab88e9fde0e249bcdec832dc1e5e4&quot;&gt;&lt;code&gt;933ff2c&lt;/code&gt;&lt;/a&gt;
Merge main into 7.x&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;collective/icalendar@849919f4f6e9de4f684fcc2c391d347bdfada0e8&quot;&gt;&lt;code&gt;849919f&lt;/code&gt;&lt;/a&gt;
version 7.3.0&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;collective/icalendar@8d20a43036fd5acbc5a36f9e885dbdc3267462cd&quot;&gt;&lt;code&gt;8d20a43&lt;/code&gt;&lt;/a&gt;
move breaking change to feature (&lt;a
href=&quot;https://redirect.github.com/collective/icalendar/issues/1685&quot;&gt;#1685&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;collective/icalendar@bc179116e63a2447adf77de66034bd3d2078b9f3&quot;&gt;&lt;code&gt;bc17911&lt;/code&gt;&lt;/a&gt;
[docs] Fix unqualified cross-references in Todo docstrings (&lt;a
href=&quot;https://redirect.github.com/collective/icalendar/issues/1678&quot;&gt;#1678&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;collective/icalendar@698624cacf4b48244a82acb3cc60de9cd0f33750&quot;&gt;&lt;code&gt;698624c&lt;/code&gt;&lt;/a&gt;
Add REQUEST-STATUS property (&lt;a
href=&quot;https://redirect.github.com/collective/icalendar/issues/1672&quot;&gt;#1672&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;collective/icalendar@82b19379a16cea095659efc0f132d3b3b4ad1dba&quot;&gt;&lt;code&gt;82b1937&lt;/code&gt;&lt;/a&gt;
Add return type hint to use_default (&lt;a
href=&quot;https://redirect.github.com/collective/icalendar/issues/1665&quot;&gt;#1665&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;collective/icalendar@514be871254a99ebbd35b72e9f155afa1f67431e&quot;&gt;&lt;code&gt;514be87&lt;/code&gt;&lt;/a&gt;
fix: validate non-negative integer values for repeat, sequence, priority
(&lt;a
href=&quot;https://redirect.github.com/collective/icalendar/issues/1598&quot;&gt;#1598&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;collective/icalendar@069e672ace766b3ed0db171d5fab5bbf40c3b864&quot;&gt;&lt;code&gt;069e672&lt;/code&gt;&lt;/a&gt;
Rename timezone_datetime_property to _timezone_datetime_property (&lt;a
href=&quot;https://redirect.github.com/collective/icalendar/issues/1011&quot;&gt;#1011&lt;/a&gt;)
(&lt;a
href=&quot;https://redirect.github.com/collective/icalendar/issues/1675&quot;&gt;#1675&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a
href=&quot;collective/icalendar@b83927513910b6cbe740e8ab52d21c03a004d06a&quot;&gt;&lt;code&gt;b839275&lt;/code&gt;&lt;/a&gt;
chore(deps): bump github/codeql-action/upload-sarif from
ea14db8afdef5d462e69...&lt;/li&gt;
&lt;li&gt;Additional commits viewable in &lt;a
href=&quot;collective/icalendar@v7.2.2...v7.3.0&quot;&gt;compare
view&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/details&gt;

&lt;br /&gt;</code></pre>


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=icalendar&package-manager=uv&previous-version=7.2.2&new-version=7.3.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
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.

5 participants