
    }f	                     N    d dl Z d dlmZ d dlZd dlmZ ddlmZ  G d de      Z	y)    N)Iterator)Arrow   )Eventc                       e Zd ZddZdee   fdZdededee   fdZdededee   fdZ	d	edee   fd
Z
d	edee   fdZddededee   fdZddedee   fdZdee   fdZy)TimelinereturnNc                     || _         y)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     K/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/ics/timeline.py__init__zTimeline.__init__   s     "    c              #      K   | j                   j                  D cg c]  }|j                  | }}t        j                  |       |rt        j
                  |       |ryyc c}w w)aL  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__zTimeline.__iter__   sW       >>00HaAGG4GHHd--%%  Is   A+A&A&2A+$A+startstopc              #      K   | D ]8  }||j                   cxk  r|k  sn ||j                  cxk  r|k  s2n 5| : yw)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   includedzTimeline.included#   s>       	E,,*d*	s   AA
Ac              #      K   | D ]T  }||j                   cxk  r|k  s9n ||j                  cxk  r|k  s"n |j                   |k  sA|j                  |k\  sQ| V yw)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   overlappingzTimeline.overlapping0   sU       	E%++--		)T){{e#		T(9		s   AAAAinstantc              #   B   K   | D ]  }|j                   |kD  s|  yw)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_afterzTimeline.start_after>   s(       	E{{W$	s   c              #   h   K   | D ])  }|j                   |cxk  r|j                  k  s#n &| + yw)zIterates (in chronological order) over all events that are occuring during `instant`.

        Args:
            instant (Arrow object)
        Nr   r&   s      r   atzTimeline.atI   s1       	E{{g22	s   %2
2daystrictc                     |j                  d      j                  d      \  }}|r| j                  ||      S | j                  ||      S )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`.
        r*   )floorspanr!   r#   )r   r*   r+   	day_startday_stops        r   onzTimeline.onT   sI     "ii.33E:	8==H55##Ix88r   c                 L    | j                  t        j                         |      S )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`.
        )r+   )r1   arrownow)r   r+   s     r   todayzTimeline.todayb   s     wwuyy{6w22r   c                 H    | j                  t        j                               S )zJIterates (in chronological order) over all events that occurs now
        )r)   r3   r4   )r   s    r   r4   zTimeline.nowk   s     wwuyy{##r   )r	   N)F)__name__
__module____qualname__r   r   r   r   r   r!   r#   r'   r)   boolr1   r5   r4    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   r3   arrow.arrowr   r    r   objectr   r;   r   r   <module>r?      s"        d$v d$r   