+
    ¾¾j`  ã                  óê  € R t ^ RIHt ^ RIt^ RIHtHtHt ^ RIHt ^ RI	t	^ RI
HtHtHtHtHtHtHtHtHt R R lt]	P*                  ! ]].R7      R	 4       t]	P*                  ! ]! R
^^^^4      ]! R
^^4      ]! R
^^^^]! R4      R7      .R7      R 4       tR tR tR tR t]	P*                  ! ]]]].R7      R 4       tR tR t]! 4       t]PA                  R]! R
^^^^4      4       ]PA                  R]! R
^^^^4      4       ]PB                  ! ]PE                  4       4      t#]! 4       t$]$PA                  R]! R^^4      ]! R^^4      34       ]! ]4      t%]! ]#4      t&]! ]$4      t']	PP                  PS                  R]]#]$]%]&]'.4      R 4       t*R t+]	P*                  ! ]! R
^^^^4      ]! R
^^4      ]! R
^^^^]! R4      R7      .R7      R 4       t,R t-R t.R t/R t0]	P*                  ! ]-]0].]/.R7      R  4       t1R! t2R" t3]	PP                  PS                  R#RR$.4      R% 4       t4R& R' lt5R( R) lt6R* R+ lt7]	P*                  ! ]5]6]7.R7      R, 4       t8R- t9]! 4       t:]:PA                  R]! R.^^^
^4      4       ]:PA                  R$]! R.^^4      4       ]! 4       t;];PA                  R$]! R.^^^
^4      4       ];PA                  R]! R.^^4      4       ]! 4       t<]<PA                  R$]! R.^^^
^4      4       ]<PA                  R]! R.^^^
^4      4       ]<PA                  R/]! ^R07      4       ]! 4       t=]=PA                  R]! R.^^4      4       ]=PA                  R/]! ^R17      4       ]! 4       t>]>PA                  R]! R.^^^
^4      4       ]>PA                  R2]! R.^^4      4       ]! 4       t?]?PA                  R2]! R.^^^
^4      4       ]?PA                  R]! R.^^4      4       ]! 4       t@]@PA                  R2]! R.^^^
^4      4       ]@PA                  R]! R.^^^
^4      4       ]@PA                  R/]! ^R07      4       ]! 4       tA]APA                  R]! R.^^4      4       ]APA                  R/]! ^R17      4       ]	PP                  PS                  Rn]:R33];R33]<R43]=R53]>R63]?R63]@R73]AR53.4      ]	PP                  PS                  R#R8R9.4      R: 4       4       tBR; tCR< tDR= tER> tFR? tGR@ tHRA tI]! 4       tJ]! 4       tK]KPA                  R/]! ^R17      4       ]! 4       tL]! 4       tM]MPA                  R/]! ^R17      4       ]	PP                  PS                  RB]J]L.4      ]	PP                  PS                  R#. RoO4      RD 4       4       tN]	PP                  PS                  RE]K]M.4      RF 4       tO]	PP                  PS                  RG]P! 4       ]! ^R07      ]! R.^
^^
^4      ]! ^R07      3.4      ]	PP                  PS                  Rp]R83]R93]R3]R$3]R83]R93]R3]R83]R93]R3]R23.4      RI 4       4       tQRJ RK ltR]	PP                  PS                  RG]P! 4       R]! R.^
^^
^4      ]! ^R07      3]! RL^^4      ]! R
^^4      .4      RM 4       tSRN tTRO tU]	PP                  PS                  RqR]! R.^
^^
^4      3R$]! R.^
^^
^4      3R/]! ^R07      3.4      tV]VRP 4       tW]VRQ 4       tX]	PP                  PS                  R#. RrO4      RR 4       tYRS tZ]	PP                  PS                  R#. RsO4      ]	PP                  PS                  R8]! R.^
^^
^4      ]! R.^
^4      ]! R.^
^^
^]! R4      R7      .4      RT 4       4       t[]	PP                  PS                  R#R8R9.4      RU 4       t\RV t]]	PP                  PS                  RtRW]PB                  ! RX4      RY3RZ]! RuR07      R[3R\]! RuR07      RY3.4      R] 4       t^R^ t_R_ t`R` taRa tb]	PP                  PS                  RvRWRwRw]PB                  ! RX4      ]PB                  ! Rb4      ]PB                  ! Rc4      ]PB                  ! Rd4      ]PB                  ! Re4      333RZRw]! RuR07      3Rw33R\]! RuR07      3RwRw33.4      Rf 4       tcRg td]! ^R17      teRh tfRi tg]	PP                  PS                  RvRWRwRw]PB                  ! RX4      333RZRw]! RuR07      3Rw33R\]! RuR07      3RwRw33.4      ]	PP                  PS                  RC]! RxR07      ]e.4      ]	PP                  PS                  Rj^^.4      Rk 4       4       4       th]	PP                  PS                  RG]P! 4       Rl^{]! R.^^4      .4      ]	PP                  PS                  RH]].4      Rm 4       4       tiR# )yzqThis tests the properties of components and their types.

See https://github.com/collective/icalendar/issues/662
)ÚannotationsN)ÚdateÚdatetimeÚ	timedelta)ÚZoneInfo)	ÚAlarmÚEventÚIncompleteComponentÚInvalidCalendarÚJournalÚTodoÚ	vDatetimeÚ	vDDDTypesÚ	vDurationc               ó$   € V ^8„  d   QhRRRRRR/# )é   Ú	componentzEvent | TodoÚpropÚstrÚreturn© )Úformats   "Úr/home/ralf/ical-fahrzeuge/venv/lib/python3.14/site-packages/icalendar/tests/test_issue_662_component_properties.pyÚ__annotate__r      s!   € ÷ ñ �Lð ¨ð °ñ ó    c                ó`   € \        V \        4      '       d   VP                  4       R8X  d   R# V# )zUTranslate the end property.

This allows us to run the same tests on Event and Todo.
ÚDTENDÚDUE)Ú
isinstancer   Úupper)r   r   s   &&r   r   r      s&   € ô
 �)œT×"Ò" t§z¡z£|°wÔ'>ÙØ€Kr   )Úparamsc                ó"   € V P                  4       # )zThe event to test.©Úparam©Úrequests   &r   Ústart_end_componentr&   %   s   € ð �=‰=‹?Ðr   iæ  zEurope/Paris)Útzinfoc                ó>   € V! W P                   4       V P                   # )zStart of the event.r"   )r%   Úset_component_startr&   s   &&&r   Údtstartr*   +   s   € ñ Ð+¯]©]Ô;Ø�=‰=Ðr   c                ó˜   € \        V 4      p\        V4      VR&   V P                  4        V P                  \	        V 4      ! V4      4       R# )ú*Create the event with the __init__ method.r*   N)Údictr   ÚclearÚupdateÚtype)r   ÚstartÚds   && r   Ú_set_component_start_initr3   8   s:   € äˆY‹€AÜ˜UÓ#€A€i�LØ‡O�OÔØ×Ñ”T˜)”_ QÓ'Ö(r   c                ó   € Wn         R# ©z+Create the event with the dtstart property.N©ÚDTSTART©r   r1   s   &&r   Ú_set_component_dtstartr9   @   s   € àÖr   c                ó   € Wn         R# r5   ©r1   r8   s   &&r   Ú_set_component_start_attrr<   E   s   € à†Or   c                óî   € V P                  RV4       V P                  4       P                  4       p\        V4       V P	                  4        V P                  \        V 4      P                  V4      4       R# )z)Create the event with the start property.r*   N)ÚaddÚto_icalÚdecodeÚprintr.   r/   r0   Ú	from_ical)r   r1   Úicss   && r   Ú_set_component_start_icsrD   J   sU   € à‡M�M�)˜UÔ#Ø
×
Ñ
Ó
×
$Ñ
$Ó
&€CÜ	ˆ#„JØ‡O�OÔØ×Ñ”T˜)“_×.Ñ.¨sÓ3Ö4r   c                ó   € V P                   # ©zCreate a new event.r"   r$   s   &r   r)   r)   S   ó   € ð �=‰=Ðr   c                ó*   € WP                   8X  g   Q hR# ©zTest the start of events.Nr6   ©r*   r&   s   &&r   Útest_component_dtstartrK   `   s   € à×1Ñ1Ô1Ð1Ò1r   c                ó,   € VP                   V 8X  g   Q hR# rI   r;   rJ   s   &&r   Útest_event_startrM   e   s   € à×$Ñ$¨Ô/Ð/Ò/r   r*   r7   iâ  Úinvalid_eventc                ó0  € \         P                  ! \        4      ;_uu_ 4        V P                   RRR4       \         P                  ! \        4      ;_uu_ 4        V P                   RRR4       R#   + '       g   i     LI; i  + '       g   i     R# ; i)ú"Check that we get the right error.N)ÚpytestÚraisesr
   r1   r7   )rN   s   &r   Útest_multiple_dtstartrS   u   sT   € ô 
�Š”×	'Õ	'Ø×Ò÷ 
(ä	�Š”×	'Õ	'Ø×Ò÷ 
(Ñ	'÷ 
(×	'úç	'×	'Ð	'ús   £A1ÁBÁ1B	ÂB	c                ó¼   € V P                   e   Q h\        P                  ! \        4      ;_uu_ 4        V P                   RRR4       R#   + '       g   i     R# ; i)zÖDTSTART is optional.

The following is REQUIRED if the component
appears in an iCalendar object that doesn't
specify the "METHOD" property; otherwise, it
is OPTIONAL; in any case, it MUST NOT occur
more than once.
N)r7   rQ   rR   r	   r1   ©r&   s   &r   Útest_no_dtstartrV   ˆ   s>   € ð ×&Ñ&Ò.Ð.Ð.Ü	�ŠÔ*×	+Õ	+Ø×!Ò!÷ 
,×	+×	+Ò	+ús   ³A
Á
A	c                ó>   € V! W P                   4       V P                   # )zend of the event.r"   )r%   Úset_component_endr&   s   &&&r   ÚdtendrY   –   s   € ñ Ð)¯=©=Ô9Ø�=‰=Ðr   c                ó¬   € \        V 4      p\        V4      V\        V R4      &   V P                  4        V P	                  \        V 4      ! V4      4       R# )r,   rY   N)r-   r   r   r.   r/   r0   )r   Úendr2   s   && r   Ú_set_component_end_initr\   £   sA   € äˆY‹€AÜ"+¨C£.€A„dˆ9�gÓÑØ‡O�OÔØ×Ñ”T˜)”_ QÓ'Ö(r   c                ó4   € \        V \        V R4      V4       R# )ú)Create the event with the dtend property.r   N)Úsetattrr   ©r   r[   s   &&r   Ú_set_component_end_propertyra   «   s   € äˆI”t˜I wÓ/°Ö5r   c                ó   € Wn         R# )r^   N©r[   r`   s   &&r   Ú_set_component_end_attrrd   °   s   € à†Mr   c                ó  € V P                  \        V R4      V4       V P                  4       P                  4       p\	        V4       V P                  4        V P                  \        V 4      P                  V4      4       R# )z'Create the event with the end property.r   N)	r>   r   r?   r@   rA   r.   r/   r0   rB   )r   r[   rC   s   && r   Ú_set_component_end_icsrf   µ   s\   € à‡M�M”$�y 'Ó*¨CÔ0Ø
×
Ñ
Ó
×
$Ñ
$Ó
&€CÜ	ˆ#„JØ‡O�OÔØ×Ñ”T˜)“_×.Ñ.¨sÓ3Ö4r   c                ó   € V P                   # rF   r"   r$   s   &r   rX   rX   ¾   rG   r   c                óB   € \        VR4      p\        W4      V 8X  g   Q hR# )úTest the end of events.r   N)r   Úgetattr)rY   r&   Úattrs   && r   Útest_component_end_propertyrl   Ë   s#   € äÐ# WÓ-€DÜÐ&Ó-°Ô6Ð6Ò6r   c                ó,   € VP                   V 8X  g   Q hR# )ri   Nrc   )rY   r&   s   &&r   Útest_component_endrn   Ñ   s   € à×"Ñ" eÔ+Ð+Ò+r   rk   r   c                óf   € \        W4      p\        W4       \        W4      e   Q h\        W4       R # ©N)r   Údelattrrj   )r&   r*   rY   rk   s   &&&&r   Útest_delete_attrrr   Ö   s1   € äÐ#Ó*€DÜÐÔ&ÜÐ&Ó-Ò5Ð5Ð5ÜÐÖ&r   c               ó    € V ^8„  d   QhRRRR/# ©r   Úeventr   Údurationr   r   )r   s   "r   r   r   Þ   ó   € ÷ ,ñ , 5ð ,°Iñ ,r   c                ó"   € \        V4      V R&   R# ©zSet the vDDDTypes valueÚDURATIONN)r   ©ru   rv   s   &&r   Ú_set_duration_vdddtypesr|   Þ   ó   € ä! (Ó+€Eˆ*Ór   c               ó    € V ^8„  d   QhRRRR/# rt   r   )r   s   "r   r   r   ã   s   € ÷ $ñ $˜Uð $¨iñ $r   c                ó*   € V P                  RV4       R# ry   )r>   r{   s   &&r   Ú_set_duration_addr€   ã   s   € à	‡I�Iˆj˜(Ö#r   c               ó    € V ^8„  d   QhRRRR/# rt   r   )r   s   "r   r   r   è   rw   r   c                ó"   € \        V4      V R&   R# ry   )r   r{   s   &&r   Ú_set_duration_vdurationrƒ   è   r}   r   c                ó„   € \        V\        4      '       d   \        ^R7      M\        ^R7      pVP                  W4       V# )z¨... events have a DATE value type for the "DTSTART" property ...
If such a "VEVENT" has a "DURATION"
property, it MUST be specified as a "dur-day" or "dur-week" value.
©Úhours©Údays)r   r   r   r#   )r&   r*   r%   rv   s   &&& r   rv   rv   í   s9   € ô )¨´(×;Ò;Œ	˜ÕÄÐPQÔARð ð ‡M�MÐ%Ô0Ø€Or   c                óv   € V P                   V P                  ,
          pW28X  g   Q hV P                  V8X  g   Q hR# )z'Check calculation of end with duration.N)r[   r1   rv   )r&   r*   rv   Údurs   &&& r   Útest_start_and_durationr‹   ü   s7   € à
×
!Ñ
!Ð$7×$=Ñ$=Õ
=€CØŒ?Ðˆ?Ø×'Ñ'¨8Ô3Ð3Ò3r   éè  rz   r‡   r…   r   zDDTSTART and DTEND must be of the same type, either date or datetime.z<Only one of DTEND and DURATION may be in a VEVENT, not both.z:When DTSTART is a date, DURATION must be of days or weeks.zBDTSTART and DUE must be of the same type, either date or datetime.z9Only one of DUE and DURATION may be in a VTODO, not both.r1   r[   c                óà   € \         P                  ! \        4      ;_uu_ 4       p\        W4       RRR4       XP                  P
                  ^ ,          V8X  g   Q hR#   + '       g   i     L6; i)z3Test that the end and start throuw the right error.N)rQ   rR   r
   rj   ÚvalueÚargs)Úinvalid_componentÚmessagerk   Úes   &&& r   Útest_invalid_eventr“   %  sG   € ôP 
�Š”×	'Ô	'¨1ÜÐ!Ô(÷ 
(à�7‰7�<‰<˜�?˜gÔ%Ð%Ò%÷ 
(×	'ús   £AÁA-	c                 ó¶   € \        4       p \        R^
^^
^4      V n        V P                  V P                  8X  g   Q hV P                  \        ^ R7      8X  g   Q hR# )zá
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.
rŒ   r‡   N)r   r   r1   r[   rv   r   ©ru   s    r   Útest_event_duration_zeror–   R  sL   € ô ‹G€EÜ˜4  R¨¨RÓ0€E„KØ�9‰9˜Ÿ™Ô#Ð#Ð#Ø�>‰>œY¨AÔ.Ô.Ð.Ò.r   c                 óÔ   € \        4       p \        R^
^4      V n        V P                  V P                  \	        ^R7      ,           8X  g   Q hV P
                  \	        ^R7      8X  g   Q hR# )z¹
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
rŒ   r‡   N©r   r   r1   r[   r   rv   r•   s    r   Útest_event_duration_one_dayr™   _  sR   € ô ‹G€EÜ�t˜R Ó$€E„KØ�9‰9˜Ÿ™¤i°QÔ&7Õ7Ô7Ð7Ð7Ø�>‰>œY¨AÔ.Ô.Ð.Ò.r   c                 óÄ   € \        R^^^^^ 4      p \        P                  ! V R7      pVP                  V 8X  g   Q hVP                  \        ^ 4      8X  g   Q hRV9  g   Q hR# )uL  Event.new() with a naive datetime and no end/duration: implicit zero duration.

See https://github.com/collective/icalendar/issues/1275

RFC 5545 Â§3.6.1: "For cases where a VEVENT specifies a DTSTART with a
DATE-TIME value type but no DTEND property, the event ends on the same
calendar date and time of day specified by DTSTART."
éê  r;   r   N)r   r   Únewr[   rv   r   ©r1   ru   s     r   Ú7test_event_new_datetime_no_dtend_implicit_zero_durationrž   l  s\   € ô �T˜1˜b ! R¨Ó+€EÜ�IŠI˜EÔ"€EØ�9‰9˜ÔÐÐØ�>‰>œY q›\Ô)Ð)Ð)Ø˜%ÔÐÒr   c           
     óä   € V P                  \        R^^^^^ 4      R4      p\        P                  ! VR7      pVP                  V8X  g   Q hVP
                  \        ^ 4      8X  g   Q hRV9  g   Q hR# )a'  Event.new() with a timezone-aware datetime and no end/duration: implicit zero duration.

See https://github.com/collective/icalendar/issues/1275

This is the exact case reported in the issue: timezone-aware DTSTART with
neither DTEND nor DURATION should yield zero duration, not raise an error.
r›   zEurope/Berlinr;   r   N)Úlocalizer   r   rœ   r[   rv   r   )Útzpr1   ru   s   &  r   Ú?test_event_new_datetime_tzaware_no_dtend_implicit_zero_durationr¢   |  sg   € ð �L‰Lœ $¨¨2¨q°"°aÓ8¸/ÓJ€EÜ�IŠI˜EÔ"€EØ�9‰9˜ÔÐÐØ�>‰>œY q›\Ô)Ð)Ð)Ø˜%ÔÐÒr   c                 óâ   € \        R^^4      p \        P                  ! V R7      pVP                  V \	        ^R7      ,           8X  g   Q hVP
                  \	        ^R7      8X  g   Q hRV9  g   Q hR# )u+  Event.new() with a date and no end/duration: implicit one-day duration.

See https://github.com/collective/icalendar/issues/1275

RFC 5545 Â§3.6.1: "For cases where a VEVENT specifies a DTSTART with a
DATE value type but no DTEND nor DURATION property, the event's duration
is taken to be one day."
r›   r;   r‡   r   N)r   r   rœ   r[   r   rv   r�   s     r   Ú-test_event_new_date_no_dtend_implicit_one_dayr¤   ‹  sa   € ô ��q˜"Ó€EÜ�IŠI˜EÔ"€EØ�9‰9˜¤	¨qÔ 1Õ1Ô1Ð1Ð1Ø�>‰>œY¨AÔ.Ô.Ð.Ð.Ø˜%ÔÐÒr   c                 ó¶   € \        4       p \        R^
^^
^4      V n        V P                  V P                  8X  g   Q hV P                  \        ^ R7      8X  g   Q hR# )z3We do not know about the duration of a todo really.rŒ   r‡   N)r   r   r1   r[   rv   r   )Útodos    r   Útest_todo_duration_zeror§   ›  sJ   € ä‹6€DÜ˜$  B¨¨BÓ/€D„JØ�8‰8�t—z‘zÔ!Ð!Ð!Ø�=‰=œI¨1Ô-Ô-Ð-Ò-r   c                 óÔ   € \        4       p \        R^
^4      V n        V P                  V P                  \	        ^R7      ,           8X  g   Q hV P
                  \	        ^R7      8X  g   Q hR# )zñThe end is at the end of the day, excluding midnight.

RFC 5545:
The following is an example of a "VTODO" calendar
component that needs to be completed before May 1st, 2007.  On
midnight May 1st, 2007 this to-do would be considered overdue.
rŒ   r‡   Nr˜   r•   s    r   Útest_todo_duration_one_dayr©   £  sR   € ô ‹G€EÜ�t˜R Ó$€E„KØ�9‰9˜Ÿ™¤i°QÔ&7Õ7Ô7Ð7Ð7Ø�>‰>œY¨AÔ.Ô.Ð.Ò.r   Úincomplete_event_endrv   c                óš   € \         P                  ! \        4      ;_uu_ 4        \        W4       RRR4       R#   + '       g   i     R# ; i)zGTest that components without required properties throw the right error.N)rQ   rR   r	   rj   )rª   rk   s   &&r   Útest_incomplete_eventr¬   ¹  s,   € ô 
�ŠÔ*×	+Õ	+ÜÐ$Ô+÷ 
,×	+×	+Ò	+ús	   £9¹A
	Úcomponent_with_durationc                ój  € V P                   \        ^R7      8X  g   Q h\        P                  ! \        4      ;_uu_ 4        V P
                  pRRR4       \        P                  ! \        4      ;_uu_ 4        V P                  pRRR4       R#   + '       g   i     LI; i  + '       g   i     R# ; i)zRTest that DURATION property is accessible even without DTSTART (fixes issue #867).r…   N)rv   r   rQ   rR   r	   r1   r[   )r­   Ú_s   & r   Ú1test_duration_property_accessible_without_dtstartr°   Ç  su   € ð #×+Ñ+¬y¸qÔ/AÔAÐAÐAô 
�ŠÔ*×	+Õ	+Ø#×)Ñ)ˆ÷ 
,ä	�ŠÔ*×	+Õ	+Ø#×'Ñ'ˆ÷ 
,Ñ	+÷ 
,×	+úç	+×	+Ð	+ús   Á BÁ7B!ÂB	Â!B2	Úinvalid_valueÚ	Componentc                ó  € V! 4       p\         P                  ! \        4      ;_uu_ 4       p\        W1V 4       RRR4       XP                  P
                  ^ ,          R\        V 4      P                   R28X  g   Q hR#   + '       g   i     LM; i)zRCheck that we get the right error.

- other types that vDDDTypes accepts
- object
NzUse datetime or date, not Ú.)rQ   rR   Ú	TypeErrorr_   rŽ   r�   r0   Ú__name__)r±   rk   r²   r   r’   s   &&&  r   Útest_set_invalid_startr·   Ú  si   € ñ< “€IÜ	�Š”y×	!Ô	! QÜ�	 Ô/÷ 
"ð 	
�‰�‰�Q�Ð7¼¸]Ó8K×8TÑ8TÐ7UÐUVÐWÔWðÚW÷ 
"×	!ús   ªA<Á<B	c               ó   € V ^8„  d   QhRR/# )r   r2   r-   r   )r   s   "r   r   r      s   € ÷ ñ ˆtñ r   c                ó   € W V&   R # rp   r   )r2   ÚkeyrŽ   s   &&&r   Úsetitemr»      s	   € Ø€cƒFr   iÜ  c                ó  € WR&   \         P                  ! \        4      ;_uu_ 4       pV P                   RRR4       XP                  P
                  ^ ,          R\        V4      P                   R28X  g   Q hR#   + '       g   i     LM; i)rP   rz   Nz"DURATION must be a timedelta, not r´   )rQ   rR   r
   rz   rŽ   r�   r0   r¶   )r&   r±   r’   s   && r   Útest_check_invalid_durationr½     sn   € ð '4˜
Ñ#Ü	�Š”×	'Ô	'¨1Ø×$Ò$÷ 
(ð 	
�‰�‰�Q�Ø/´°]Ó0C×0LÑ0LÐ/MÈQÐOô	Pðò	P÷ 
(×	'ús   §A9Á9B		c                ó  € \        V R4      p\        R^
^^
^4      V n        \        ^R7      V n        \        W\        R^
^^
^4      4       RV 9  g   Q hV P                  e   Q h\        W4      pV\        R^
^^
^4      8X  g   Q hR# )z+Setting the end should not break the event.r   rŒ   r‡   rz   N)r   r   r7   r   rz   r_   rj   )r&   r   r[   s   &  r   Ú)test_setting_the_end_deletes_the_durationr¿     s’   € äÐ$ gÓ.€EÜ"*¨4°°R¸¸RÓ"@ÐÔÜ#,°!Ô#4ÐÔ ÜÐ¬°°r¸2¸rÀ2Ó(FÔGØÐ0Ô0Ð0Ð0Ø×'Ñ'Ò/Ð/Ð/Ü
Ð%Ó
-€CØ”(˜4  R¨¨RÓ0Ô0Ð0Ò0r   c                ó  € \        V R4      p\        R^
^^
^4      V n        \        W\        R^
^^
^4      4       \	        ^R7      V n        W9  g   Q h\        W4      e   Q h\	        ^R7      V P
                  8X  g   Q hR# )z0Setting the duration should not break the event.r   rŒ   r‡   N)r   r   r7   r_   r   rz   rj   )r&   r   s   & r   Ú%test_setting_duration_deletes_the_endrÁ   %  sƒ   € äÐ$ gÓ.€EÜ"*¨4°°R¸¸RÓ"@ÐÔÜÐ¬°°r¸2¸rÀ2Ó(FÔGÜ#,°!Ô#4ÐÔ ØÔ+Ð+Ð+ÜÐ&Ó.Ò6Ð6Ð6Ü˜!ÔÐ 3× <Ñ <Ô<Ð<Ò<r   c                ó�   € \        W4      p\        WV4       W9   g   Q h\        W4      V8X  g   Q h\        WR4       W9  g   Q hR# )z(Setting attributes to None deletes them.N)r   r_   rj   ©r&   rk   rŽ   s   &&&r   Ú"test_setting_to_none_deletes_valuerÄ   :  sQ   € ô Ð#Ó*€DÜÐ uÔ-ØÔ&Ð&Ð&ÜÐ&Ó-°Ô6Ð6Ð6ÜÐ tÔ,ØÔ*Ð*Ò*r   c           	     ó’   € \        W4      p\        WV\        ^R7      ,           4       \        WV4       \        W4      V8X  g   Q hR# )z'Setting attributes twice replaces them.r‡   N)r   r_   r   rj   rÃ   s   &&&r   Útest_setting_a_value_twicerÆ   E  sC   € ô Ð#Ó*€DÜÐ u¬y¸aÔ/@Õ'@ÔAÜÐ uÔ-ÜÐ&Ó-°Ô6Ð6Ò6r   c                ó¸   € \        W4      pRW&   \        P                  ! \        4      ;_uu_ 4        \	        W4       RRR4       R#   + '       g   i     R# ; i)zSpecial case for None.N)r   rQ   rR   r
   rj   )r&   rk   s   &&r   Útest_invalid_nonerÈ   N  s?   € ô Ð#Ó*€DØ $ÐÑÜ	�Š”×	'Õ	'ÜÐ#Ô*÷ 
(×	'×	'Ò	'ús   ²AÁA	c                óL   € \        ^R7      V n        V =V P                  e   Q hR# )zTest the del command.r‡   N)r   rz   rU   s   &r   Útest_delete_durationrÊ   W  s(   € ä#,°!Ô#4ÐÔ ØÐ$Ø×'Ñ'Ò/Ð/Ò/r   c                óÚ   € \        4       p\        W!V 4       WP                  8X  g   Q hVP                  V 8X  g   Q hVP                  V 8X  g   Q hVP
                  \        ^ 4      8X  g   Q hR# )z,Test that we can set the start of a journal.N)r   r_   r7   r1   r[   rv   r   )r1   rk   Újs   && r   Útest_journal_startrÍ   ^  s]   € ô 	‹	€AÜˆA�UÔØ—I‘IÔÐÐØ�7‰7�eÔÐÐØ�5‰5�EŒ>Ðˆ>Ø�:‰:œ 1›Ô%Ð%Ò%r   c                ó  € \        4       p\        R^^^^4      Vn        RVn        VP                  e   Q hRV9  g   Q h\        P
                  ! \        4      ;_uu_ 4        \        W4       RRR4       R#   + '       g   i     R# ; i)z Delete the start of the journal.iÚ  Nr7   )r   r   r1   r7   rQ   rR   r	   rj   )rk   rÌ   s   & r   Útest_delete_journal_startrÏ   q  sk   € ô 	‹	€AÜ�t˜R  R¨Ó,€A„GØ€A„IØ�9‰9ÒÐÐØ˜AÔÐÐÜ	�ŠÔ*×	+Õ	+Ü�Ô÷ 
,×	+×	+Ò	+ús   Á!A7Á7B	c                 ó  € \        4       p \        R ^^4      V n        \        R ^^4      V n        \        R ^^4      V P                  8X  g   Q hV P                  \        R ^^4      8X  g   Q hV P                  \        R ^^4      8X  g   Q hR# )rŒ   N)r   r   r7   r1   r[   )rÌ   s    r   Ú*setting_twice_does_not_duplicate_the_entryrÑ   }  sz   € Ü‹	€AÜ�T˜1˜aÓ €A„IÜ�T˜1˜aÓ €A„IÜ��a˜Ó˜qŸy™yÔ(Ð(Ð(Ø�7‰7”d˜4  AÓ&Ô&Ð&Ð&Ø�5‰5”D˜˜q !Ó$Ô$Ð$Ò$r   Úrfc_5545_absolute_alarm_exampleÚ19970317T133000ZÚSTARTÚrfc_5545_endÚENDÚ
start_datec                ó^   € W,          pW$P                   8X  g   Q hW4P                  8X  g   Q hR# ©úGet the trigger property.N)ÚTRIGGERÚTRIGGER_RELATED)ÚalarmsÚfileÚtriggerÚrelatedÚalarms   &&&& r   Útest_get_alarm_trigger_propertyrâ   †  s-   € ð �L€EØ—m‘mÔ#Ð#Ð#Ø×+Ñ+Ô+Ð+Ò+r   c                 óœ   € \        4       p \        ^R7      V n        \        ^R7      V P                  8X  g   Q hV P                  R8X  g   Q hR# )úSet the alarm trigger.r…   rÔ   N©r   r   rÛ   rÜ   ©Úas    r   Útest_set_alarm_triggerrè   ™  s@   € ä‹€AÜ Ô"€A„IÜ˜1Ô §¡Ô*Ð*Ð*Ø×Ñ Ô'Ð'Ò'r   c                 óª   € \        4       p \        ^R7      V n        RV n        \        ^R7      V P                  8X  g   Q hV P                  R8X  g   Q hR# )rä   r…   rÖ   Nrå   ræ   s    r   Útest_set_alarm_trigger_relatedrê   ¡  sH   € ä‹€AÜ Ô"€A„IØ€AÔÜ˜1Ô §¡Ô*Ð*Ð*Ø×Ñ Ô%Ð%Ò%r   c                 ó<   € \        4       P                  R8X  g   Q hR# )zThe default is startrÔ   N)r   rÜ   r   r   r   Ú test_get_related_without_triggerrì   ª  s   € ä‹7×"Ñ" gÔ-Ð-Ò-r   c                 óì   € \         P                  ! \        4      ;_uu_ 4       p \        4       pRVn        RRR4       X P
                  P                  ^ ,          R8X  g   Q hR#   + '       g   i     L6; i)z)TRIGGER must be set to set the parameter.rÖ   Nz<You must set a TRIGGER before setting the RELATED parameter.)rQ   rR   Ú
ValueErrorr   rÜ   rŽ   r�   )r’   rç   s     r   Ú'test_cannot_set_related_without_triggerrï   ¯  sU   € ä	�Š”z×	"Ô	" aÜ‹GˆØ!ˆÔ÷ 
#ð 	
�‰�‰�Q�ØIô	Jðò	J÷	 
#×	"ús   £A#Á#A3	Ú19970317T134500ZÚ19970317T140000ZÚ19970317T141500ZÚ19970317T143000Zc                óŽ   € W,          p\        \        VP                  4      4       \        V4       VP                  V8X  g   Q hR# rÙ   )rA   ÚtupleÚtriggers)rÝ   rÞ   rö   rá   s   &&& r   Útest_get_alarm_triggersr÷   º  s5   € ð. �L€EÜ	Œ%�—‘Ó
Ô Ü	ˆ(„OØ�>‰>˜XÔ%Ð%Ò%r   c                 ó<   € \        4       P                  R8X  g   Q hR# )z)An alarm with no trigger has no triggers.N)r   r   r   )r   rö   r   r   r   Útest_triggers_emtpy_alarmrù   ×  s   € ä‹7×Ñ˜|Ô+Ð+Ò+r   c                 ó|   € \        4       p \        V n        \        V n        V P                  \        3RR38X  g   Q hR# ©zCheck incomplete values.Nr   )r   Úh1rÛ   rz   rö   ræ   s    r   Ú"test_triggers_emtpy_with_no_repeatrý   ß  s1   € ä‹€AÜ€A„IÜ€A„JØ�:‰:œ2˜%  R˜Ô(Ð(Ò(r   c                 ót   € \        4       p \        V n        ^
V n        V P                  \        3RR38X  g   Q hR# rû   )r   rü   rÛ   ÚREPEATrö   ræ   s    r   Ú$test_triggers_emtpy_with_no_durationr   ç  s1   € ä‹€AÜ€A„IØ€A„HØ�:‰:œ2˜%  R˜Ô(Ð(Ò(r   Úrepeatc                ól  € W,          P                  4       pWEn        W5n        \        W%P                  RR7       Fv  w  rbV'       g   VR8X  g   Q hK  \        V4      ^V,           8X  g   Q hV^ ,          V^ ,          8X  g   Q h\        P                  ! V4       F  w  rxW‡,
          V8X  d   K  Q h	  Kx  	  R# )rÚ   F)ÚstrictNr   )Úcopyrÿ   rz   Úziprö   ÚlenÚ	itertoolsÚpairwise)	rÝ   rÞ   rö   rv   r  rá   ÚexpectedÚxÚys	   &&&&&    r   Ú test_get_alarm_triggers_repeatedr  ï  sœ   € ð �L×ÑÓ€EØ„LØ„NÜ! (¯N©NÀ5×IÑˆßØ˜r”>Ð!�>ÙÜ�8‹}  F¥
Ô*Ð*Ð*Ø˜�{˜h q�kÔ)Ð)Ð)Ü×&Ò& xÖ0‰DˆAØ•5˜HÖ$Ð$Ð$ó 1ó Jr   zinvalid stringc                ó  € V ! 4       p\         P                  ! \        4      ;_uu_ 4       pWn        RRR4       XP                  P
                  ^ ,          R\        V4      P                   R28X  g   Q hR#   + '       g   i     LM; i)z•Test that setting duration with a non-timedelta raises TypeError.

This ensures that we get the expected error message:
'Use timedelta, not {type}.'
NzUse timedelta, not r´   )rQ   rR   rµ   rv   rŽ   r�   r0   r¶   )r²   r±   r   r’   s   &&  r   Útest_set_duration_invalid_typer    sa   € ñ  “€IÜ	�Š”y×	!Ô	! QØ*Ô÷ 
"à�7‰7�<‰<˜�?Ð 3´D¸Ó4G×4PÑ4PÐ3QÐQRÐSÔSÐSÒS÷ 
"×	!ús   ªA6Á6B	)r�   r‘   )r1   r[   rv   )r²   rk   )rk   rŽ   )r7   r   rz   )r7   r[   r1   )rÞ   rß   rà   éþÿÿÿ)rÞ   rö   r   éÿÿÿÿ)jÚ__doc__Ú
__future__r   r  r   r   r   Úzoneinfor   rQ   Ú	icalendarr   r   r	   r
   r   r   r   r   r   r   Úfixturer&   r*   r3   r9   r<   rD   r)   rK   rM   Úinvalid_start_event_1r>   rB   r?   Úinvalid_start_event_2Úinvalid_start_event_3Úinvalid_start_todo_1Úinvalid_start_todo_2Úinvalid_start_todo_3ÚmarkÚparametrizerS   rV   rY   r\   ra   rd   rf   rX   rl   rn   rr   r|   r€   rƒ   rv   r‹   Úinvalid_event_end_1Úinvalid_event_end_2Úinvalid_event_end_3Úinvalid_event_end_4Úinvalid_todo_end_1Úinvalid_todo_end_2Úinvalid_todo_end_3Úinvalid_todo_end_4r“   r–   r™   rž   r¢   r¤   r§   r©   Úincomplete_event_1Úincomplete_event_2Úincomplete_todo_1Úincomplete_todo_2r¬   r°   Úobjectr·   r»   r½   r¿   rÁ   Úvalid_valuesrÄ   rÆ   rÈ   rÊ   rÍ   rÏ   rÑ   râ   rè   rê   rì   rï   r÷   rù   rü   rý   r   r  r  r   r   r   Ú<module>r,     s©  ðñõ
 #ã ß .Ñ .Ý ã ÷
÷ 
õ 
õð ‡‚˜˜t�}Ô%ñó &ðð
 ‡‚á��q˜"˜b !Ó$ÙˆT�1�bÓÙ��q˜"˜b !©H°^Ó,DÔEðôñóðò)òò
ò
5ð ‡‚à!Ø ØØ!ð	ôñóðò
2ò
0ñ
 ›Ð Ø × Ñ ˜)¡X¨d°A°r¸2¸qÓ%AÔ BØ × Ñ ˜)¡X¨d°A°r¸2¸qÓ%AÔ BØŸšÐ(=×(EÑ(EÓ(GÓHÐ Ù›Ð Ø × Ñ ˜)¡d¨4°°AÓ&6¹¸TÀ1ÀaÓ8HÐ%IÔ JÙÐ1Ó2Ð ÙÐ1Ó2Ð ÙÐ1Ó2Ð ð ‡�×ÑØàØØØØØðó
ñó
ðò"ð ‡‚á��q˜"˜b !Ó$ÙˆT�1�bÓÙ��q˜"˜b !©H°^Ó,DÔEðôñóðò)ò6ò
ò
5ð ‡‚àØØ#Øð	ôñóðò
7ò,ð
 ‡�×Ñ˜ )¨WÐ!5Ó6ñ'ó 7ð'õ,õ
$õ
,ð
 ‡‚Ø#Ð%6Ð8OÐPôñ	óð	ò4ñ “gÐ Ø × Ñ ˜	¡8¨D°!°Q¸¸BÓ#?Ô @Ø × Ñ ˜¡ d¨A¨qÓ!1Ô 2Ù“gÐ Ø × Ñ ˜¡¨$°°1°b¸"Ó!=Ô >Ø × Ñ ˜	¡4¨¨a°Ó#3Ô 4Ù“gÐ Ø × Ñ ˜¡¨$°°1°b¸"Ó!=Ô >Ø × Ñ ˜	¡8¨D°!°Q¸¸BÓ#?Ô @Ø × Ñ ˜
¡I°1Ô$5Ô 6Ù“gÐ Ø × Ñ ˜	¡4¨¨a°Ó#3Ô 4Ø × Ñ ˜
¡I°AÔ$6Ô 7á“VÐ Ø × Ñ �y¡(¨4°°A°r¸2Ó">Ô ?Ø × Ñ �u™d 4¨¨AÓ.Ô /Ù“VÐ Ø × Ñ �u™h t¨Q°°2°rÓ:Ô ;Ø × Ñ �y¡$ t¨Q°Ó"2Ô 3Ù“VÐ Ø × Ñ �u™h t¨Q°°2°rÓ:Ô ;Ø × Ñ �y¡(¨4°°A°r¸2Ó">Ô ?Ø × Ñ �z¡9°!Ô#4Ô 5Ù“VÐ Ø × Ñ �y¡$ t¨Q°Ó"2Ô 3Ø × Ñ �z¡9°1Ô#5Ô 6ð ‡�×ÑØ$ð  ØRð	
ð
  ØRð	
ð
  ØJð	
ð
  ØHð	
ð
 ØPð	
ð
 ØPð	
ð
 ØGð	
ð
 ØHð	
ð;!ó$ðJ ‡�×Ñ˜ '¨5Ð!1Ó2ñ&ó 3óK$ðL&ò
/ò
/ò ò  ò ò .ò/ñ “WÐ Ù“WÐ Ø × Ñ �z¡9°1Ô#5Ô 6Ù“FÐ Ù“FÐ Ø × Ñ �j¡)°!Ô"4Ô 5ð ‡�×ÑØàØðóð ‡�×Ñ˜Ò!=Ó>ñ,ó ?óð,ð ‡�×ÑØàØðóñ	(óð	(ð ‡�×ÑØá‹Ù�qÔÙ	�$˜˜B  BÓ	'©¸Ô):Ð;ðóð ‡�×ÑØà	�ÐØ	�ˆØ	�	ÐØ	�ÐØ	�'ÐØ	�%ÐØ	�)ÐØ	ˆwˆØ	ˆuˆØ	ˆyÐØ	ˆuˆðóñ ó!óð0õð ‡�×ÑØá‹ØÙ	�$˜˜B  BÓ	'©¸Ô):Ð;ÙˆT�1�aÓÙ��q˜!Óðó	ñó	ðò	1ò=ð �{‰{×&Ñ&Øà	‘H˜T 2 r¨2¨rÓ2Ð3Ø	‘(˜4  R¨¨RÓ0Ð1Ø	‘Y AÔ&Ð'ðó€ð ñ+ó ð+ð ñ7ó ð7ð ‡�×Ñ˜Ò!AÓBñ+ó Cð+ò0ð ‡�×Ñ˜Ò!<Ó=Ø‡�×ÑØá��r˜2˜r 2Ó&ÙˆT�2�rÓÙ��r˜2˜r 2©h°~Ó.FÔGðóñ&óó >ð&ð ‡�×Ñ˜ '¨5Ð!1Ó2ñó 3ðò%ð ‡�×ÑØ"ð .Ø×ÒÐ 2Ó3Øð	
ð
 
™¨Ô+¨UÐ3Ø	‘y bÔ)¨7Ð3ðóñ,óð,ò(ò&ò.ò
ð ‡�×ÑØð .àØà×'Ò'Ð(:Ó;Ø×'Ò'Ð(:Ó;Ø×'Ò'Ð(:Ó;Ø×'Ò'Ð(:Ó;Ø×'Ò'Ð(:Ó;ðð
ð	
ð 
˜"™y¨bÔ1Ð3°RÐ8Ð9Ø	™¨Ô+Ð-¨r°2Ð6Ð7ð!óñ*&ó+ð*&ò,ñ
 �QÔ€ò)ò)ð ‡�×ÑØð .Ø��i×)Ò)Ð*<Ó=Ð?Ð@ð	
ð 
˜"™y¨bÔ1Ð3°RÐ8Ð9Ø	™¨Ô+Ð-¨r°2Ð6Ð7ðó
ð ‡�×Ñ˜¡i°RÔ&8¸"Ð%=Ó>Ø‡�×Ñ˜ A q 6Ó*ñ%ó +ó ?ó
ð%ð ‡�×ÑØá‹ØØÙˆT�1�aÓð	óð ‡�×Ñ˜ t¨U mÓ4ñ	Tó 5óò	Tr   