
    f                     R    d dl mZ d dlmZ d	dZd	dZ G d de          Zg dZdS )
    )
to_unicode)OrderedDictNc                     d t          |pg           D             fd| D             }fd| D             }t          |fd          t          |          z   S )zSorts leading keys according to canonical_order.  Keys not specified in
    canonical_order will appear alphabetically at the end.
    c                     i | ]\  }}||	S  r   ).0iks      Z/var/www/dev/btcams2024/python_venv/lib/python3.11/site-packages/icalendar/caselessdict.py
<dictcomp>z"canonsort_keys.<locals>.<dictcomp>
   s    GGGdaQGGG    c                     g | ]}|v |	S r   r   r   r
   canonical_maps     r   
<listcomp>z"canonsort_keys.<locals>.<listcomp>   s#    222!qM11A111r   c                     g | ]}|v|	S r   r   r   s     r   r   z"canonsort_keys.<locals>.<listcomp>   s#    666!q55A555r   c                     |          S Nr   )r
   r   s    r   <lambda>z canonsort_keys.<locals>.<lambda>   s    mA&6 r   )key)	enumeratesorted)keyscanonical_orderheadtailr   s       @r   canonsort_keysr      s     HGi0E2&F&FGGGM2222t222D6666t666D$6666777&,,FFr   c                 `      fdt                                           |          D             S )zCReturns a list of items from dict1, sorted by canonical_order.
    c                 $    g | ]}||         fS r   r   )r   r
   dict1s     r   r   z#canonsort_items.<locals>.<listcomp>   s-     > > >aQaM > > >r   )r   r   )r    r   s   ` r   canonsort_itemsr!      s@    > > > >ejjllO<<> > > >r   c                        e Zd ZdZ fdZ fdZ fdZ fdZ fdZd fd	Z	d fd		Z
d fd
	Z fdZ fdZd Z fdZd Zd Zd ZdZd Zd Z xZS )CaselessDictziA dictionary that isn't case sensitive, and only uses strings as keys.
    Values retain their case.
    c                     t                      j        |i | |                                 D ]R\  }}t          |                                          }||k    r&t                                          |           || |<   SdS )z,Set keys to upper for initial dict.
        N)super__init__itemsr   upper__delitem__)selfargskwargsr   value	key_upper	__class__s         r   r&   zCaselessDict.__init__   s     	$)&)))**,, 	( 	(JC"3--//Ii##C((("'Y		( 	(r   c                     t          |          }t                                          |                                          S r   )r   r%   __getitem__r(   r*   r   r/   s     r   r1   zCaselessDict.__getitem__&   s.    ooww""399;;///r   c                     t          |          }t                                          |                                |           d S r   )r   r%   __setitem__r(   r*   r   r-   r/   s      r   r4   zCaselessDict.__setitem__*   s6    ooCIIKK/////r   c                     t          |          }t                                          |                                           d S r   )r   r%   r)   r(   r2   s     r   r)   zCaselessDict.__delitem__.   s4    ooCIIKK(((((r   c                     t          |          }t                                          |                                          S r   r   r%   __contains__r(   r2   s     r   r9   zCaselessDict.__contains__2   .    ooww##CIIKK000r   Nc                     t          |          }t                                          |                                |          S r   )r   r%   getr(   r*   r   defaultr/   s      r   r<   zCaselessDict.get6   .    ooww{{399;;000r   c                     t          |          }t                                          |                                |          S r   )r   r%   
setdefaultr(   r5   s      r   rA   zCaselessDict.setdefault:   s0    ooww!!#))++u555r   c                     t          |          }t                                          |                                |          S r   )r   r%   popr(   r=   s      r   rC   zCaselessDict.pop>   r?   r   c                 D    t                                                      S r   )r%   popitemr*   r/   s    r   rE   zCaselessDict.popitemB   s    ww   r   c                     t          |          }t                                          |                                          S r   r8   r2   s     r   has_keyzCaselessDict.has_keyE   r:   r   c                     t          |          |gz   }|D ]@}t          |d          r!t          |                                          }|D ]
\  }}|| |<   Ad S )Nr'   )listhasattriterr'   )r*   r+   r,   mappingsmappingr   r-   s          r   updatezCaselessDict.updateI   sw    ::( 	" 	"Gw(( 0w}}//% " "
U!S		"	" 	"r   c                 p     t          |           t                                                                S r   )typer%   copyrF   s    r   rR   zCaselessDict.copyR   s%    tDzz%'',,..)))r   c                 P    t          |           j         dt          |            dS )N())rQ   __name__dictr*   s    r   __repr__zCaselessDict.__repr__U   s(    t**%55T

5555r   c                     | |u pCt          |                                           t          |                                          k    S r   )rW   r'   r*   others     r   __eq__zCaselessDict.__eq__X   s6    u}ITZZ\\ 2 2d5;;==6I6I IIr   c                     | |k     S r   r   r[   s     r   __ne__zCaselessDict.__ne__[   s    5=  r   c                 P    t          |                                 | j                  S )zSorts keys according to the canonical_order for the derived class.
        Keys not specified in canonical_order will appear at the end.
        )r   r   r   rX   s    r   sorted_keyszCaselessDict.sorted_keysb   s     diikk4+?@@@r   c                 ,    t          | | j                  S )zSorts items according to the canonical_order for the derived class.
        Items not specified in canonical_order will appear at the end.
        )r!   r   rX   s    r   sorted_itemszCaselessDict.sorted_itemsh   s     tT%9:::r   r   )rV   
__module____qualname____doc__r&   r1   r4   r)   r9   r<   rA   rC   rE   rH   rO   rR   rY   r]   r_   r   ra   rc   __classcell__)r/   s   @r   r#   r#      s        ( ( ( ( (0 0 0 0 00 0 0 0 0) ) ) ) )1 1 1 1 11 1 1 1 1 16 6 6 6 6 61 1 1 1 1 1! ! ! ! !1 1 1 1 1" " "* * * * *6 6 6J J J! ! !
 OA A A; ; ; ; ; ; ;r   r#   )r   r!   r#   r   )icalendar.parser_toolsr   collectionsr   r   r!   r#   __all__r   r   r   <module>rk      s    - - - - - - # # # # # #G G G G> > > >U; U; U; U; U;; U; U; U;p @
?
?r   