Merge pull request #894 from rudis/main

Workaround broken ICS files with empty RDATE
pull/896/head
Nicco Kunzmann 2025-09-16 23:15:35 +02:00 zatwierdzone przez GitHub
commit 9d1175c3a6
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
4 zmienionych plików z 25 dodań i 0 usunięć

Wyświetl plik

@ -25,6 +25,8 @@ Minor changes:
- Add improved setters for ``start``, ``duration``, and ``end`` properties with explicit locking mechanisms to provide more flexible property manipulation while maintaining RFC 5545 compliance. The implementation includes comprehensive test coverage to ensure proper behavior and backward compatibility.
- Add ``new()`` method to ``vCalAddress`` class for consistent API usage. The method supports all RFC 5545 parameters including ``CN``, ``CUTYPE``, ``DELEGATED-FROM``, ``DELEGATED-TO``, ``DIR``, ``LANGUAGE``, ``PARTSTAT``, ``ROLE``, ``RSVP``, and ``SENT-BY``, with automatic ``mailto:`` prefix handling. See `Issue 870 <https://github.com/collective/icalendar/issues/870>`_.
- Refactor ``set_duration`` methods in ``Event`` and ``Todo`` classes to eliminate code duplication by extracting common logic into shared ``set_duration_with_locking()`` function in ``icalendar.attr``. See `Issue 886 <https://github.com/collective/icalendar/issues/886>`_.
- Make coverage submission optional for CI
- Accept and ignore non-standard empty ``RDATE`` fields when parsing ICS files.
- Improve contributing documentation by adding a change log requirement, adding a pull request template, adding clear CI enforcement warnings, and updating ``README.rst``. See `Issue 890 <https://github.com/collective/icalendar/issues/890>`_.
- Make coverage submission optional for CI.
- Bump ``actions/setup-python`` version from 5 to 6 for CI.

Wyświetl plik

@ -90,6 +90,7 @@ Contributors
- `Sashank Bhamidi <https://github.com/SashankBhamidi>`_
- `Serif OZ <https://github.com/SerifOZ>`_
- Sidnei da Silva <sidnei@enfoldsystems.com>
- Simon Ruderich <simon@ruderich.org>
- `Soham Dutta <https://github.com/NP-compete>`_
- spanktar <spanky@kapanka.com>
- Stanislav Láznička <slaznick@redhat.com>

Wyświetl plik

@ -379,6 +379,9 @@ class Component(CaselessDict):
parsed_components = [
factory(factory.from_ical(vals, params["TZID"]))
]
# Workaround broken ICS files with empty RDATE
elif name == "RDATE" and vals == "":
parsed_components = []
else:
parsed_components = [factory(factory.from_ical(vals))]
except ValueError as e:

Wyświetl plik

@ -0,0 +1,19 @@
BEGIN:VCALENDAR
PRODID:-//Events Calendar//iCal4j 1.0//EN
CALSCALE:GREGORIAN
VERSION:2.0
METHOD:PUBLISH
BEGIN:DAYLIGHT
TZNAME:CEST
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
DTSTART:19160430T230000
RDATE:
RDATE:
RDATE:
RDATE:
RDATE:
RDATE:
RDATE:
END:DAYLIGHT
END:VCALENDAR