pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/time/py-icalendar



Module Name:    pkgsrc
Committed By:   wiz
Date:           Sun Jun 28 14:14:29 UTC 2026

Modified Files:
        pkgsrc/time/py-icalendar: Makefile PLIST distinfo

Log Message:
py-icalendar: update to 7.2.0.

7.2.0 (2026-06-23)

Removals and deprecations

    Deprecated icalendar.parser.string.foldline() as a private
    function for icalendar version 8. @IoannaGiag (Issue #1011)

    Deprecated icalendar.parser.string.escape_char(),
    icalendar.parser.string.unescape_char(),
    icalendar.parser.string.escape_string(), and
    icalendar.parser.string.unescape_string() using the standard
    deprecate_for_version_8 wrapper as per issue #1405. (Issue
    #1405)

New features

    Created an ical_value property for the vFrequency component,
    mirroring the existing pattern on vWeekday. @mvanhorn (Issue
    #876)

    Created an ical_value property for the vGeo component. @IoannaGiag
    (Issue #876)

    Added type hints to component methods. @Priyanshu-pulak (Issue
    #938)

    Added test coverage for
    icalendar.compatibility.deprecate_for_version_8(). AI disclosure:
    I used GPT-5 Codex to help draft and refine the test and pull
    request text. I reviewed the output and validated the change
    locally. @iccccccccccccc (Issue #1407)

    The Alarm.uid accessor now falls back to vendor-specific UID
    properties (the existing X-ALARMUID and the newly added
    X-EVOLUTION-ALARM-UID) when no canonical UID is present, so
    alarms exported by Evolution/GNOME Calendar expose a usable
    identifier. single_string_property now accepts an ordered list
    of fallback keys so further vendor aliases can be added later.
    AI disclosure: I used GPT-5 Codex (via the Codex CLI) to draft
    and refine this change and its tests; I reviewed and validated
    the output locally. @mvanhorn (Issue #1421)

    The rdates and exdates properties are now writable: assigning
    a list replaces the RDATE/EXDATE values, del (or assigning an
    empty list or None) clears them, and assigning the value the
    getter returns round-trips. Prepared with the assistance of an
    AI coding agent (Anthropic's Claude). @gaoflow (Issue #1442)

Bug fixes

    Strictly validate vDatetime values in from_ical() and reject
    malformed input. This also improves handling of values with a
    TZID prefix, per RFC 5545 Section 3.3.5, Form #3. @uwezkhan
    (Issue #1361)

    Preserve an explicit VALUE parameter (for example RDATE;VALUE=PERIOD
    or TRIGGER;VALUE=DATE-TIME) when converting from jCal. Previously
    Component.from_jcal dropped the value type, which is encoded
    in the jCal type field rather than as a parameter. Prepared
    with the assistance of an AI coding agent (Anthropic's Claude
    Opus 4). @gaoflow @lcampanella98 (Issue #1426)

    For a newline-free string that the operating system can't use
    as a file path—for example, one containing an embedded null
    byte or one that is too long—treat it as calendar data, instead
    of propagating an OSError from Component.from_ical. Such input
    now raises a consistent ValueError across platforms. The
    string-versus-path boundary is now covered by tests. @uwezkhan
    (Issue #1436)

    Accept the (dt, None) form that rdates/exdates return for a
    single date when adding RDATE or EXDATE, so event.add("RDATE",
    (dt, None)) no longer raises TypeError and the value round-trips.
    Prepared with the assistance of an AI coding agent (Anthropic's
    Claude Opus 4). @gaoflow @texttheater (Issue #1439)

    Anchored the value validation regular expressions with \Z
    instead of $ in vWeekday, vDuration.from_ical, vTime and
    vUTCOffset. $ matches just before a final \n, so a value with
    a trailing line break was accepted; for vWeekday the newline
    survived in the str value and was re-emitted into RECUR output.
    @alhudz

    For iCalendar files that have thousands of bare line breaks,
    reduce the content line parse time by a quadratic order of
    magnitude when reading a component with Component.from_ical.
    @alhudz

    Parse a CATEGORIES value that contains an unescaped colon
    correctly. TEXT values do not escape :, so a category such as
    CATEGORIES:CONFIDENTIAL,http://example.com/tag was truncated
    to a single //example.com/tag because the value boundary was
    found with the last colon on the line instead of the first one
    outside the parameters. @alhudz

    Parse and serialize jCal iteratively so that deeply nested
    components no longer raise an uncaught RecursionError.
    Component.from_jcal and Component.to_jcal now handle arbitrary
    nesting depth, matching the iterative iCal parser and serializer.
    @arshsmith

    Preserve literal percent escapes in parameter values. The
    parameter parser used %2C/%3A/%3B/%5C as internal markers for
    backslash-escaped delimiters, so a value that already contained
    those sequences (e.g. ALTREP="http://x/a%2Cb";) was silently
    decoded to http://x/a,b. The internal transport encoding now
    escapes % itself, leaving real percent-encoded values untouched.
    @alhudz

    Raise InvalidCalendar instead of leaking OverflowError when a
    DURATION value is too large for datetime.timedelta, for example,
    P999999999999999999W. Parsing a whole calendar now records such
    a value as an error, like any other invalid property, rather
    than aborting the parse. @arshsmith

    Reject non-ASCII digits in vMonth (BYMONTH). str.isdigit is
    True for digits like the Arabic-Indic ١٢, which was silently
    accepted and normalized to month 12, while characters such as
    ² cleared the same guard and then leaked a raw int() error.
    vMonth.from_ical now rejects both. @alhudz

    Reject non-finite FLOAT values in vFloat.from_ical() and
    vGeo.from_ical(). Inputs such as nan, inf or an overflowing
    magnitude like 1e999 were silently accepted, producing NaN/Infinity
    tokens in Component.to_json output that are not valid JSON.
    @alhudz

    Strictly validate vDate and vTime values in their from_ical
    methods and reject malformed input, matching the strictness
    added to vDatetime. Trailing data and int() quirks (underscores,
    whitespace, signs) are no longer silently accepted, per RFC
    5545 Section 3.3.4 and RFC 5545 Section 3.3.12. This change
    was prepared with AI assistance (Anthropic Claude, Opus model,
    via Claude Code) used to research the relevant RFC grammar and
    draft the validation and tests, all reviewed and verified
    locally. @alhudz

Documentation

    Switch docs/how-to/usage.rst from the deprecated .. code::
    pycon directive to .. code-block:: pycon for consistency with
    the rest of the documentation. @mvanhorn (Issue #626)

    Added type hint for encoding parameter in data_encode().
    @cybs-joe (Issue #938)

    Converted docstring of add() to Google style. @mvanhorn (Issue
    #1072)

    Fixed broken links and removed :py prefix in
    icalendar.cal.calendar.Calendar documentation. @lcampanella98
    (Issue #1158)

    Fixed broken link and removed :py prefix in the unescape_backslash()
    docstring. @vincere-mori (Issue #1158)

    Fixed broken documentation links in icalendar.alarms and
    icalendar.cal.alarm. @lcampanella98 (Issue #1158)

    Fix unqualified cross-references in Event.start and Event.start
    docstrings. @Esneider1107 (Issue #1158)

    Fixed broken links in icalendar.cal.free_busy documentation by
    using fully qualified icalendar.cal.component.Component attribute
    targets. @tsai135 (Issue #1158)

    Qualify ambiguous cross-references and remove remaining :py
    prefixed roles. @wahajahmed010 (Issue #1158)

    Fixed broken documentation links in icalendar.cal.availability.
    @lcampanella98 (Issue #1158)

    Replaced the RFC quotation in the docstring for vBoolean with
    a Pythonic description, including parsing behavior, a conformance
    reference, and a working example. @tsai135 (Issue #1244)

    Improved the documentation for attr.url_property by converting
    raw RFC text into a comprehensive Python docstring with usage
    examples and explicit RFC cross-references. Assisting tool:
    Gemini 1.5. @samrodri911 (Issue #1244)

    Improved the LAST_MODIFIED docstring to a clearer Pythonic
    docstring. Assisting tool: Claude Haiku 4.5 @valemm13 (Issue
    #1244)

    Tidied the auto-generated property docstrings by removing the
    redundant accepted values sentence and formatting return and
    error details as Sphinx sections. @mvanhorn (Issue #1259)

    Fix Read the Docs administrative instructions in maintenance
    documentation by removing the obsolete step to check the default
    branch and adding a step to manually trigger the "latest"
    version. @stevepiercy (Issue #1397)

    Clarified that Calendar.new automatically sets not only required,
    but recommended properties too. @scop (Issue #1459)

    Add how to report security issues. @stevepiercy (Issue #1463)

    Added NixOS installation instructions to the documentation.
    @MichaelFehdrau0205

    Added instructions to Change log entry format in Contribute
    documentation for how to avoid a filename conflict when adding
    a change log entry. @stevepiercy

    Collect only documentation files for doctest. @stevepiercy

    Documented Calendar.from_ical as a direct Calendar API member
    so Sphinx can link to it from the custom components guide.
    Prepared with AI assistance. @xjn2005

Internal changes

    Added tests for FreeBusy.duration coverage. @kyriakikrimitza
    (Issue #698)

    Refactored test_error_tolerant_parsing.py to use .ics fixture
    files. @lcampanella98 (Issue #1081)

    Added .pre-commit-config.yaml configuration and documentation
    to automatically record AI prompts in commit messages with
    ai-prompt-auto-commit. @AniruthKarthik (Issue #1320)

    Support keeping a linked issue open in the pull request template
    when the pull request fixes only a part of the original issue.
    @stevepiercy (Issue #1394)

    Trigger the creation of a comment with links to Read the Docs
    of the changed files to review in a pull request preview build.
    @stevepiercy (Issue #1396)

    Add gh-profiler workflow to help triage AI-generated contributions.
    @SashankBhamidi (Issue #1484)

    Added validation test for FreeBusy.duration. @kyriakikrimitza

    Remove redundant and deprecated pull request preview feature
    on Read the Docs. We now use the RTD GitHub app, making this
    file redundant to pull request preview builds. Additionally
    the call to the old GitHub Action was deprecated on 2025-07-01,
    per its README.md. @stevepiercy

Other tasks

    Added type hints to all methods in the module error. @Priyanshu-pulak
    (Issue #938)


To generate a diff of this commit:
cvs rdiff -u -r1.62 -r1.63 pkgsrc/time/py-icalendar/Makefile
cvs rdiff -u -r1.34 -r1.35 pkgsrc/time/py-icalendar/PLIST
cvs rdiff -u -r1.53 -r1.54 pkgsrc/time/py-icalendar/distinfo

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/time/py-icalendar/Makefile
diff -u pkgsrc/time/py-icalendar/Makefile:1.62 pkgsrc/time/py-icalendar/Makefile:1.63
--- pkgsrc/time/py-icalendar/Makefile:1.62      Mon Jun 22 15:07:10 2026
+++ pkgsrc/time/py-icalendar/Makefile   Sun Jun 28 14:14:29 2026
@@ -1,6 +1,6 @@
-# $NetBSD: Makefile,v 1.62 2026/06/22 15:07:10 wiz Exp $
+# $NetBSD: Makefile,v 1.63 2026/06/28 14:14:29 wiz Exp $
 
-DISTNAME=      icalendar-7.1.3
+DISTNAME=      icalendar-7.2.0
 PKGNAME=       ${PYPKGPREFIX}-${DISTNAME}
 CATEGORIES=    time python
 MASTER_SITES=  ${MASTER_SITE_PYPI:=i/icalendar/}
@@ -24,8 +24,8 @@ REPLACE_SH+=          src/icalendar/tests/fuzzed
 REPLACE_PYTHON+=       src/icalendar/cli.py
 PY_RENAME_BINARIES=    icalendar
 
-# as of 7.1.3
-# 22 failed, 14705 passed, 28 skipped, 6 errors
+# as of 7.2.0
+# 22 failed, 15542 passed, 28 skipped, 6 errors
 # https://github.com/collective/icalendar/issues/731
 # https://github.com/collective/icalendar/issues/1493
 

Index: pkgsrc/time/py-icalendar/PLIST
diff -u pkgsrc/time/py-icalendar/PLIST:1.34 pkgsrc/time/py-icalendar/PLIST:1.35
--- pkgsrc/time/py-icalendar/PLIST:1.34 Sun May 24 18:38:05 2026
+++ pkgsrc/time/py-icalendar/PLIST      Sun Jun 28 14:14:29 2026
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.34 2026/05/24 18:38:05 wiz Exp $
+@comment $NetBSD: PLIST,v 1.35 2026/06/28 14:14:29 wiz Exp $
 bin/icalendar-${PYVERSSUFFIX}
 ${PYSITELIB}/${WHEEL_INFODIR}/METADATA
 ${PYSITELIB}/${WHEEL_INFODIR}/RECORD
@@ -272,6 +272,7 @@ ${PYSITELIB}/icalendar/tests/calendars/e
 ${PYSITELIB}/icalendar/tests/calendars/example.ics
 ${PYSITELIB}/icalendar/tests/calendars/fuzz_testcase_0_char_in_component_name.ics
 ${PYSITELIB}/icalendar/tests/calendars/fuzz_testcase_invalid_month.ics
+${PYSITELIB}/icalendar/tests/calendars/invalid_duration.ics
 ${PYSITELIB}/icalendar/tests/calendars/issue_104_broken_calendar.ics
 ${PYSITELIB}/icalendar/tests/calendars/issue_1050_all_components.ics
 ${PYSITELIB}/icalendar/tests/calendars/issue_1050_calendar_with_events_and_todos.ics
@@ -281,10 +282,21 @@ ${PYSITELIB}/icalendar/tests/calendars/i
 ${PYSITELIB}/icalendar/tests/calendars/issue_1050_simple_calendar.ics
 ${PYSITELIB}/icalendar/tests/calendars/issue_1050_timezone_only_calendar.ics
 ${PYSITELIB}/icalendar/tests/calendars/issue_1050_uid_in_description.ics
+${PYSITELIB}/icalendar/tests/calendars/issue_1081_empty_rdate.ics
+${PYSITELIB}/icalendar/tests/calendars/issue_1081_event_with_rrule.ics
+${PYSITELIB}/icalendar/tests/calendars/issue_1081_freebusy_comma_separated.ics
+${PYSITELIB}/icalendar/tests/calendars/issue_1081_invalid_rrule_freq.ics
+${PYSITELIB}/icalendar/tests/calendars/issue_1081_invalid_start_and_end.ics
+${PYSITELIB}/icalendar/tests/calendars/issue_1081_invalid_start_valid_end.ics
+${PYSITELIB}/icalendar/tests/calendars/issue_1081_list_of_properties.ics
+${PYSITELIB}/icalendar/tests/calendars/issue_1081_tzid_param.ics
+${PYSITELIB}/icalendar/tests/calendars/issue_1081_with_summary.ics
 ${PYSITELIB}/icalendar/tests/calendars/issue_1231_recurrence.ics
 ${PYSITELIB}/icalendar/tests/calendars/issue_1237_x_property.jcal
 ${PYSITELIB}/icalendar/tests/calendars/issue_1238.ics
 ${PYSITELIB}/icalendar/tests/calendars/issue_127_categories_with_commas.ics
+${PYSITELIB}/icalendar/tests/calendars/issue_1426.ics
+${PYSITELIB}/icalendar/tests/calendars/issue_1426_value_parameters.ics
 ${PYSITELIB}/icalendar/tests/calendars/issue_156_RDATE_with_PERIOD_TZID_khal.ics
 ${PYSITELIB}/icalendar/tests/calendars/issue_156_RDATE_with_PERIOD_TZID_khal_2.ics
 ${PYSITELIB}/icalendar/tests/calendars/issue_165_missing_event.ics
@@ -413,12 +425,18 @@ ${PYSITELIB}/icalendar/tests/prop/test_c
 ${PYSITELIB}/icalendar/tests/prop/test_date_and_time.py
 ${PYSITELIB}/icalendar/tests/prop/test_date_and_time.pyc
 ${PYSITELIB}/icalendar/tests/prop/test_date_and_time.pyo
+${PYSITELIB}/icalendar/tests/prop/test_duration_overflow.py
+${PYSITELIB}/icalendar/tests/prop/test_duration_overflow.pyc
+${PYSITELIB}/icalendar/tests/prop/test_duration_overflow.pyo
 ${PYSITELIB}/icalendar/tests/prop/test_identity_and_equality.py
 ${PYSITELIB}/icalendar/tests/prop/test_identity_and_equality.pyc
 ${PYSITELIB}/icalendar/tests/prop/test_identity_and_equality.pyo
 ${PYSITELIB}/icalendar/tests/prop/test_property_values.py
 ${PYSITELIB}/icalendar/tests/prop/test_property_values.pyc
 ${PYSITELIB}/icalendar/tests/prop/test_property_values.pyo
+${PYSITELIB}/icalendar/tests/prop/test_trailing_newline.py
+${PYSITELIB}/icalendar/tests/prop/test_trailing_newline.pyc
+${PYSITELIB}/icalendar/tests/prop/test_trailing_newline.pyo
 ${PYSITELIB}/icalendar/tests/prop/test_unit.py
 ${PYSITELIB}/icalendar/tests/prop/test_unit.pyc
 ${PYSITELIB}/icalendar/tests/prop/test_unit.pyo
@@ -440,6 +458,9 @@ ${PYSITELIB}/icalendar/tests/prop/test_v
 ${PYSITELIB}/icalendar/tests/prop/test_vFloat.py
 ${PYSITELIB}/icalendar/tests/prop/test_vFloat.pyc
 ${PYSITELIB}/icalendar/tests/prop/test_vFloat.pyo
+${PYSITELIB}/icalendar/tests/prop/test_vFrequency.py
+${PYSITELIB}/icalendar/tests/prop/test_vFrequency.pyc
+${PYSITELIB}/icalendar/tests/prop/test_vFrequency.pyo
 ${PYSITELIB}/icalendar/tests/prop/test_vInt.py
 ${PYSITELIB}/icalendar/tests/prop/test_vInt.pyc
 ${PYSITELIB}/icalendar/tests/prop/test_vInt.pyo
@@ -527,9 +548,15 @@ ${PYSITELIB}/icalendar/tests/rfc_9253_ic
 ${PYSITELIB}/icalendar/tests/test_bom_calendar.py
 ${PYSITELIB}/icalendar/tests/test_bom_calendar.pyc
 ${PYSITELIB}/icalendar/tests/test_bom_calendar.pyo
+${PYSITELIB}/icalendar/tests/test_categories_value_with_colon.py
+${PYSITELIB}/icalendar/tests/test_categories_value_with_colon.pyc
+${PYSITELIB}/icalendar/tests/test_categories_value_with_colon.pyo
 ${PYSITELIB}/icalendar/tests/test_cli_tool.py
 ${PYSITELIB}/icalendar/tests/test_cli_tool.pyc
 ${PYSITELIB}/icalendar/tests/test_cli_tool.pyo
+${PYSITELIB}/icalendar/tests/test_compatibility.py
+${PYSITELIB}/icalendar/tests/test_compatibility.pyc
+${PYSITELIB}/icalendar/tests/test_compatibility.pyo
 ${PYSITELIB}/icalendar/tests/test_component_register.py
 ${PYSITELIB}/icalendar/tests/test_component_register.pyc
 ${PYSITELIB}/icalendar/tests/test_component_register.pyo
@@ -558,6 +585,9 @@ ${PYSITELIB}/icalendar/tests/test_error_
 ${PYSITELIB}/icalendar/tests/test_examples.py
 ${PYSITELIB}/icalendar/tests/test_examples.pyc
 ${PYSITELIB}/icalendar/tests/test_examples.pyo
+${PYSITELIB}/icalendar/tests/test_free_busy_duration.py
+${PYSITELIB}/icalendar/tests/test_free_busy_duration.pyc
+${PYSITELIB}/icalendar/tests/test_free_busy_duration.pyo
 ${PYSITELIB}/icalendar/tests/test_funding_json.py
 ${PYSITELIB}/icalendar/tests/test_funding_json.pyc
 ${PYSITELIB}/icalendar/tests/test_funding_json.pyo
@@ -606,6 +636,12 @@ ${PYSITELIB}/icalendar/tests/test_issue_
 ${PYSITELIB}/icalendar/tests/test_issue_127_categories_comma_escaping.py
 ${PYSITELIB}/icalendar/tests/test_issue_127_categories_comma_escaping.pyc
 ${PYSITELIB}/icalendar/tests/test_issue_127_categories_comma_escaping.pyo
+${PYSITELIB}/icalendar/tests/test_issue_1426.py
+${PYSITELIB}/icalendar/tests/test_issue_1426.pyc
+${PYSITELIB}/icalendar/tests/test_issue_1426.pyo
+${PYSITELIB}/icalendar/tests/test_issue_1436_implicit_file_read.py
+${PYSITELIB}/icalendar/tests/test_issue_1436_implicit_file_read.pyc
+${PYSITELIB}/icalendar/tests/test_issue_1436_implicit_file_read.pyo
 ${PYSITELIB}/icalendar/tests/test_issue_165_missing_event.py
 ${PYSITELIB}/icalendar/tests/test_issue_165_missing_event.pyc
 ${PYSITELIB}/icalendar/tests/test_issue_165_missing_event.pyo
@@ -735,6 +771,9 @@ ${PYSITELIB}/icalendar/tests/test_issue_
 ${PYSITELIB}/icalendar/tests/test_issue_999_negative_event_duration.py
 ${PYSITELIB}/icalendar/tests/test_issue_999_negative_event_duration.pyc
 ${PYSITELIB}/icalendar/tests/test_issue_999_negative_event_duration.pyo
+${PYSITELIB}/icalendar/tests/test_jcal_recursion.py
+${PYSITELIB}/icalendar/tests/test_jcal_recursion.pyc
+${PYSITELIB}/icalendar/tests/test_jcal_recursion.pyo
 ${PYSITELIB}/icalendar/tests/test_multiple.py
 ${PYSITELIB}/icalendar/tests/test_multiple.pyc
 ${PYSITELIB}/icalendar/tests/test_multiple.pyo
@@ -744,6 +783,9 @@ ${PYSITELIB}/icalendar/tests/test_oss_fu
 ${PYSITELIB}/icalendar/tests/test_parameter_access.py
 ${PYSITELIB}/icalendar/tests/test_parameter_access.pyc
 ${PYSITELIB}/icalendar/tests/test_parameter_access.pyo
+${PYSITELIB}/icalendar/tests/test_parser_quadratic_unfolding.py
+${PYSITELIB}/icalendar/tests/test_parser_quadratic_unfolding.pyc
+${PYSITELIB}/icalendar/tests/test_parser_quadratic_unfolding.pyo
 ${PYSITELIB}/icalendar/tests/test_parsing.py
 ${PYSITELIB}/icalendar/tests/test_parsing.pyc
 ${PYSITELIB}/icalendar/tests/test_parsing.pyo

Index: pkgsrc/time/py-icalendar/distinfo
diff -u pkgsrc/time/py-icalendar/distinfo:1.53 pkgsrc/time/py-icalendar/distinfo:1.54
--- pkgsrc/time/py-icalendar/distinfo:1.53      Mon Jun 22 15:07:10 2026
+++ pkgsrc/time/py-icalendar/distinfo   Sun Jun 28 14:14:29 2026
@@ -1,5 +1,5 @@
-$NetBSD: distinfo,v 1.53 2026/06/22 15:07:10 wiz Exp $
+$NetBSD: distinfo,v 1.54 2026/06/28 14:14:29 wiz Exp $
 
-BLAKE2s (icalendar-7.1.3.tar.gz) = 35c1f6c6ad7dc6983263d4b2c426369d94ce015c8be06d3409229ba510017249
-SHA512 (icalendar-7.1.3.tar.gz) = 0c98ca1353e77488ca8d6a2d6c10bdb0518b4c0ae77047f7004b8b5f650cb80f619a17936e67e053d152812ed5e36b1585bc1d0667961b79941c8ede7441add1
-Size (icalendar-7.1.3.tar.gz) = 472734 bytes
+BLAKE2s (icalendar-7.2.0.tar.gz) = 689964ac5eb8ce527c225a882bfcbcbc0d8e06e2452ce054b8076f231bcccc83
+SHA512 (icalendar-7.2.0.tar.gz) = e8c53c2c3b062db57997955706d22e4b17b352df27abe698924467d6ad613847c02a5a66f3d44cdc8b2513de901b762521e907956e429d1c7df9e6d23f5c6967
+Size (icalendar-7.2.0.tar.gz) = 489932 bytes



Home | Main Index | Thread Index | Old Index