
    i                        d Z ddlmZ ddlZddlZddlmZmZ ddlm	Z	 ddl
mZ ddlmZ erddlmZ dd	lmZ dd
lmZ  G d de          ZdgZdS )zSelection for alarms.    )annotationsN)TYPE_CHECKINGSequence)EventAdapter)TodoAdapter)SelectComponents)	Component)ComponentAdapter)Seriesc                  H    e Zd ZdZeeffddZed             ZddZ	ddZ
dS )AlarmszSelect alarms and find their times.

    By default, alarms from TODOs and events are collected.
    You can use this to change which alarms are collected:

        Alarms((EventAdapter,))
        Alarms((TodoAdapter,))
    parents0tuple[type[ComponentAdapter] | SelectComponents]c                    || _         d S )Nr   )selfr   s     `/root/projects/butler/venv/lib/python3.11/site-packages/recurring_ical_events/selection/alarm.py__init__zAlarms.__init__   s         c                     dS )z'The name of the component we calculate.VALARM r   r   r   component_namezAlarms.component_name'   s	     xr   sourcer	   suppress_errorstuple[Exception]returnSequence[Series]c                .    fd| j         D             S )z(Collect the parent components of alarms.c                F    g | ]}|                               D ]}|S r   )collect_series_from).0parentsr   r   s      r   
<listcomp>z5Alarms.collect_parent_series_from.<locals>.<listcomp>0   sP     
 
 
//HH
 
  
 
 
 
r   r   )r   r   r   s    ``r   collect_parent_series_fromz!Alarms.collect_parent_series_from,   s6    
 
 
 
 
,
 
 
 	
r   c           
        ddl m}m}m}  |            }g }|                     ||          D ](}g }	|j        D ]}
|
j        D ]}t          j        |          5  |j	        }|||	v r	 ddd           2t          |t          j                  r,|                    ||
           |	                    |           n|j        dk    r5|                     |||                     |	                    |           n?|j        dk    r4|                     |||                     |	                    |           ddd           n# 1 swxY w Y   *|                                s|                    |           |S )zCollect all TODOs and Alarms from VEVENTs and VTODOs.

        suppress_errors - a list of errors that should be suppressed.
            A Series of events with such an error is removed from all results.
        r   )AbsoluteAlarmSeriesAlarmSeriesRelativeToEndAlarmSeriesRelativeToStartNSTARTEND)"recurring_ical_events.series.alarmr(   r)   r*   r&   
componentsalarms
contextlibsuppressTRIGGER
isinstancedatetimeaddappendTRIGGER_RELATEDis_empty)r   r   r   r(   r)   r*   absolute_alarmsresultseriesused_alarms	componentalarmtriggers                r   r!   zAlarms.collect_series_from6   s6   	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 .-//55foNN 	6 	6FK#. 6 6	&- 6 6E#,_== 6 6"'-"?e{.B.B$6 6 6 6 6 6 6 &gx/@AA 6+//yAAA'..u5555"2g=="MM*D*DUF*S*STTT'..u5555"2e;;"MM*B*B5&*Q*QRRR'..u5556 6 6 6 6 6 6 6 6 6 6 6 6 6 666 '')) 	+MM/***s   E	5CE	E
E
N)r   r   )r   r	   r   r   r   r   )__name__
__module____qualname____doc__r   r   r   staticmethodr   r&   r!   r   r   r   r   r      s          E
       \
 
 
 
$ $ $ $ $ $r   r   )rC   
__future__r   r0   r4   typingr   r   $recurring_ical_events.adapters.eventr   #recurring_ical_events.adapters.todor   $recurring_ical_events.selection.baser   icalendar.calr	   (recurring_ical_events.adapters.componentr
   recurring_ical_events.seriesr   r   __all__r   r   r   <module>rN      s      " " " " " "      * * * * * * * * = = = = = = ; ; ; ; ; ; A A A A A A 4''''''IIIIII333333F F F F F F F FR *r   