+
    ¾¾jÇ(  ã            	      ó  € R t ^ RIHt ^ RIHtHtHt ^ RIHt ^ RI	H
t
 ^RIHt ]'       d   ^ RIHt ^ RIHt ^ RI	Ht ^R	IHt  ! R
 R4      t ! R R4      t ! R R4      t ! R R]4      tR.t]R8X  dˆ   ^ RIt]P6                  ! R4      tRt];P:                  ],          un        ]P=                  4       tR R lt ]]3 F6  t!]"! R]!P2                  4       ]"! ]P4                  ! R]#! 4       ^R7      4       K8  	  R# R# )z*Components for lazy parsing of components.)Úannotations)ÚTYPE_CHECKINGÚAnyÚLiteral)ÚComponentFactory)ÚLazyCalendarIcalParser)ÚCalendar)ÚCallable)ÚComponentIcalParser)ÚLazySubcomponent)Ú	Componentc                  ón   € ] tR t^tRtR R ltR R ltR R ltR R	 ltR
 R lt	R R lt
R R ltRtR# )ÚParsedSubcomponentsStrategyz9All the subcomponents are parsed and available as a list.c               ó   € V ^8„  d   QhRR/# ©é   ÚreturnÚNone© )Úformats   "ÚQ/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/icalendar/cal/lazy.pyÚ__annotate__Ú(ParsedSubcomponentsStrategy.__annotate__   s   € ÷ /ñ /˜$ñ /ó    c                	ó   € . V n         R # ©N©Ú_components©Úselfs   &r   Ú__init__Ú$ParsedSubcomponentsStrategy.__init__   s
   € Ø,.ˆÖr   c               ó   € V ^8„  d   QhRR/# ©r   r   ú3tuple[ParsedSubcomponentsStrategy, list[Component]]r   )r   s   "r   r   r      s   € ÷ &ñ &Ð$Wñ &r   c                ó   € W P                   3# )z&Get the subcomponents of the calendar.r   r   s   &r   Úget_all_componentsÚ.ParsedSubcomponentsStrategy.get_all_components   s   € à×%Ñ%Ð%Ð%r   c               ó    € V ^8„  d   QhRRRR/# ©r   Ú
componentsúlist[Component]r   r   r   )r   s   "r   r   r      s   € ÷ ñ Ø)ðà	$ñr   c                ó   € Wn         V # ©ú&Set the subcomponents of the calendar.r   ©r   r*   s   &&r   Úset_componentsÚ*ParsedSubcomponentsStrategy.set_components   s   € ð &ÔØˆr   c               ó    € V ^8„  d   QhRRRR/# )r   Ú	componentr   r   r   r   )r   s   "r   r   r   &   s   € ÷ ñ  yð Ð5Pñ r   c                óX   € V P                   P                  VP                  4       4       V # ©z Add a component to the calendar.)r   ÚappendÚparse©r   r3   s   &&r   Úadd_componentÚ)ParsedSubcomponentsStrategy.add_component&   s"   € à×Ñ×Ñ 	§¡Ó 1Ô2Øˆr   c               ó   € V ^8„  d   QhRR/# )r   r   zLiteral[False]r   )r   s   "r   r   r   +   s   € ÷ ñ ˜ñ r   c                ó   € R# )z>Returns ``False`` because subcomponents are not lazily parsed.Fr   r   s   &r   Úis_lazyÚ#ParsedSubcomponentsStrategy.is_lazy+   s   € ár   c               ó    € V ^8„  d   QhRRRR/# ©r   ÚnameÚstrr   r$   r   )r   s   "r   r   r   /   s   € ÷ ñ ˜ð Ð!Tñ r   c                ó`   € . pV P                    F  pW#P                  V4      ,          pK  	  W3# )z:Get the subcomponents of the calendar with the given name.)r   Úwalk©r   rA   Úresultr3   s   &&  r   rD   Ú ParsedSubcomponentsStrategy.walk/   s0   € àˆØ×)Ô)ˆIØ—n‘n TÓ*Õ*ŠFñ *àˆ|Ðr   c               ó    € V ^8„  d   QhRRRR/# r@   r   )r   s   "r   r   r   6   s   € ÷ ñ Øðà	<ñr   c                ó`   € . pV P                    F  pW#P                  V4      ,          pK  	  W3# )z9Get the subcomponents of the calendar with the given uid.)r   Úwith_uidrE   s   &&  r   rJ   Ú$ParsedSubcomponentsStrategy.with_uid6   s4   € ð ˆØ×)Ô)ˆIØ×(Ñ(¨Ó.Õ.ŠFñ *àˆ|Ðr   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r    r&   r0   r9   r=   rD   rJ   Ú__static_attributes__r   r   r   r   r      s-   † ÙCõ/õ&õõõ
õ÷ñ r   r   c                  ó¢   € ] tR t^@t$ RtRtR]R&    R R lt]R R l4       t	R R	 lt
R
 R ltR R ltR R ltR R ltR R ltR R ltRtR# )ÚLazySubcomponentsStrategyz'Parse subcomponents only when accessed.ztuple[str, ...]Úinitial_components_to_parsec               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   Ú&LazySubcomponentsStrategy.__annotate__F   s   € ÷ +ñ +˜$ñ +r   c                	ó"   € . V n         R V n        R# )FN©r   Ú_initial_parsedr   s   &r   r    Ú"LazySubcomponentsStrategy.__init__F   s   € Ø?AˆÔØ%*ˆÖr   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   rV   K   s   € ÷ 
ñ 
Ð6ñ 
r   c                óŒ   € \        4       P                  V P                   Uu. uF  qP                  4       NK  	  up4      # u upi )zReturn the parsed components.)r   r0   r   r7   r8   s   & r   Ú	as_parsedÚ#LazySubcomponentsStrategy.as_parsedJ   s<   € ô +Ó,×;Ñ;Ø04×0@Ò0@ÓAÑ0@ 9�_‰_ÖÑ0@ÑAó
ð 	
ùÚAs   ¢Ac               ó   € V ^8„  d   QhRR/# r#   r   )r   s   "r   r   rV   Q   s   € ÷ 3ñ 3Ð$Wñ 3r   c                óV   € V P                  4        V P                  P                  4       # )zAGet the subcomponents of the calendar.

Parse all subcomponents.
)Úparse_initial_componentsr]   r&   r   s   &r   r&   Ú,LazySubcomponentsStrategy.get_all_componentsQ   s#   € ð
 	×%Ñ%Ô'Ø�~‰~×0Ñ0Ó2Ð2r   c               ó    € V ^8„  d   QhRRRR/# r)   r   )r   s   "r   r   rV   Y   s    € ÷ Hñ HØ)ðHà	$ñHr   c                ó4   € \        4       P                  V4      # r-   )r   r0   r/   s   &&r   r0   Ú(LazySubcomponentsStrategy.set_componentsY   s   € ô +Ó,×;Ñ;¸JÓGÐGr   c               ó    € V ^8„  d   QhRRRR/# )r   r3   zComponent | LazySubcomponentr   rS   r   )r   s   "r   r   rV   _   s   € ÷ ñ Ø5ðà	"ñr   c                ó<   € V P                   P                  V4       V # r5   )r   r6   r8   s   &&r   r9   Ú'LazySubcomponentsStrategy.add_component_   s   € ð 	×Ñ×Ñ 	Ô*Øˆr   c               ó   € V ^8„  d   QhRR/# ©r   r   Úboolr   )r   s   "r   r   rV   f   s   € ÷ ñ ˜ñ r   c                ó   € R# )z6Return whether the subcomponents may be lazily parsed.Tr   r   s   &r   r=   Ú!LazySubcomponentsStrategy.is_lazyf   s   € ár   c               ó   € V ^8„  d   QhRR/# r   r   )r   s   "r   r   rV   j   s   € ÷ "ñ "¨$ñ "r   c                ó¼   € V P                   '       d   R# RV n         V P                   F0  pVP                  V P                  9   g   K   VP	                  4        K2  	  R# )z­Parse the components that are required by other components.

This mainly concerns the timezone components.
They are required by other components that have a TZID parameter.
NT)rY   r   rA   rT   r7   r8   s   & r   ra   Ú2LazySubcomponentsStrategy.parse_initial_componentsj   sG   € ð ××ÐÙØ#ˆÔØ×)Ô)ˆIØ�~‰~ ×!AÑ!AÖAØ—‘Ö!ó *r   c               ó    € V ^8„  d   QhRRRR/# )r   rA   ú
str | Noner   ú1tuple[LazySubcomponentsStrategy, list[Component]]r   )r   s   "r   r   rV   w   s   € ÷ ñ Øðà	:ñr   c                ó¾   € Vf   V P                   P                  V4      # V P                  4        . pV P                   F  pW#P                  V4      ,          pK  	  W3# )zlGet the subcomponents of the calendar with the given name.

Parse only the minimal number of subcomponents.
)r]   rD   ra   r   rE   s   &&  r   rD   ÚLazySubcomponentsStrategy.walkw   sX   € ð Š<Ø—>‘>×&Ñ& tÓ,Ð,Ø×%Ñ%Ô'ØˆØ×)Ô)ˆIØ—n‘n TÓ*Õ*ŠFñ *àˆ|Ðr   c               ó    € V ^8„  d   QhRRRR/# )r   ÚuidrB   r   rs   r   )r   s   "r   r   rV   †   s   € ÷ 	ñ 	˜Cð 	Ð$Uñ 	r   c                ó€   € V P                  4        . pV P                   F  pW#P                  V4      ,          pK  	  W3# )zoGet the subcomponents of the calendar with the given ``uid``.

Parse only the minimal number of subcomponents.
)ra   r   rJ   )r   rw   rF   r3   s   &&  r   rJ   Ú"LazySubcomponentsStrategy.with_uid†   s@   € ð
 	×%Ñ%Ô'ØˆØ×)Ô)ˆIØ×(Ñ(¨Ó-Õ-ŠFñ *àˆ|Ðr   rX   N)Ú	VTIMEZONE)rL   rM   rN   rO   rP   rT   Ú__annotations__r    Úpropertyr]   r&   r0   r9   r=   ra   rD   rJ   rQ   r   r   r   rS   rS   @   sU   ‡ Ù1à3AÐ ÓAØ6õ+ð ô
ó ð
õ3õHõõõ"õ÷	ñ 	r   rS   c                  ó&   € ] tR t^’tRtR R ltRtR# )ÚInitialSubcomponentsStrategyz6Initial strategy for the calendar.

No subcomponents.
c               ó    € V ^8„  d   QhRRRR/# )r   r*   r+   r   rS   r   )r   s   "r   r   Ú)InitialSubcomponentsStrategy.__annotate__˜   s   € ÷ +ñ +¨ð +Ð=Vñ +r   c                	ó<   € V'       d   \        R 4      h\        4       # )zpCannot set subcomponents on an uninitialised LazyCalendar. Parse it first or add components via add_component().)Ú
ValueErrorrS   r/   s   &&r   r0   Ú+InitialSubcomponentsStrategy.set_components˜   s#   € ßÜðHóð ô )Ó*Ð*r   r   N)rL   rM   rN   rO   rP   r0   rQ   r   r   r   r~   r~   ’   s   † ñ÷
+ñ +r   r~   c                  ó  a € ] tR t^¡t$ RtR]R&    R V 3R llt]R R l4       t]P                  R R	 l4       t]
R
 R l4       t]
R R l4       tR R ltR R ltR R ltR R lt]P                   P                  ]n        RtV ;t# )ÚLazyCalendaraË  A calendar that can handle big files.

Subcomponents of this calendar are evaluated lazily,
meaning that they are not parsed until they are accessed.
This allows the calendar to handle large files without
consuming too much memory or time.

All properties of the calendar component are parsed immediately.
Subcomponents and their properties are parsed lazily.

Examples:

    By accessing the :attr:`~icalendar.cal.calendar.Calendar.events` of the calendar,
    only :class:`~icalendar.cal.event.Event` and
    :class:`~icalendar.cal.timezone.Timezone` are immediately parsed.

    .. code-block:: pycon

        >>> from icalendar import LazyCalendar
        >>> calendar = LazyCalendar.example("issue_1050_all_components")
        >>> len(calendar.events) == 1
        True

    The calendar's subcomponents were not parsed because they were not accessed.
    The calendar is still lazy.

        >>> calendar.is_lazy()
        True

    When you access all :attr:`~icalendar.cal.component.Component.subcomponents` of the calendar,
    for example by getting their count, the entire calendar is
    parsed and becomes not lazy.

        >>> len(calendar.subcomponents)
        5
        >>> calendar.is_lazy()
        False

zVLazySubcomponentsStrategy | ParsedSubcomponentsStrategy | InitialSubcomponentsStrategyÚ_subcomponentsc               ó$   € V ^8„  d   QhRRRRRR/# )r   Úargsr   Úkwargsr   r   r   )r   s   "r   r   ÚLazyCalendar.__annotate__Ñ   s!   € ÷ *ñ *˜cð *¨Sð *°Tñ *r   c                óF   <€ \        4       V n        \        SV `  ! V/ VB  R# )zInitialize the calendar.N)r~   r†   Úsuperr    )r   rˆ   r‰   Ú	__class__s   &*,€r   r    ÚLazyCalendar.__init__Ñ   s    ø€ ä:Ó<ˆÔÜ‰Ò˜$Ð) &Ô)r   c               ó   € V ^8„  d   QhRR/# )r   r   r+   r   )r   s   "r   r   rŠ   ×   s   € ÷ 	ñ 	˜ñ 	r   c                óJ   € V P                   P                  4       w  V n         pV# )zÚThe subcomponents of the calendar.

Parse all subcomponents of the calendar and return them as a list.

You can manipulate this list or set it.
It has the same behavior as in :class:`~icalendar.cal.calendar.Calendar`.
)r†   r&   )r   rF   s   & r   ÚsubcomponentsÚLazyCalendar.subcomponentsÖ   s%   € ð '+×&9Ñ&9×&LÑ&LÓ&NÑ#ˆÔ˜VØˆr   c               ó    € V ^8„  d   QhRRRR/# )r   Úvaluer+   r   r   r   )r   s   "r   r   rŠ   ã   s   € ÷ Hñ H ?ð H°tñ Hr   c                óF   € V P                   P                  V4      V n         R# )r.   N)r†   r0   )r   r”   s   &&r   r‘   r’   â   s   € ð #×1Ñ1×@Ñ@ÀÓGˆÖr   c               ó    € V ^8„  d   QhRRRR/# )r   Ústzstr | bytesr   r
   r   )r   s   "r   r   rŠ   è   s   € ÷ 
ñ 
 +ð 
Ð2Eñ 
r   c                óJ   € \        WP                  4       V P                  4      # )z/Get the iCal parser for the given input string.)r   Ú_get_component_factoryÚtypes_factory)Úclsr—   s   &&r   Ú_get_ical_parserÚLazyCalendar._get_ical_parserç   s%   € ô &Ø×*Ñ*Ó,¨c×.?Ñ.?ó
ð 	
r   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   rŠ   ï   s   € ÷ ñ Ð'7ñ r   c                ó<   € \        4       pVP                  V 4       V# )z,Get the component factory for this calendar.)r   Úadd_component_class)r›   Úfactorys   & r   r™   Ú#LazyCalendar._get_component_factoryî   s   € ô #Ó$ˆØ×#Ñ# CÔ(Øˆr   c               ó    € V ^8„  d   QhRRRR/# )r   r3   r   r   r   r   )r   s   "r   r   rŠ   õ   s   € ÷ Kñ K yð K°Tñ Kr   c                óF   € V P                   P                  V4      V n         R# )z¬Add a component to the calendar.

Use this instead of appending to
:attr:`~icalendar.cal.lazy.LazyCalendar.subcomponents`,
as the latter does not parse the whole calendar.
N)r†   r9   r8   s   &&r   r9   ÚLazyCalendar.add_componentõ   s   € ð #×1Ñ1×?Ñ?À	ÓJˆÖr   c               ó   € V ^8„  d   QhRR/# rj   r   )r   s   "r   r   rŠ   þ   s   € ÷ 
-ñ 
-˜ñ 
-r   c                ó6   € V P                   P                  4       # )a`  Whether the subcomponents will be parsed lazily.

.. note:: If you believe that the calendar parses more than it should,
    please `open an issue <https://github.com/collective/icalendar/issues/new?template=bug_report.md>`_.

Returns:
    ``True`` if subcomponents are deferred and not yet parsed.
    ``False`` if all subcomponents have been parsed.
)r†   r=   r   s   &r   r=   ÚLazyCalendar.is_lazyþ   s   € ð ×"Ñ"×*Ñ*Ó,Ð,r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rA   rr   ÚselectzCallable[[Component], bool]r   r+   r   )r   s   "r   r   rŠ   
  s$   € ÷ ñ ØðØ(Cðà	ñr   c                	ó   € V P                   P                  V4      w  V n         pV Uu. uF  qB! V4      '       g   K  VNK  	  ppVe   V P                  V8X  d!   V! V 4      '       d   VP                  ^ V 4       V# u upi r   )r†   rD   rA   Úinsert)r   rA   rª   rF   r3   s   &&&  r   Ú_walkÚLazyCalendar._walk
  sp   € ð '+×&9Ñ&9×&>Ñ&>¸tÓ&DÑ#ˆÔ˜VÙ-3ÓI©V 	°v¸i×7H—)�)©VˆÐIØŠL˜DŸI™I¨Ô-±6¸$·<²<Ø�M‰M˜!˜TÔ"Øˆùò Js
   ¨A;¼A;c               ó    € V ^8„  d   QhRRRR/# )r   rw   rB   r   r+   r   )r   s   "r   r   rŠ     s   € ÷ ñ ˜Cð  Oñ r   c                	ó’   € V P                   P                  V4      w  V n         pV P                  V8X  d   VP                  ^ V 4       V# )é    )r†   rJ   rw   r¬   )r   rw   rF   s   && r   rJ   ÚLazyCalendar.with_uid  s>   € Ø&*×&9Ñ&9×&BÑ&BÀ3Ó&GÑ#ˆÔ˜VØ�8‰8�sŒ?Ø�M‰M˜!˜TÔ"Øˆr   )r†   )rL   rM   rN   rO   rP   r{   r    r|   r‘   ÚsetterÚclassmethodrœ   r™   r9   r=   r­   rJ   r   rQ   Ú__classcell__)r�   s   @r   r…   r…   ¡   s©   ø‡ ñ&ðR	'óð
 B÷*ð *ð
 ô	ó ð	ð ×ÑôHó ðHð ô
ó ð
ð ôó ðõKõ
-õõð  ×(Ñ(×0Ñ0€H×Òr   r…   Ú__main__NÚissue_1050_all_componentsi'  c               ó   € V ^8„  d   QhRR/# )r   Úcalztype[Calendar]r   )r   s   "r   r   r   &  s   € ÷ (ñ (˜ñ (r   c                óp   € V P                  \        4      p \        V P                  4      \        8X  g   Q hR# )zCheck out how fast this is.N)Ú	from_icalÚicsÚlenÚeventsÚCOUNT)r¹   s   &r   Ú
_benchmarkrÀ   &  s&   € à�m‰mœCÓ ˆÜ�3—:‘:‹¤%Ô'Ð'Ò'r   zBenchmarking:z_benchmark(cal))ÚglobalsÚnumber)$rP   Ú
__future__r   Útypingr   r   r   Úicalendar.cal.component_factoryr   Úicalendar.parser.ical.lazyr   Úcalendarr   Úcollections.abcr	   Úicalendar.parser.ical.componentr
   r   r3   r   r   rS   r~   r…   Ú__all__rL   ÚtimeitÚexampler¿   r‘   Úto_icalr¼   rÀ   r¹   ÚprintÚlocalsr   r   r   Ú<module>rÐ      så   ðÙ 0å "ç .Ñ .å <Ý =å çÝ(åCÝ;å$÷(ñ (÷VOñ O÷d+ñ +ôx1�8ô x1ðv Ð
€àˆzÔÛà×ÒÐ ;Ó<€HØ€EØ×Ò˜eÕ#ÕØ
×
Ñ
Ó
€Cõ(ð
 ˜,Ó'ˆÙˆo˜sŸ|™|Ô,Ùˆf�mŠmÐ-±v³xÈÔJÖKó (ñ r   