+
    ¾¾jÈ  ã                   óÐ   € R t ^ RIt^ RIHt ^ RIHtHtHtHtH	t	 R t
R tR tR tR tR	 tR
 tR tR tR tR tR tR tR tR tR t]P4                  R 4       tR tR tR tR# )z4Tests for error-tolerant parsing of property values.N)ÚBrokenCalendarProperty)ÚvBrokenÚ	vDDDListsÚ	vDDDTypesÚvRecurÚvTextc                óÔ   € V P                   pVP                  R4      ^ ,          pVR,          p\        V\        4      '       g   Q hVR,          R.8X  g   Q hVR,          ^
.8X  g   Q hR# )z<Verify properties are parsed immediately during from_ical().ÚVEVENTÚRRULEÚFREQÚDAILYÚCOUNTN)Úissue_1081_event_with_rruleÚwalkÚ
isinstancer   ©Ú	calendarsÚcalÚeventÚrrules   &   Új/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/icalendar/tests/test_error_tolerant_parsing.pyÚ"test_properties_parsed_immediatelyr   	   sf   € ð ×
/Ñ
/€CØ�H‰H�XÓ˜qÕ!€Eà�'�N€EÜ�eœV×$Ò$Ð$Ð$Ø��=˜W˜IÔ%Ð%Ð%Ø��>˜b˜TÔ!Ð!Ò!ó    c                ó”   € V P                   pVP                  R4      ^ ,          pVR,          pVP                  R,          R8X  g   Q hR# )z2Verify params are accessible on parsed properties.r	   ÚDTSTARTÚTZIDzAmerica/New_YorkN)Úissue_1081_tzid_paramr   Úparams©r   r   r   Údtstarts   &   r   Útest_params_accessibler       sD   € ð ×
)Ñ
)€CØ�H‰H�XÓ˜qÕ!€Eà�IÕ€Gà�>‰>˜&Õ!Ð%7Ô7Ð7Ò7r   c                óÄ  € V P                   pVP                  R4      ^ ,          pVR,          p\        V\        4      '       g   Q h\        V\        4      '       g   Q h\        V4      R8X  g   Q hVP                  R8X  g   Q hVP                  f   Q hVP                  f   Q h\        VP                  4      ^8X  g   Q hVP                  ^ ,          ^ ,          R8X  g   Q hR# )z.Verify broken properties fall back to vBroken.r	   r   úINVALID-DATEN)Úbroken_dtstartr   r   r   r   ÚstrÚproperty_nameÚexpected_typeÚparse_errorÚlenÚerrorsr   s   &   r   Ú%test_broken_property_vbroken_fallbackr*       sÎ   € à
×
"Ñ
"€CØ�H‰H�XÓ˜qÕ!€Eà�IÕ€Gô �gœw×'Ò'Ð'Ð'Ü�gœu×%Ò%Ð%Ð%Üˆw‹<˜>Ô)Ð)Ð)à× Ñ  IÔ-Ð-Ð-Ø× Ñ Ò,Ð,Ð,Ø×ÑÒ*Ð*Ð*äˆu�|‰|Ó Ô!Ð!Ð!Ø�<‰<˜�?˜1Õ Ô*Ð*Ò*r   c                óB  € V P                   pVP                  R4      ^ ,          pVR,          p\        V\        4      '       g   Q hVP                  P
                  R8X  g   Q hVR,          p\        V\        4      '       g   Q hVR,          p\        V4      R8X  g   Q hR# )z<Verify one broken property doesn't prevent accessing others.r	   ÚDTENDéé  r   ÚSUMMARYú
Test EventN)Ú"issue_1081_invalid_start_valid_endr   r   r   ÚdtÚyearr   r$   )r   r   r   Údtendr   Úsummarys   &     r   Ú(test_broken_property_doesnt_block_othersr5   4   s‹   € à
×
6Ñ
6€CØ�H‰H�XÓ˜qÕ!€Eà�'�N€EÜ�eœY×'Ò'Ð'Ð'Ø�8‰8�=‰=˜DÔ Ð Ð à�IÕ€GÜ�gœw×'Ò'Ð'Ð'à�IÕ€GÜˆw‹<˜<Ô'Ð'Ò'r   c                ót   € V P                   pVP                  4       pRV9   g   Q hRV9   g   Q hRV9   g   Q hR# )z1Verify to_ical() works correctly with properties.s   DTSTART:20250101T100000Zs   RRULE:FREQ=DAILY;COUNT=10s   SUMMARY:Test EventN)r   Úto_ical)r   r   Úoutputs   &  r   Útest_property_to_icalr9   D   sB   € à
×
/Ñ
/€Cà�[‰[‹]€Fà&¨&Ô0Ð0Ð0Ø'¨6Ô1Ð1Ð1Ø  FÔ*Ð*Ò*r   c                ó,  € V P                   pVP                  R4      ^ ,          pVR,          p\        V\        4      '       g   Q h\	        V4      ^8X  g   Q h\
        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       g   Q hR# )z*Verify lists of properties work correctly.r	   ÚEXDATEc              3   óB   "  € T F  p\        V\        4      x € K  	  R # 5i)N)r   r   )Ú.0r1   s   & r   Ú	<genexpr>Ú3test_multiple_properties_in_list.<locals>.<genexpr>X   s   é € Ð;±7¨RŒz˜"œi×(Ð(³7ùs   ‚FTN)Úissue_1081_list_of_propertiesr   r   Úlistr(   Úall)r   r   r   Úexdatess   &   r   Ú test_multiple_properties_in_listrD   O   su   € à
×
1Ñ
1€CØ�H‰H�XÓ˜qÕ!€Eà�H�o€Gä�gœt×$Ò$Ð$Ð$Üˆw‹<˜1ÔÐÐß‹3Ñ;±7Ó;�3�3Š3Ñ;±7Ó;×;Ò;Ð;Ò;r   c                ó>  € V P                   pVP                  R4      ^ ,          pVR,          p\        V\        4      '       g   Q hVP                  P
                  R8X  g   Q hVP                  P                  ^8X  g   Q hVP                  P                  ^8X  g   Q hR# )z+Verify TZID parameter is handled correctly.r	   r   r-   N)r   r   r   r   r1   r2   ÚmonthÚdayr   s   &   r   Útest_property_with_tzidrH   [   sƒ   € ð ×
)Ñ
)€CØ�H‰H�XÓ˜qÕ!€Eà�IÕ€Gä�gœy×)Ò)Ð)Ð)Ø�:‰:�?‰?˜dÔ"Ð"Ð"Ø�:‰:×Ñ˜qÔ Ð Ð Ø�:‰:�>‰>˜QÔÐÒr   c                ó´   € V P                   pVP                  R4      ^ ,          pVR,          p\        V\        4      '       g   Q h\	        V4      ^8X  g   Q hR# )zHVerify FREEBUSY comma-separated values work with error-tolerant parsing.Ú	VFREEBUSYÚFREEBUSYN)Ú#issue_1081_freebusy_comma_separatedr   r   rA   r(   )r   r   ÚfbÚfreebusys   &   r   Ú$test_freebusy_comma_separated_valuesrO   i   sP   € ð ×
7Ñ
7€CØ	�‰�+Ó	˜qÕ	!€Bà�*�~€Hä�h¤×%Ò%Ð%Ð%Üˆx‹=˜AÔÐÒr   c                ó`   € V P                   pVP                  R4      ^ ,          pRV9  g   Q hR# )z0Verify empty RDATE values are handled correctly.r	   ÚRDATEN)Úissue_1081_empty_rdater   ©r   r   r   s   &  r   Útest_empty_rdate_workaroundrT   u   s.   € à
×
*Ñ
*€CØ�H‰H�XÓ˜qÕ!€Eà˜%ÔÐÒr   c                óð   € V P                   pVP                  R4      ^ ,          pVR,          pR\        V4      9   g   Q hR\        V4      9   g   Q hR\        V4      9   g   Q hR\        V4      9   g   Q hR# )z&Verify vBroken repr includes metadata.r	   r   r   r"   r&   r%   N)r#   r   Úreprr   s   &   r   Útest_vbroken_reprrW   }   sr   € à
×
"Ñ
"€CØ�H‰H�XÓ˜qÕ!€Eà�IÕ€Gàœ˜W›Ô%Ð%Ð%ØœT '›]Ô*Ð*Ð*Øœd 7›mÔ+Ð+Ð+Øœd 7›mÔ+Ð+Ò+r   c                óÈ   € V P                   pVP                  R4      ^ ,          pVR,          p\        V\        4      '       g   Q h\	        VP
                  4      ^ 8”  g   Q hR# )z'Verify ignore_exceptions flag behavior.r	   r   N)r#   r   r   r   r(   r)   r   s   &   r   Ú%test_ignore_exceptions_flag_respectedrY   Š   sV   € ð ×
"Ñ
"€CØ�H‰H�XÓ˜qÕ!€Eà�IÕ€GÜ�gœw×'Ò'Ð'Ð'Üˆu�|‰|Ó˜qÔ Ð Ò r   c                ó„   € V P                   pVP                  R4      ^ ,          pVR,          p\        V4      R8X  g   Q hR# )zVerify __str__ works.r	   r.   r/   N)Úissue_1081_with_summaryr   r$   )r   r   r   r4   s   &   r   Útest_property_strr\   •   s<   € à
×
+Ñ
+€CØ�H‰H�XÓ˜qÕ!€Eà�IÕ€GÜˆw‹<˜<Ô'Ð'Ò'r   c                óö   € V P                   pVP                  R4      ^ ,          pVR,          p\        V\        4      '       g   Q hVP                  R8X  g   Q hVP
                  f   Q hVP                  f   Q hR# )z+Verify vBroken stores parse error metadata.r	   r   N)r#   r   r   r   r%   r&   r'   r   s   &   r   Útest_vbroken_metadatar^   ž   su   € à
×
"Ñ
"€CØ�H‰H�XÓ˜qÕ!€EØ�IÕ€Gä�gœw×'Ò'Ð'Ð'Ø× Ñ  IÔ-Ð-Ð-Ø× Ñ Ò,Ð,Ð,Ø×ÑÒ*Ð*Ò*r   c                ó
  € V P                   pVP                  R4      ^ ,          p\        VP                  4      ^8X  g   Q hVP                  ^ ,          ^ ,          R8X  g   Q hVP                  ^,          ^ ,          R8X  g   Q hR# )z@Verify errors available after from_ical without property access.r	   r   r,   N)Ú issue_1081_invalid_start_and_endr   r(   r)   rS   s   &  r   Ú!test_errors_populated_immediatelyra   ª   so   € à
×
4Ñ
4€CØ�H‰H�XÓ˜qÕ!€Eô ˆu�|‰|Ó Ô!Ð!Ð!Ø�<‰<˜�?˜1Õ Ô*Ð*Ð*Ø�<‰<˜�?˜1Õ Ô(Ð(Ò(r   c                óh  € V P                   pVP                  R4      ^ ,          pVR,          p\        V\        4      '       g   Q h\	        VP
                  4      ^8¼  g   Q h\        ;QJ d&    R VP
                   4       F  '       g   K   RM	  RM! R VP
                   4       4      '       g   Q hR# )zÄVerify TypeError exceptions are caught in error-tolerant mode.

This test addresses the concern raised in PR #1044 review that
TypeError exceptions should be handled consistently with ValueError.
r	   r
   c              3   ó:   "  € T F  pR V^ ,          9   x € K  	  R# 5i)r
   N© )r=   Úerrors   & r   r>   Ú;test_typeerror_handling_in_tolerant_mode.<locals>.<genexpr>Ä   s   é € Ð=± uˆw˜% �(Ö"³ùs   ‚TFN)Úissue_1081_invalid_rrule_freqr   r   r   r(   r)   Úanyr   s   &   r   Ú(test_typeerror_handling_in_tolerant_moderi   µ   s„   € ð ×
1Ñ
1€CØ�H‰H�XÓ˜qÕ!€Eà�'�N€EÜ�eœW×%Ò%Ð%Ð%äˆu�|‰|Ó Ô!Ð!Ð!ß‹3Ñ=°·²Ó=�3�3Š3Ñ=°·²Ó=×=Ò=Ð=Ò=r   c                óÔ   € V P                   pVP                  R4      ^ ,          pVR,          p\        V\        4      '       g   Q h\        VP                  \
        4      '       g   Q hR# )z=Verify parse_error stores the actual exception, not a string.r	   r   N)r#   r   r   r   r'   Ú	Exceptionr   s   &   r   Ú$test_parse_error_is_exception_objectrl   Ç   sV   € à
×
"Ñ
"€CØ�H‰H�XÓ˜qÕ!€EØ�IÕ€Gä�gœw×'Ò'Ð'Ð'Ü�g×)Ñ)¬9×5Ò5Ð5Ò5r   c                  ó2   € \        R RR\        R4      R7      # )ÚINVALIDr   r   z	bad value)r%   r&   r'   )r   Ú
ValueErrorrd   r   r   Úbrokenrp   Ñ   s    € äØØØ!Ü˜{Ó+ô	ð r   c                óV  € \         P                  ! \        4      ;_uu_ 4       pV P                   RRR4       XP                  P
                  V P                  J g   Q hR\        VP                  4      9   g   Q hR\        VP                  4      9   g   Q hR#   + '       g   i     Lp; i)zBVerify accessing missing attributes raises BrokenCalendarProperty.Nr   r   )ÚpytestÚraisesr   r1   ÚvalueÚ	__cause__r'   r$   )rp   Úexc_infos   & r   Ú4test_vbroken_getattr_raises_broken_calendar_propertyrw   Û   sw   € ä	�ŠÔ-×	.Ô	.°(Ø�	Š	÷ 
/ð �>‰>×#Ñ# v×'9Ñ'9Ó9Ð9Ð9Øœ˜HŸN™NÓ+Ô+Ð+Ð+Øœ#˜hŸn™nÓ-Ô-Ð-Ò-÷ 
/×	.ús   £BÂB(	c                óú   € V P                   R8X  g   Q hV P                  R8X  g   Q h\        V P                  \        4      '       g   Q h\        V P
                  \        4      '       g   Q hV P                  f   Q hR# )z/Verify normal attributes still work on vBroken.r   r   N)r%   r&   r   r'   ro   r   ÚdictÚencoding)rp   s   &r   Ú2test_vbroken_getattr_preserves_existing_attributesr{   å   sj   € à×Ñ 9Ô,Ð,Ð,Ø×Ñ ;Ô.Ð.Ð.Ü�f×(Ñ(¬*×5Ò5Ð5Ð5Ü�f—m‘m¤T×*Ò*Ð*Ð*Ø�?‰?Ò&Ð&Ò&r   c                ó  € V P                   pVP                  R4      ^ ,          p\        P                  ! \        4      ;_uu_ 4       pVP
                   RRR4       XP                  P                  f   Q hR#   + '       g   i     L,; i)zEVerify event.DTSTART raises BrokenCalendarProperty for broken values.r	   N)r#   r   rr   rs   r   r   rt   ru   )r   r   r   rv   s   &   r   Ú2test_event_dtstart_raises_broken_calendar_propertyr}   î   s_   € à
×
"Ñ
"€CØ�H‰H�XÓ˜qÕ!€Eä	�ŠÔ-×	.Ô	.°(Ø�Š÷ 
/ð �>‰>×#Ñ#Ò/Ð/Ò/÷ 
/×	.ús   ÁA8Á8B	)Ú__doc__rr   Úicalendar.errorr   Úicalendar.propr   r   r   r   r   r   r    r*   r5   r9   rD   rH   rO   rT   rW   rY   r\   r^   ra   ri   rl   Úfixturerp   rw   r{   r}   rd   r   r   Ú<module>r‚      s‹   ðÙ :ã å 2ß GÕ Gò	"ò8ò+ò((ò +ò	<òò	ò ò
,ò!ò(ò	+ò)ò>ò$6ð ‡�ñó ðò.ò'ô0r   