+
    ¾¾j´J  ã                  óz  € R t ^ RIHt ^ RIt^ RIHtHtHt ^ RIHtH	t	 ^ RI
HtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtHtH t H!t!H"t"H#t#H$t$H%t%H&t&H't'H(t(H)t)H*t*H+t+H,t,H-t-H.t.H/t/H0t0 ^ RI1H2t2 ^ RI3H4t4 ]'       d+   ^ RI5H6t6H7t7 ^ R	I8H9t9 ^ R
I:H;t; ^ RI<H=t=H>t>H?t? ^ RI@HAtA ^ RIBHCtC  ! R R]24      tDR.tER# )z:rfc:`5545` VEVENT component.)ÚannotationsN)ÚdateÚdatetimeÚ	timedelta)ÚTYPE_CHECKINGÚLiteral)&ÚCONCEPTS_TYPE_SETTERÚLINKS_TYPE_SETTERÚRELATED_TO_TYPE_SETTERÚREQUEST_STATUS_propertyÚX_MOZ_LASTACK_propertyÚX_MOZ_SNOOZE_TIME_propertyÚattendees_propertyÚcategories_propertyÚclass_propertyÚcolor_propertyÚconferences_propertyÚcontacts_propertyÚcreate_single_propertyÚdescription_propertyÚexdates_propertyÚget_duration_propertyÚget_end_propertyÚ&get_start_end_duration_with_validationÚget_start_propertyÚimages_propertyÚlocation_propertyÚorganizer_propertyÚpriority_propertyÚproperty_del_durationÚproperty_doc_duration_templateÚproperty_get_durationÚproperty_set_durationÚrdates_propertyÚrrules_propertyÚsequence_propertyÚset_duration_with_lockingÚset_end_with_lockingÚset_start_with_lockingÚstatus_propertyÚsummary_propertyÚtransparency_propertyÚuid_propertyÚurl_property)Ú	Component)Úget_example)ÚIterableÚSequence©ÚAlarms)ÚSelf)ÚCLASSÚSTATUSÚTRANSP)ÚvCalAddress)Ú
Conferencec            	      óZ  a € ] tR t^>tRtRtR%tR&tR'tR(t	R)t
Rt]R R l4       t]R*R R	 ll4       t]! RR
]]3]R4      t]! RR
]]3]R4      tR t]! ]]]]P4                  ! RR7      4      t]R R l4       t]P:                  R R l4       t]R R l4       t]P:                  R R l4       t]R R l4       t]P:                  R R l4       tR+R R llt R,R R llt!R+R R  llt"]#t$]%t&]'t(])t*]+t,]-t.]/t0]1t2]3t4]5t6]7t8]9t:];t<]=t>]?t@]AtB]CtD]EtF]GtH]ItJ]KtL]MtN]OtP^ R!IQHRtR ]R-R" V 3R# lll4       tSR$tTV ;tU# ).ÚEventaÊ  A grouping of component properties that describe an event.

Description:
    A "VEVENT" calendar component is a grouping of
    component properties, possibly including "VALARM" calendar
    components, that represents a scheduled amount of time on a
    calendar.  For example, it can be an activity; such as a one-hour
    long, department meeting from 8:00 AM to 9:00 AM, tomorrow.
    Generally, an event will take up time on an individual calendar.
    Hence, the event will appear as an opaque interval in a search for
    busy time.  Alternately, the event can have its Time Transparency
    set to "TRANSPARENT" in order to prevent blocking of the event in
    searches for busy time.

    The "VEVENT" is also the calendar component used to specify an
    anniversary or daily reminder within a calendar.  These events
    have a DATE value type for the "DTSTART" property instead of the
    default value type of DATE-TIME.  If such a "VEVENT" has a "DTEND"
    property, it MUST be specified as a DATE value also.  The
    anniversary type of "VEVENT" can span more than one date (i.e.,
    "DTEND" property value is set to a calendar date after the
    "DTSTART" property value).  If such a "VEVENT" has a "DURATION"
    property, it MUST be specified as a "dur-day" or "dur-week" value.

    The "DTSTART" property for a "VEVENT" specifies the inclusive
    start of the event.  For recurring events, it also specifies the
    very first instance in the recurrence set.  The "DTEND" property
    for a "VEVENT" calendar component specifies the non-inclusive end
    of the event.  For cases where a "VEVENT" calendar component
    specifies a "DTSTART" property with a DATE value type but no
    "DTEND" nor "DURATION" property, the event's duration is taken to
    be one day.  For cases where a "VEVENT" calendar component
    specifies a "DTSTART" property with a DATE-TIME value type but no
    "DTEND" property, the event ends on the same calendar date and
    time of day specified by the "DTSTART" property.

    The "VEVENT" calendar component cannot be nested within another
    calendar component.  However, "VEVENT" calendar components can be
    related to each other or to a "VTODO" or to a "VJOURNAL" calendar
    component with the "RELATED-TO" property.

Examples:
    The following is an example of the "VEVENT" calendar
    component used to represent a meeting that will also be opaque to
    searches for busy time:

    .. code-block:: ics

        BEGIN:VEVENT
        UID:19970901T130000Z-123401@example.com
        DTSTAMP:19970901T130000Z
        DTSTART:19970903T163000Z
        DTEND:19970903T190000Z
        SUMMARY:Annual Employee Review
        CLASS:PRIVATE
        CATEGORIES:BUSINESS,HUMAN RESOURCES
        END:VEVENT

    The following is an example of the "VEVENT" calendar component
    used to represent a reminder that will not be opaque, but rather
    transparent, to searches for busy time:

    .. code-block:: ics

        BEGIN:VEVENT
        UID:19970901T130000Z-123402@example.com
        DTSTAMP:19970901T130000Z
        DTSTART:19970401T163000Z
        DTEND:19970402T010000Z
        SUMMARY:Laurel is in sensitivity awareness class.
        CLASS:PUBLIC
        CATEGORIES:BUSINESS,HUMAN RESOURCES
        TRANSP:TRANSPARENT
        END:VEVENT

    The following is an example of the "VEVENT" calendar component
    used to represent an anniversary that will occur annually:

    .. code-block:: ics

        BEGIN:VEVENT
        UID:19970901T130000Z-123403@example.com
        DTSTAMP:19970901T130000Z
        DTSTART;VALUE=DATE:19971102
        SUMMARY:Our Blissful Anniversary
        TRANSP:TRANSPARENT
        CLASS:CONFIDENTIAL
        CATEGORIES:ANNIVERSARY,PERSONAL,SPECIAL OCCASION
        RRULE:FREQ=YEARLY
        END:VEVENT

    The following is an example of the "VEVENT" calendar component
    used to represent a multi-day event scheduled from June 28th, 2007
    to July 8th, 2007 inclusively.  Note that the "DTEND" property is
    set to July 9th, 2007, since the "DTEND" property specifies the
    non-inclusive end of the event.

    .. code-block:: ics

        BEGIN:VEVENT
        UID:20070423T123432Z-541111@example.com
        DTSTAMP:20070423T123432Z
        DTSTART;VALUE=DATE:20070628
        DTEND;VALUE=DATE:20070709
        SUMMARY:Festival International de Jazz de Montreal
        TRANSP:TRANSPARENT
        END:VEVENT

    Create a new Event:

    .. code-block:: python

        >>> from icalendar import Event
        >>> from datetime import datetime
        >>> event = Event.new(start=datetime(2021, 1, 1, 12, 30, 0))
        >>> print(event.to_ical())
        BEGIN:VEVENT
        DTSTART:20210101T123000
        DTSTAMP:20250517T080612Z
        UID:d755cef5-2311-46ed-a0e1-6733c9e15c63
        END:VEVENT

ÚVEVENTÚDTSTARTÚDTENDTc               ó   € V ^8„  d   QhRR/# )é   Úreturnr3   © )Úformats   "ÚR/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/icalendar/cal/event.pyÚ__annotate__ÚEvent.__annotate__ù   s   € ÷ ñ ˜ñ ó    c                ó   € ^ RI Hp V! V 4      # )añ  Compute the alarm times for this component.

>>> from icalendar import Event
>>> event = Event.example("rfc_9074_example_1")
>>> len(event.alarms.times)
1
>>> alarm_time = event.alarms.times[0]
>>> alarm_time.trigger  # The time when the alarm pops up
datetime.datetime(2021, 3, 2, 10, 15, tzinfo=ZoneInfo(key='America/New_York'))
>>> alarm_time.is_active()  # This alarm has not been acknowledged
True

Note that this only uses DTSTART and DTEND, but ignores
RDATE, EXDATE, and RRULE properties.
r2   )Úicalendar.alarmsr3   )Úselfr3   s   & rD   ÚalarmsÚEvent.alarmsø   s   € õ" 	,á�d‹|ÐrG   c               ó    € V ^8„  d   QhRRRR/# )r@   ÚnameÚstrrA   r;   rB   )rC   s   "rD   rE   rF     s   € ÷ :ñ :˜3ð :¸%ñ :rG   c                ó8   € V P                  \        RV4      4      # )z0Return the calendar example with the given name.Úevents)Ú	from_icalr/   )ÚclsrN   s   &&rD   ÚexampleÚEvent.example  s   € ð �}‰}œ[¨°4Ó8Ó9Ð9rG   ÚdtzQThe "DTSTART" property for a "VEVENT" specifies the inclusive start of the event.zdThe "DTEND" property for a "VEVENT" calendar component specifies the non-inclusive end of the event.c                ó   € \        V RRR4      # )z=Verify the calendar validity and return the right attributes.r=   r>   r<   )r   ©rJ   s   &rD   Ú_get_start_end_durationÚEvent._get_start_end_duration!  s   € ä5Ø�)˜W hó
ð 	
rG   )Ú	componentc               ó   € V ^8„  d   QhRR/# )r@   rA   r   rB   )rC   s   "rD   rE   rF   /  s   € ÷ +ñ +˜)ñ +rG   c                ó   € \        V 4      # )aè  The duration of the VEVENT.

Returns the DURATION property if set, otherwise calculated from start and end.
When setting duration, the end time is automatically calculated from start +
duration.

You can set the duration to automatically adjust the end time while keeping
start locked.

Setting the duration will do the following.

1.  Keep the start time locked (unchanged)
2.  Adjust the end time to start + duration
3.  Remove any existing DTEND property
4.  Set the DURATION property
)r   rX   s   &rD   ÚdurationÚEvent.duration.  s   € ô$ % TÓ*Ð*rG   c               ó   € V ^8„  d   QhRR/# )r@   Úvaluer   rB   )rC   s   "rD   rE   rF   C  s   € ÷ 1ñ 1˜iñ 1rG   c                	óœ   € \        V\        4      '       g#   \        R \        V4      P                   R24      hV P                  VRR7       R# )zUse timedelta, not Ú.Ústart)ÚlockedN)Ú
isinstancer   Ú	TypeErrorÚtypeÚ__name__Úset_duration)rJ   ra   s   &&rD   r^   r_   B  sD   € ä˜%¤×+Ò+ÜÐ1´$°u³+×2FÑ2FÐ1GÀqÐIÓJÐJð 	×Ñ˜%¨ÐÖ0rG   c               ó   € V ^8„  d   QhRR/# ©r@   rA   údate | datetimerB   )rC   s   "rD   rE   rF   K  s   € ÷ (ñ (�ñ (rG   c                ó   € \        V 4      # )ad  The start of the event.

Invalid values raise an :exc:`~icalendar.error.InvalidCalendar`.
If there is no start, we also raise an :exc:`~icalendar.error.IncompleteComponent` error.

You can get the start, end and duration of an event as follows:

>>> from datetime import datetime
>>> from icalendar import Event
>>> event = Event()
>>> event.start = datetime(2021, 1, 1, 12)
>>> event.end = datetime(2021, 1, 1, 12, 30) # 30 minutes
>>> event.duration  # 1800 seconds == 30 minutes
datetime.timedelta(seconds=1800)
>>> print(event.to_ical())
BEGIN:VEVENT
DTSTART:20210101T120000
DTEND:20210101T123000
END:VEVENT
)r   rX   s   &rD   rd   ÚEvent.startJ  s   € ô, " $Ó'Ð'rG   c               ó   € V ^8„  d   QhRR/# )r@   rd   údate | datetime | NonerB   )rC   s   "rD   rE   rF   c  s   € ÷ ñ Ð1ñ rG   c                ó   € Wn         R# )zSet the start.N)r=   )rJ   rd   s   &&rD   rd   ro   b  s	   € ð ŽrG   c               ó   € V ^8„  d   QhRR/# rl   rB   )rC   s   "rD   rE   rF   h  s   € ÷ /ñ /�_ñ /rG   c                ó   € \        V R4      # )z¶The end of the event.

Invalid values raise an :exc:`~icalendar.error.InvalidCalendar` error.
If there is no end, we also raise an :exc:`~icalendar.error.IncompleteComponent` error.
r>   )r   rX   s   &rD   ÚendÚ	Event.endg  s   € ô    gÓ.Ð.rG   c               ó   € V ^8„  d   QhRR/# )r@   ru   rq   rB   )rC   s   "rD   rE   rF   q  s   € ÷ ñ Ð-ñ rG   c                ó   € Wn         R# )zSet the end.N)r>   )rJ   ru   s   &&rD   ru   rv   p  s	   € ð Ž
rG   c               ó    € V ^8„  d   QhRRRR/# )r@   r^   ztimedelta | Nonere   zLiteral['start', 'end']rB   )rC   s   "rD   rE   rF   u  s    € ÷ 	Cñ 	CØ(ð	CØ2Iñ	CrG   c                ó    € \        WVR4       R# )z×Set the duration of the event relative to either start or end.

Parameters:
    duration: The duration to set, or None to convert to DURATION property
    locked: Which property to keep unchanged ('start' or 'end')
r>   N)r&   )rJ   r^   re   s   &&&rD   rj   ÚEvent.set_durationu  s   € ô 	" $°&¸'ÖBrG   c               ó    € V ^8„  d   QhRRRR/# )r@   rd   rm   re   z!Literal['duration', 'end'] | NonerB   )rC   s   "rD   rE   rF   €  s   € ÷ 
=ñ 
=Ø$ð
=Ø.Oñ
=rG   c                ó    € \        WVR4       R# )zÉSet the start and keep the duration or end of the event.

Parameters:
    start: The start time to set
    locked: Which property to keep unchanged ('duration', 'end', or None
        for auto-detect)
r>   N)r(   )rJ   rd   re   s   &&&rD   Ú	set_startÚEvent.set_start€  s   € ô 	˜t¨F°GÖ<rG   c               ó    € V ^8„  d   QhRRRR/# )r@   ru   rm   re   zLiteral['start', 'duration']rB   )rC   s   "rD   rE   rF   Œ  s   € ÷ 	9ñ 	9Ø"ð	9Ø,Hñ	9rG   c                ó    € \        WVR4       R# )z¼Set the end of the component, keeping either the start or the duration same.

Parameters:
    end: The end time to set
    locked: Which property to keep unchanged ('start' or 'duration')
r>   N)r'   )rJ   ru   re   s   &&&rD   Úset_endÚEvent.set_endŒ  s   € ô 	˜T¨°Ö8rG   )ÚRECURRENCE_IDc          <     ó�   € V ^8„  d   QhRRRRRRRRR	R
RRRRRR
RRRRRRRRRRRRRRRRRRRR
RR R!R
R"RR#RR$RR%R&R'R(R)R*R+RR,R-R.RR/R0/# )1r@   Ú	attendeeszlist[vCalAddress] | NoneÚ
categorieszSequence[str]ÚclassificationzCLASS | NoneÚcolorz
str | NoneÚcommentszlist[str] | str | NoneÚconceptsr   Úconferenceszlist[Conference] | NoneÚcontactsÚcreatedzdate | NoneÚdescriptionru   rq   Úlast_modifiedÚlinksr	   ÚlocationÚ	organizerzvCalAddress | str | NoneÚpriorityz
int | NoneÚrecurrence_idÚrefidsÚ
related_tor
   Úrequest_statusÚsequenceÚstamprd   ÚstatuszSTATUS | NoneÚsubcomponentszIterable[Component] | NoneÚtransparencyzTRANSP | NoneÚsummaryÚuidzstr | uuid.UUID | NoneÚurlrA   r4   rB   )rC   s   "rD   rE   rF   ±  sZ  € ÷ pñ pð ,ðpð "ð	pð
 %ðpð ðpð )ðpð 'ðpð -ðpð )ðpð ðpð  ðpð $ðpð #ðpð !ðpð  ð!pð" ,ð#pð$ ð%pð& .ð'pð( 'ð)pð* +ð+pð, /ð-pð. ð/pð0 ð1pð2 &ð3pð4 ð5pð6 2ð7pð8 $ð9pð: ð;pð< $ð=pð> ð?pð@ 
ñAprG   c               óò  <€ \         ST `  Ve   TMV P                  4       V	VVVVVVVR7	      pVVn        V
Vn        Ve   TM\
        P                  ! 4       Vn        VVn        VVn	        VVn
        VVn        VVn        VVn        VVn        VVn        VVn        VVn        VVn        VVn        VVn        VVn        VVn        VVn        VVn        V P2                  '       d   V P5                  VV4       V# )aÿ  Create a new event with the required properties of ``stamp`` and ``uid``.

This creates a new ``Event`` in accordance with :rfc:`5545#section-3.6.1`.

Parameters:
    attendees: The :attr:`attendees` of the event.
    categories: The :attr:`categories` of the event.
    classification: The :attr:`classification` of the event.
    color: The :attr:`color` of the event.
    comments: The :attr:`~icalendar.Component.comments` of the event.
    concepts: The :attr:`~icalendar.Component.concepts` of the event.
    conferences: The :attr:`conferences` of the event.
    created: The :attr:`~icalendar.Component.created` of the event.
    description: The :attr:`description` of the event.
    end: The :attr:`end` of the event.
    last_modified: The :attr:`~icalendar.Component.last_modified` of the event.
    links: The :attr:`~icalendar.Component.links` of the event.
    location: The :attr:`location` of the event.
    organizer: The :attr:`organizer` of the event.
    priority: The :attr:`priority` of the event.
    recurrence_id: The :attr:`RECURRENCE_ID` of the event.
    refids: :attr:`~icalendar.Component.refids` of the event.
    related_to: :attr:`~icalendar.Component.related_to` of the event.
    request_status: The :attr:`REQUEST_STATUS` of the event.
    sequence: The :attr:`sequence` of the event.
    stamp: The :attr:`~icalendar.Component.stamp` of the event.
        If ``None``, this is set to the current UTC time.
    start: The :attr:`start` of the event.
    status: The :attr:`status` of the event.
    subcomponents: The subcomponents of the event.
    summary: The :attr:`summary` of the event.
    transparency: The :attr:`transparency` of the event.
    uid: The :attr:`uid` of the event.
        If ``None``, this is set to a new :func:`uuid.uuid4`.
    url: The :attr:`url` of the event.

Returns:
    :class:`Event`

Raises:
    :exc:`~icalendar.error.InvalidCalendar`: If the content is not valid
        according to :rfc:`5545`.

.. warning:: As time progresses, we will be stricter with the validation.
)	rš   rŽ   r�   rŠ   r‘   r—   r–   r‹   rœ   )ÚsuperÚnewÚ_utc_nowrž   r�   ÚuuidÚuuid4rŸ   rd   ru   r‰   r‡   r™   rˆ   r    r“   r’   r”   r�   r�   r›   ÚREQUEST_STATUSr†   rŒ   r„   Ú_validate_newÚ_validate_start_and_end) rS   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   ru   r�   r‘   r’   r“   r”   r•   r–   r—   r˜   r™   rš   rd   r›   rœ   r�   rž   rŸ   r    ÚeventÚ	__class__s    "&&&&&&&&&&&&&&&&&&&&&&&&&&&&& €rD   r£   Ú	Event.new°  s  ø€ ô^ ‘g‘kØ Ò,‘%°#·,±,³.ØØ'ØØØ!ØØØ'ð "ó 

ˆð  ˆŒØ'ˆÔØš?‘C´·
²
³ˆŒ	ØˆŒØˆŒ	ØˆŒØ%ˆÔØ!ˆŒØ-ˆÔØˆŒ	Ø#ˆŒØ!ˆŒØ!ˆŒØ)ˆÔØ!ˆŒØˆŒØ-ˆÔØ#ˆŒØ'ˆÔØ+ˆÔà××ÐØ×'Ñ'¨¨sÔ3ØˆrG   )r>   r=   )ÚSUMMARYr=   r>   ÚDURATIONÚDTSTAMPÚUIDúRECURRENCE-IDÚSEQUENCEÚRRULEÚRDATEÚEXDATE)r°   r¯   )r5   ÚCREATEDÚCOLORÚDESCRIPTIONr=   ÚGEOzLAST-MODIFIEDÚLOCATIONÚ	ORGANIZERÚPRIORITYr¯   r²   r6   r­   r7   ÚURLr±   r>   r®   r°   )r>   r®   )ÚATTACHÚATTENDEEÚ
CATEGORIESÚCOMMENTÚCONTACTrµ   zREQUEST-STATUSÚRELATEDÚ	RESOURCESr´   r³   )Úrfc_9074_example_3)rd   )N)NrB   NNNNNNNNNNNNNNNNNNNNNNNNNNN)Vri   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rN   Úcanonical_orderÚrequiredÚ
singletonsÚ	exclusiveÚmultipleÚignore_exceptionsÚpropertyrK   ÚclassmethodrT   r   r   r   r=   r>   rY   r!   r"   r   r    rC   r®   r^   Úsetterrd   ru   rj   r~   r‚   r   ÚX_MOZ_SNOOZE_TIMEr   ÚX_MOZ_LASTACKr   r‰   r%   r™   r   r‡   r#   Úrdatesr   Úexdatesr$   Úrrulesr   r§   r,   rŸ   r*   rž   r   r�   r   rˆ   r-   r    r   r“   r   r’   r   r”   r   r�   r+   r�   r)   r›   r   r†   r   Úimagesr   rŒ   Úicalendar.attrr„   r£   Ú__static_attributes__Ú__classcell__)r«   s   @rD   r;   r;   >   sñ  ø† ñzðx €Dð€Oð€Hð€Jð,€Ið€Hð Ðàôó ðð( ö:ó ð:ñ %ØØØ	�4ÐØØ[ó€Gñ #ØØØ	�4ÐØØnó€Eò
ñ ØØØØ&×-Ò-¸ÔAó	€Hð ô+ó ð+ð& ‡_�_ô1ó ð1ð ô(ó ð(ð. ‡\�\ôó ðð ô/ó ð/ð 	‡Z�Zôó ð÷	C÷
=÷	9ð 3ÐØ*€MØ€EØ €HØ$€JØ€FØ€GØ€FØ,€NØ
€CØ€GØ&€KØ#€NØ
€CØ"€IØ €HØ €HØ €HØ(€LØ€FØ"€IØ€FØ&€KÝ,à÷pñ pó öprG   r;   )FrÉ   Ú
__future__r   r¥   r   r   r   Útypingr   r   rÙ   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   Úicalendar.cal.componentr.   Úicalendar.cal.examplesr/   Úcollections.abcr0   r1   rI   r3   Úicalendar.compatibilityr4   Úicalendar.enumsr5   r6   r7   Úicalendar.propr8   Úicalendar.prop.conferencer9   r;   Ú__all__rB   rG   rD   Ú<module>ræ      s‚   ðÙ #å "ã ß .Ñ .ß )÷'÷ '÷ '÷ '÷ '÷ '÷ '÷ '÷ '÷ 'õP .Ý .çß2å'Ý,ß5Ñ5Ý*Ý4ôcˆIô cðL ˆ)‚rG   