
    #h	                     N    S SK r S SKJr  S SKrS SKJr  SSKJr   " S S\5      r	g)    N)Iterator)Arrow   )Eventc                       \ rS rSrSS jrS\\   4S jrS\S\S\\   4S jr	S\S\S\\   4S	 jr
S
\S\\   4S jrS
\S\\   4S jrSS\S\S\\   4S jjrSS\S\\   4S jjrS\\   4S jrSrg)Timeline
   returnNc                     Xl         g)zInstanciates a new Timeline.
(You should not have to instanciate a new timeline by yourself)

Args:
    calendar : :class:`ics.icalendar.Calendar`
N	_calendar)selfcalendars     L/Users/user/Downloads/htwk/venv/lib/python3.13/site-packages/ics/timeline.py__init__Timeline.__init__   s	     "    c              #      #    U R                   R                   Vs/ s H  oR                  c  M  UPM     nn[        R                  " U5        U(       a"  [        R
                  " U5      v   U(       a  M!  ggs  snf 7f)a,  Iterates on every event from the :class:`ics.icalendar.Calendar` in chronological order

Note :
    - chronological order is defined by the comparaison operators in :class:`ics.event.Event`
    - Events with no `begin` will not appear here. (To list all events in a `Calendar` use `Calendar.events`)
N)r   eventsbeginheapqheapifyheappop)r   xheaps      r   __iter__Timeline.__iter__   sV       >>00H0aGG0Hd--%% d Is   A<A7A7>A<5A<startstopc              #      #    U  H?  nXR                   s=::  a  U::  d  M  O  M  XR                  s=::  a  U::  d  M7  O  M;  Uv   MA     g7f)zIterates (in chronological order) over every event that is included
in the timespan between `start` and `stop`

Args:
    start : (Arrow object)
    stop : (Arrow object)
Nr   endr   r   r   events       r   includedTimeline.included#   s:      E,,,*d** s   A	A	A	c              #      #    U  H[  nXR                   s=::  a  U::  d>  O  XR                  s=::  a  U::  d&  O  UR                   U::  d  ME  UR                  U:  d  MW  Uv   M]     g7f)zIterates (in chronological order) over every event that has an intersection
with the timespan between `start` and `stop`

Args:
    start : (Arrow object)
    stop : (Arrow object)
Nr!   r#   s       r   overlappingTimeline.overlapping0   sK      E++--		)T){{e#		T(9	 s   AA%
A%	A%instantc              #   J   #    U  H  nUR                   U:  d  M  Uv   M     g7f)a
  Iterates (in chronological order) on every event from the :class:`ics.icalendar.Calendar` in chronological order.
The first event of the iteration has a starting date greater (later) than `instant`

Args:
    instant : (Arrow object) starting point of the iteration
N)r   r   r*   r$   s      r   start_afterTimeline.start_after>   s"      E{{W$ s   #	#c              #   t   #    U  H.  nUR                   Us=::  a  UR                  ::  d  M&  O  M*  Uv   M0     g7f)zxIterates (in chronological order) over all events that are occuring during `instant`.

Args:
    instant (Arrow object)
Nr!   r,   s      r   atTimeline.atI   s.      E{{g222 s   %88daystrictc                     UR                  S5      R                  S5      u  p4U(       a  U R                  X45      $ U R                  X45      $ )zIterates (in chronological order) over all events that occurs on `day`

Args:
    day (Arrow object)
    strict (bool): if True events will be returned only if they are            strictly *included* in `day`.
r2   )floorspanr%   r(   )r   r2   r3   	day_startday_stops        r   onTimeline.onT   sC     "ii.33E:	==55##I88r   c                 H    U R                  [        R                  " 5       US9$ )zIterates (in chronological order) over all events that occurs today

Args:
    strict (bool): if True events will be returned only if they are            strictly *included* in `day`.
)r3   )r9   arrownow)r   r3   s     r   todayTimeline.todayb   s     wwuyy{6w22r   c                 J    U R                  [        R                  " 5       5      $ )zJIterates (in chronological order) over all events that occurs now
        )r0   r<   r=   )r   s    r   r=   Timeline.nowk   s     wwuyy{##r   r   )r
   N)F)__name__
__module____qualname____firstlineno__r   r   r   r   r   r%   r(   r-   r0   boolr9   r>   r=   __static_attributes__ r   r   r   r   
   s    "&(5/ &e 5 Xe_  e  	5 	Xe_ 		% 	HUO 	9e 9T 9huo 93D 3Xe_ 3$Xe_ $r   r   )
r   typingr   r<   arrow.arrowr   r$   r   objectr   rH   r   r   <module>rL      s"        d$v d$r   