+
    ¾¾já3  ã                  ó*  € R t ^ RIHt ^ RIt^ RIHt ^ RI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 ^ RIHt ^ RIHt ^RIH t  ]'       d)   ^ R	I!H"t"H#t# ^ R
IH$t$ ^ RI%H&t& ^ RI'H(t( ^ RI)H*t*H+t+ ^ RI,H-t-  ! R R] 4      t.R.t/R# )zQThis implementes the VAVAILABILITY component.

This is specified in :rfc:`7953`.
)ÚannotationsN)Údatetime)ÚTYPE_CHECKING)ÚCONCEPTS_TYPE_SETTERÚLINKS_TYPE_SETTERÚRELATED_TO_TYPE_SETTERÚbusy_type_propertyÚcategories_propertyÚclass_propertyÚcontacts_propertyÚdescription_propertyÚduration_propertyÚlocation_propertyÚorganizer_propertyÚpriority_propertyÚrfc_7953_dtend_propertyÚrfc_7953_dtstart_propertyÚrfc_7953_duration_propertyÚrfc_7953_end_propertyÚsequence_propertyÚsummary_propertyÚurl_property)Úget_example)ÚInvalidCalendar)Ú	Component)ÚIterableÚSequence)Údate)Ú	Available)ÚSelf)ÚBUSYTYPEÚCLASS)ÚvCalAddressc                  óÔ   a € ] tR t^0tRtRtR
tRtRtRt	]
t]t]t]t]t]t]t]t]t]t]t] ;t!t"]#t$]%! R 4      t&]'t(])t*]+R R l4       t,]-RR V 3R lll4       t.]-RR R ll4       t/R	t0V ;t1# )ÚAvailabilitya¡  VAVAILABILITY component from :rfc:`7953`.

This provides a grouping of component properties and
subcomponents that describe the availability associated with a
calendar user.

Description:
    A "VAVAILABILITY" component indicates a period of time
    within which availability information is provided.  A
    "VAVAILABILITY" component can specify a start time and an end time
    or duration.  If "DTSTART" is not present, then the start time is
    unbounded.  If "DTEND" or "DURATION" are not present, then the end
    time is unbounded.  Within the specified time period, availability
    defaults to a free-busy type of "BUSY-UNAVAILABLE" (see
    Section 3.2), except for any time periods corresponding to
    "AVAILABLE" subcomponents.

    "AVAILABLE" subcomponents are used to indicate periods of free
    time within the time range of the enclosing "VAVAILABILITY"
    component.  "AVAILABLE" subcomponents MAY include recurrence
    properties to specify recurring periods of time, which can be
    overridden using normal iCalendar recurrence behavior (i.e., use
    of the "RECURRENCE-ID" property).

    If specified, the "DTSTART" and "DTEND" properties in
    "VAVAILABILITY" components and "AVAILABLE" subcomponents MUST be
    "DATE-TIME" values specified as either the date with UTC time or
    the date with local time and a time zone reference.

    The iCalendar object containing the "VAVAILABILITY" component MUST
    contain appropriate "VTIMEZONE" components corresponding to each
    unique "TZID" parameter value used in any DATE-TIME properties in
    all components, unless [RFC7809] is in effect.

    When used to publish available time, the "ORGANIZER" property
    specifies the calendar user associated with the published
    available time.

    If the "PRIORITY" property is specified in "VAVAILABILITY"
    components, it is used to determine how that component is combined
    with other "VAVAILABILITY" components.  See Section 4.

    Other calendar properties MAY be specified in "VAVAILABILITY" or
    "AVAILABLE" components and are considered attributes of the marked
    block of time.  Their usage is application specific.  For example,
    the "LOCATION" property might be used to indicate that a person is
    available in one location for part of the week and a different
    location for another part of the week (but see Section 9 for when
    it is appropriate to add additional data like this).

Example:
    The following is an example of a "VAVAILABILITY" calendar
    component used to represent the availability of a user, always
    available Monday through Friday, 9:00 am to 5:00 pm in the
    America/Montreal time zone:

    .. code-block:: ics

        BEGIN:VAVAILABILITY
        ORGANIZER:mailto:bernard@example.com
        UID:0428C7D2-688E-4D2E-AC52-CD112E2469DF
        DTSTAMP:20111005T133225Z
        BEGIN:AVAILABLE
        UID:34EDA59B-6BB1-4E94-A66C-64999089C0AF
        SUMMARY:Monday to Friday from 9:00 to 17:00
        DTSTART;TZID=America/Montreal:20111002T090000
        DTEND;TZID=America/Montreal:20111002T170000
        RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR
        END:AVAILABLE
        END:VAVAILABILITY

    You can get the same example from :meth:`example`:

    .. code-block: pycon

        >>> from icalendar import Availability
        >>> a = Availability.example()
        >>> a.organizer
        vCalAddress('mailto:bernard@example.com')

    The following is an example of a "VAVAILABILITY" calendar
    component used to represent the availability of a user available
    Monday through Thursday, 9:00 am to 5:00 pm, at the main office,
    and Friday, 9:00 am to 12:00 pm, in the branch office in the
    America/Montreal time zone between October 2nd and December 2nd
    2011:

    .. code-block:: ics

        BEGIN:VAVAILABILITY
        ORGANIZER:mailto:bernard@example.com
        UID:84D0F948-7FC6-4C1D-BBF3-BA9827B424B5
        DTSTAMP:20111005T133225Z
        DTSTART;TZID=America/Montreal:20111002T000000
        DTEND;TZID=America/Montreal:20111202T000000
        BEGIN:AVAILABLE
        UID:7B33093A-7F98-4EED-B381-A5652530F04D
        SUMMARY:Monday to Thursday from 9:00 to 17:00
        DTSTART;TZID=America/Montreal:20111002T090000
        DTEND;TZID=America/Montreal:20111002T170000
        RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH
        LOCATION:Main Office
        END:AVAILABLE
        BEGIN:AVAILABLE
        UID:DF39DC9E-D8C3-492F-9101-0434E8FC1896
        SUMMARY:Friday from 9:00 to 12:00
        DTSTART;TZID=America/Montreal:20111006T090000
        DTEND;TZID=America/Montreal:20111006T120000
        RRULE:FREQ=WEEKLY
        LOCATION:Branch Office
        END:AVAILABLE
        END:VAVAILABILITY

    For more examples, have a look at :rfc:`5545`.

ÚVAVAILABILITYc               ó   € V ^8„  d   QhRR/# )é   Úreturnzlist[Available]© )Úformats   "ÚY/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/icalendar/cal/availability.pyÚ__annotate__ÚAvailability.__annotate__å   s   € ÷ &ñ &˜?ñ &ó    c                ó$   € V P                  R4      # )zÁAll VAVAILABLE sub-components.

This is a shortcut to get all VAVAILABLE sub-components.
Modifications do not change the calendar.
Use :meth:`~icalendar.cal.component.Component.add_component`.
Ú	AVAILABLE)Úwalk)Úselfs   &r+   Ú	availableÚAvailability.availableä   s   € ð �y‰y˜Ó%Ð%r.   c          2     ó|   € 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'   Ú	busy_typezBUSYTYPE | NoneÚ
categorieszSequence[str]Úcommentszlist[str] | str | NoneÚ
componentszSequence[Available] | NoneÚconceptsr   ÚcontactsÚcreatedzdate | NoneÚclassificationzCLASS | NoneÚdescriptionz
str | NoneÚendzdatetime | NoneÚlast_modifiedÚlinksr   ÚlocationÚ	organizerzvCalAddress | str | NoneÚpriorityz
int | NoneÚrefidsÚ
related_tor   ÚsequenceÚstampÚstartÚsubcomponentszIterable[Component] | NoneÚsummaryÚuidzstr | uuid.UUID | NoneÚurlr(   r   r)   )r*   s   "r+   r,   r-   ï   s!  € ÷ mñ mð #ðmð "ð	mð
 )ðmð /ðmð 'ðmð )ðmð ðmð %ðmð  ðmð ðmð #ðmð !ðmð ðmð  ,ð!mð" ð#mð$ 'ð%mð& +ð'mð( ð)mð* ð+mð, ð-mð. 2ð/mð0 ð1mð2 $ð3mð4 ð5mð6 
ñ7mr.   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 F  pVP#                  V4       K  	  V P$                  '       dy   Ve0   \'        V\(        4      '       d   VP*                  f   \-        R4      hV
e0   \'        V
\(        4      '       d   V
P*                  f   \-        R4      hVP/                  VV
4       VVn        V
Vn        V# )aé  Create a new event with all required properties.

This creates a new Availability in accordance with :rfc:`7953`.

Parameters:
    busy_type: The :attr:`busy_type` of the availability.
    categories: The :attr:`categories` of the availability.
    classification: The :attr:`classification` of the availability.
    comments: The :attr:`~icalendar.cal.component.Component.comments` of the availability.
    concepts: The :attr:`~icalendar.cal.component.Component.concepts` of the availability.
    contacts: The :attr:`contacts` of the availability.
    created: The :attr:`~icalendar.cal.component.Component.created` of the availability.
    description: The :attr:`description` of the availability.
    end: The :attr:`end` of the availability.
    last_modified: The :attr:`~icalendar.cal.component.Component.last_modified` of the
        availability.
    links: The :attr:`~icalendar.cal.component.Component.links` of the availability.
    location: The :attr:`location` of the availability.
    organizer: The :attr:`organizer` of the availability.
    refids: :attr:`~icalendar.cal.component.Component.refids` of the availability.
    related_to: :attr:`~icalendar.cal.component.Component.related_to` of the availability.
    sequence: The :attr:`sequence` of the availability.
    stamp: The :attr:`~icalendar.cal.component.Component.stamp` of the availability.
        If None, this is set to the current time.
    start: The :attr:`start` of the availability.
    subcomponents: The :attr:`~icalendar.cal.component.Component.subcomponents` of the availability.
    summary: The :attr:`summary` of the availability.
    uid: The :attr:`~icalendar.cal.component.Component.uid` of the availability.
        If ``None``, this is set to a new :func:`uuid.uuid4`.
    url: The :attr:`url` of the availability.

Returns:
    :class:`Availability`

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

.. warning:: As time progresses, we will be stricter with the validation.
)	rH   r<   r8   r@   rA   rF   rE   r:   rJ   z5Availability start must be a datetime with a timezonez3Availability end must be a datetime with a timezone)ÚsuperÚnewÚ_utc_nowrK   r>   ÚuuidÚuuid4rL   rG   r7   r=   rM   r6   rC   rB   rD   r;   Úadd_componentÚ_validate_newÚ
isinstancer   Útzinfor   Ú_validate_start_and_endrI   r?   )Úclsr6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   ÚavailabilityÚsubcomponentÚ	__class__s   "&&&&&&&&&&&&&&&&&&&&&&&&  €r+   rP   ÚAvailability.newî   sT  ø€ ôJ #™W™[Ø Ò,‘%°#·,±,³.ØØØ'ØØ!ØØØ'ð )ó 

ˆð  'ˆÔØ#.ˆÔ Ø"%¢/™3´t·z²z³|ˆÔØ (ˆÔØ",ˆÔØ&4ˆÔ#ØˆÔØ!*ˆÔØ!*ˆÔØ (ˆÔØ (ˆÔØ (ˆÔÛ&ˆLØ×&Ñ& |Ö4ñ 'à××ÐØÒ Ü˜u¤h×/Ò/°5·<±<Ò3Gä%ØKóð ð ŠÜ˜s¤H×-Ò-°·±Ò1Cä%ØIóð ð ×0Ñ0°¸Ô<Ø"ˆÔØˆÔØÐr.   c               ó    € V ^8„  d   QhRRRR/# )r'   ÚnameÚstrr(   r$   r)   )r*   s   "r+   r,   r-   _  s   € ÷ Bñ B˜3ð B°,ñ Br.   c                ó8   € V P                  \        RV4      4      # )z0Return the calendar example with the given name.Úavailabilities)Ú	from_icalr   )rY   r_   s   &&r+   ÚexampleÚAvailability.example^  s   € ð �}‰}œ[Ð)9¸4Ó@ÓAÐAr.   r)   )	ÚDTSTARTÚDTENDÚDURATIONÚDTSTAMPÚUIDÚSEQUENCEÚSUMMARYÚDESCRIPTIONÚ	ORGANIZER)rf   ri   rj   )ri   rj   r    r!   ÚCREATEDrm   rf   zLAST-MODIFIEDÚLOCATIONrn   ÚPRIORITYrk   rl   ÚURLrg   rh   )rg   rh   )Nr)   Nr)   NNNNNNNNNNNNNNNNNNNN)Ú
rfc_7953_1)2Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r_   Úcanonical_orderÚrequiredÚ
singletonsÚ	exclusiver   rC   r   r6   r   rK   r   r>   r   rG   r
   r=   r   rM   r   rB   r	   r7   r   rD   r   r;   r   rI   rf   r   rg   r   rh   r   Údurationr   r?   Úpropertyr3   ÚclassmethodrP   rd   Ú__static_attributes__Ú__classcell__)r\   s   @r+   r$   r$   0   sÎ   ø† ñsðj €Dð
€Oð€Hð€Jð&€Ið
 #€IØ"€IØ€GØ&€KØ €HØ#€NØ
€CØ €HØ$€JØ €HØ €Hà/Ð/€EˆGØ#€EÙ  Ó0€HØ)€HØ
€Càô&ó ð&ð ÷mñ mó ðmð^ öBó öBr.   r$   )0rx   Ú
__future__r   rR   r   Útypingr   Úicalendar.attrr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Úicalendar.cal.examplesr   Úicalendar.errorr   Ú	componentr   Úcollections.abcr   r   r   Úicalendar.cal.availabler   Úicalendar.compatibilityr   Úicalendar.enumsr    r!   Úicalendar.propr"   r$   Ú__all__r)   r.   r+   Ú<module>rŽ      sq   ðñõ
 #ã Ý Ý  ÷÷ ÷ ÷ ÷ ñ õ* /Ý +å  çß2Ýå1Ý,ß/Ý*ôqB�9ô qBðh	 Ð
‚r.   