
    }f]              
          U d dl Z d dlmZ d dlmZmZmZmZmZ d dl	m
Z
 d dlZd dlmZ d dlmZ d dlmZ d dlmZmZ  ej*                         j,                  Zd	ed
dfdZd	ed
dfdZ ed dD              Zeeef   ed<   ded
efdZi fdee   d
efdZ ded
efdZ!d$d	edede"d
ee   fdZ#ded
efdZ$ded
efdZ%dedeeef   d
efdZ&ded
efdZ'ded
efd Z(d
efd!Z)ded
efd"Z*ded
efd#Z+y)%    N)	timedelta)DictListOptionalTupleUnion)uuid4)Arrow)gettz)parse)	ContainerContentLine	containerreturnc                     t        t        t        |                   D ]&  }| |   }|j                  j	                  d      s$| |= ( y )NzX-)reversedrangelenname
startswithr   iitems      H/var/www/feuerwehr-webapp/venv/lib/python3.12/site-packages/ics/utils.pyremove_xr      sA    eC	N+, |99%!    c                 x    t        t        t        |                   D ]  }| |   }|j                  dk(  s| |=  y )NSEQUENCE)r   r   r   r   r   s      r   remove_sequencer      s;    eC	N+, |99
"!r   c              #   6   K   | ]  }t        |      |f  y wN)r   ).0ks     r   	<genexpr>r$      s      $ASVQK $s   )YYYYMMYYYYMMDDYYYYMMDDTHHYYYYMMDDTHHmmYYYYMMDDTHHmmssDATE_FORMATSstringc                     d| v r| j                  dd      } d| v rt        j                  |       S | j                  d      } t        j                  | t        t        |                S )zfthis function exists because ICS uses ISO 8601 without dashes or
    colons, i.e. not ISO 8601 at all./-Z)replacearrowgetrstripr*   r   r+   s    r   	arrow_getr5   &   s[    
 f}S) f}yy  ]]3F99V\#f+677r   time_containerc                    | y | j                   j                  d      }|rt        |      dkD  r|d   }nd }d| j                  vr.d| j                   j                  dg       v r| j                  dz   }n| j                  }|r`|d   j	                         dk(  sJt        |      j                  }t        |      }|s|j                  |d	      }t        j                  ||      S t        |      S )
NTZIDr   TDATEVALUET0000r/   UTC)	paramsr2   r   valueupperr5   naiver   r1   )r6   available_tztz_listtzvalrB   selected_tzs          r   iso_to_arrowrH   6   s     ##''/G 3w<!#QZ>'''n++//<<""W,""	3r7==?c)#$$Bi&**2u5Kyy,,~r   c                     d| v }|r]| j                  dd      \  }}t        j                   d|d      }|d   j                  d      dkD  }| xr t        |d         dk(  }|ryyy	)
Nr9      z[+-]r   :   secondminuteday)splitrecountr   )r+   has_timedate_stringtime_string
time_partshas_secondss         r   iso_precisionrX   V   st    f}H#)<<Q#7 [XXfk15
 m))#.2%oA#jm*<*Ar   r   keepc                     g }t        t        t        |                   D ].  }| |   }|j                  |k(  s|j	                  |       |r,| |= 0 |S r!   )r   r   r   r   append)r   r   rY   linesr   r   s         r   	get_linesr]   g   sV    EeC	N+, !|99LLaL! Lr   linec                    ddd}dddd}d\  }}| |   dv r| |   d	k(  rd
}|dz  }| |   dk7  rt        j                  d| z        |dz  }d\  }}|t        |       k  r| |   dk(  r|dz  }|t        |       k(  rn|}| |   j                         r|dz  }| |   j                         r||k(  rt        j                  d| z        t	        | ||       }| |   |v r#|||| |      z  z  }|j                  | |          nB| |   |v r#|||| |      z  z  }|j                  | |          nt        j                  d| z        |dz   }|t        |       k  rt        ||z  ||z        S )zQ
    Return a timedelta object from a string in the DURATION property format
    rJ      )DW<     )SMH)rJ   r   z-+r.   r=   PzError while parsing %s)r   r   r9   )r   
ParseErrorr   isdigitintpopr   )	r^   DAYSSECSsignr   dayssecsjrF   s	            r   parse_durationrs   r   s    D$'DGD!Aw$7c>D	QAw#~7$>??FAJD$
c$i-7c>FACI~1gooFA 1goo6""#;d#BCC$q)n7d?C$tAw-''DHHT!W!W_C$tAw-''DHHT!W""#;d#BCCE' c$i-( TD[$+..r   dtc                    d}t        t        | j                                     }||z  }||z  }d}|dz  r|t        |dz        dz   z  }|dz  }|r|t        |      dz   z  }|rT|dz  }|dz  r|t        |dz        dz   z  }|dz  }|d	z  r|t        |d	z        d
z   z  }|d	z  }|r|t        |      dz   z  }| j                         dk\  r|S d|z  S )z_
    Return a string according to the DURATION property format
    from a timedelta object
    iQ rh   r`   rb   ra   r9   rd   rg   rc   rf   re   r   z-%s)absrk   total_secondsstr)rt   ONE_DAY_IN_SECStotalrp   secondsress         r   timedelta_to_durationr}      s   
  OB$$&'(EO#Do%G
Cqys419~##	s4y3s
d?3w$'#--CtOGb=3w"}%++CrMG3w<#%%C	Q
s{r   r@   c                     | y t        | t              r| S t        | t              rt        j                  |  S t        | t
              rt        j                  di | S t        j                  |       S )N )
isinstancer
   tupler1   r2   dict)r@   s    r   	get_arrowr      s]    }	E5	!	E5	!yy%  	E4	 yy!5!!yyr   instantc                 z    t        j                  | j                  t                    j	                  d      } | dz   S )Nr)   r/   r1   r2   
astimezonetzutcformatr   s    r   arrow_to_isor      s1    ii**51299:KLGS=r   c                 t    t        j                  | j                  t                    j	                  d      } | S )Nr&   r   r   s    r   arrow_date_to_isor      s-     ii**51299*EGNr   c                  R    t        t                     } dj                  | | d d       S )Nz	{}@{}.org   )rx   r	   r   )uids    r   uid_genr      s&    
eg,Cc3r7++r   c                     | j                  dd      } | j                  dd      } | j                  dd      } | j                  dd      } | j                  d	d
      } | S )N\\\;\;,\,
\n\rr0   r4   s    r   escape_stringr      sW    ^^D&)F^^C'F^^C'F^^D%(F^^D%(FMr   c                    | j                  dd      } | j                  dd      } | j                  dd      } | j                  dd      } | j                  dd	      } | j                  d
d	      } | j                  dd      } | S )Nr   r   r   r   r   r   z\Nr   r   z\Rr   r   r   r4   s    r   unescape_stringr      sw    ^^E3'F^^E3'F^^E4(F^^E4(F^^E4(F^^E4(F^^FD)FMr   )F),rQ   datetimer   typingr   r   r   r   r   uuidr	   r1   arrow.arrowr
   dateutil.tzr   ics.grammarr   ics.grammar.parser   r   utcnowtzinfor   r   r   r   r*   rk   rx   __annotations__r5   rH   rX   boolr]   rs   r}   r   r   r   r   r   r   r   r   r   <module>r      s   	  5 5      4	 d y T   $ $ : $  d38n 8c 8e 8  FH +!6 E @# # " # T d;FW $/ $/ $/Ni C B
 U4t34 
  
 % C u  , ,
# # 	C 	C 	r   