+
    ¾¾j  ã                   óî   € R t ^ RIHt ^ RIt^ RIHtHt R tR t]P                  P                  RRR.4      R 4       t
R tR tR	 t]P                  P                  R
. RO4      R 4       tR tR tR tR# )zúBehavioral tests for :class:`~icalendar.cal.lazy.LazyCalendar`.

Tests here cover serialization round-trips, property accessors, timezone
handling, and ``with_uid()`` edge cases not covered by
:mod:`test_issue_1050_lazy_parsing`.

See :issue:`1050`.
)ÚdatetimeN)ÚCalendarÚEventc                ó†   € V P                   p\        VP                  4      ^ 8X  g   Q hVP                  4       '       d   Q hR# )z<An empty calendar has no subcomponents after accessing them.N)Úissue_1050_empty_calendarÚlenÚsubcomponentsÚis_lazy)Úlazy_calendarsÚcals   & Úl/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/icalendar/tests/test_issue_1050_lazy_calendar.pyÚ(test_empty_calendar_has_no_subcomponentsr      s9   € à
×
2Ñ
2€Cäˆs× Ñ Ó! QÔ&Ð&Ð&Ø�{‰{�}Š}ÐÐ‰}ó    c                óÄ   € V P                   pVP                  4       '       g   Q hVP                  R4      p\        V4      ^8X  g   Q hVP                  4       '       g   Q hR# )zHA calendar with only ``VTIMEZONE`` stays lazy after accessing timezones.Ú	VTIMEZONEN)Ú!issue_1050_timezone_only_calendarr	   Úwalkr   )r
   r   Ú	timezoness   &  r   Ú&test_timezone_only_calendar_stays_lazyr      sM   € à
×
:Ñ
:€Cà�;‰;�=Š=Ðˆ=Ø—‘˜Ó%€IÜˆy‹>˜QÔÐÐØ�;‰;�=Š=ÐŠ=r   c                ó˜   € V P                   p\        W14      p\        V4      ^8X  g   Q h\        V^ ,          R,          4      V8X  g   Q hR# )zFAccessing ``.todos`` and ``.journals`` returns the correct components.ÚSUMMARYN)Ú)issue_1050_calendar_with_events_and_todosÚgetattrr   Ústr)Ú	calendarsÚpropÚsummaryr   Ú
componentss   &&&  r   Útest_component_propertyr   #   sG   € ð ×
=Ñ
=€Cä˜Ó#€JÜˆz‹?˜aÔÐÐÜˆz˜!�}˜YÕ'Ó(¨GÔ3Ð3Ò3r   c                ó’   € V P                   pVP                  ^ ,          R,          P                  P                  R4      R8X  g   Q hR# )z4Events carry their ``TZID`` parameter after parsing.ÚDTSTARTÚTZIDzAmerica/New_YorkN)r   ÚeventsÚparamsÚget©r   r   s   & r   Útest_tzid_accessible_on_eventsr&   3   s:   € à
×
=Ñ
=€Cà�:‰:�a�=˜Õ#×*Ñ*×.Ñ.¨vÓ6Ð:LÔLÐLÒLr   c                ó@  € V P                   p\        VP                  4      ^8X  g   Q h\        VP                  4      ^8X  g   Q h\        VP	                  R4      4      ^8X  g   Q h\        VP
                  4      ^8X  g   Q h\        VP                  4      ^8X  g   Q hR# )zJMixing property access and ``walk()`` in any order returns correct counts.ÚVTODON)r   r   Újournalsr"   r   Útodosr%   s   & r   Útest_property_and_walk_accessr+   :   s‚   € à
×
=Ñ
=€Cäˆs�|‰|Ó Ô!Ð!Ð!Üˆs�z‰z‹?˜aÔÐÐÜˆs�x‰x˜Ó Ó! QÔ&Ð&Ð&Üˆs�y‰y‹>˜QÔÐÐÜˆs�z‰z‹?˜aÔÐÒr   c                óö   € V P                   p\        VP                  4      ^8X  g   Q hVP                  ^ ,          R,          P                  pVP                  f   Q h\        VP                  4      R8X  g   Q hR# )zD``VTIMEZONE`` defined after its referencing event is still resolved.r    NzEurope/Berlin)Ú%issue_1050_forward_timezone_referencer   r"   ÚdtÚtzinfor   )r   r   Údtstarts   &  r   Útest_forward_timezone_referencer1   E   sb   € à
×
9Ñ
9€Cäˆs�z‰z‹?˜aÔÐÐØ�j‰j˜�m˜IÕ&×)Ñ)€GØ�>‰>Ò%Ð%Ð%Üˆw�~‰~Ó /Ô1Ð1Ò1r   Úaccessc                óÈ  € V P                   pVR8X  d   VP                  pMVR8X  d   VP                  4       pVP                  4       p\        P
                  ! V4      p\        VP                  R4      4      ^8X  g   Q h\        VP                  R4      4      ^8X  g   Q h\        VP                  R4      4      ^8X  g   Q h\        VP                  R4      4      ^8X  g   Q hR# )z>Serializing at any parse state preserves all component counts.ÚpartialÚfullÚVEVENTr(   ÚVJOURNALr   N)r   r"   r   Úto_icalr   Ú	from_icalr   )r   r2   r   Ú_ÚoutputÚcal2s   &&    r   Útest_to_ical_roundtripr=   O   s¾   € ð ×
=Ñ
=€Cà�ÔØ�J‰J‰Ø	�6Ô	Ø�H‰H‹Jˆà�[‰[‹]€FÜ×Ò˜fÓ%€DÜˆt�y‰y˜Ó"Ó# qÔ(Ð(Ð(Üˆt�y‰y˜Ó!Ó" aÔ'Ð'Ð'Üˆt�y‰y˜Ó$Ó%¨Ô*Ð*Ð*Üˆt�y‰y˜Ó%Ó&¨!Ô+Ð+Ò+r   c                ó*  € V P                   p\        4       pVP                  RR4       VP                  RR4       VP                  R\        R^^^
^ ^ 4      4       VP	                  V4       \        R VP                   4       4      pVRR.8X  g   Q hR	# )
z5``add_component()`` appends to the parsed event list.ÚUIDznew-event@example.comr   z	New Eventr    ié  c              3   óF   "  € T F  p\        VR ,          4      x € K  	  R# 5i)r?   N)r   )Ú.0Úes   & r   Ú	<genexpr>Ú7test_add_component_appears_in_events.<locals>.<genexpr>k   s   é € Ð4© A”#�a˜•h—-�-«ùs   ‚!zsimple-event@example.comN)Úissue_1050_simple_calendarr   Úaddr   Úadd_componentÚsortedr"   )r   r   Ú	new_eventÚuidss   &   r   Ú$test_add_component_appears_in_eventsrK   a   s…   € à
×
.Ñ
.€Cä“€IØ‡M�M�%Ð0Ô1Ø‡M�M�)˜[Ô)Ø‡M�M�)œX d¨A¨q°"°a¸Ó;Ô<Ø×Ñ�iÔ äÑ4¨¯ªÓ4Ó4€DØÐ+Ð-GÐHÔHÐHÒHr   c                óâ   € V P                   P                  p\        V4      ^8X  g   Q h\        V^ ,          P                  4      ^8X  g   Q h\        V^,          P                  4      ^8X  g   Q hR# )z8``from_ical(..., multiple=True)`` returns all calendars.N)ÚmultipleÚissue_1050_multiple_calendarsr   r"   )r   Úcalss   & r   Útest_multiple_calendarsrP   o   sY   € à×Ñ×;Ñ;€Däˆt‹9˜Œ>Ðˆ>Üˆt�A�w�~‰~Ó !Ô#Ð#Ð#Üˆt�A�w�~‰~Ó !Ô#Ð#Ò#r   c                ó’   € V P                   pVP                  R4      p\        V4      ^8X  g   Q hV^ ,          R,          R8X  g   Q hR# )u¦  ``with_uid()`` returns only the component whose ``UID`` matches exactly.

:class:`~icalendar.parser.ical.lazy.LazySubcomponent` scans raw lines to
decide whether to parse a component for ``with_uid()``. A ``DESCRIPTION``
that contains the target UID string causes that component to be parsed as a
false positive â€” this is intentional (parse more, never miss) â€” but the
returned list must contain only the exact match.
Úabcr   ÚtargetN)Úissue_1050_uid_in_descriptionÚwith_uidr   )r   r   Úresults   &  r   Ú!test_uid_substring_in_descriptionrW   x   sF   € ð ×
1Ñ
1€Cà�\‰\˜%Ó €FÜˆv‹;˜!ÔÐÐØ�!�9�YÕ 8Ô+Ð+Ò+r   )r   r   )r*   zTest Todo 1)r)   zTest Journal 1)Únoner4   r5   )Ú__doc__r   ÚpytestÚ	icalendarr   r   r   r   ÚmarkÚparametrizer   r&   r+   r1   r=   rK   rP   rW   © r   r   Ú<module>r_      s—   ðñõ ã ç %òòð ‡�×ÑØà Ø&ðóñ4óð4òMò ò2ð ‡�×Ñ˜Ò#>Ó?ñ,ó @ð,ò"Iò$ô,r   