
    i                        d dl mZ d dlmZ d dlmZmZmZ d dlm	Z	 erd dl
mZmZ 	 d dlmZ n# e$ r	 d dlmZ Y nw xY w ed          Z ed          Z	 dddZ	 dddZ G d de          Zg dZd	S )    )annotations)OrderedDict)TYPE_CHECKINGAnyTypeVar)
to_unicode)IterableMapping)SelfKTVTNkeysIterable[KT]canonical_orderIterable[KT] | Nonereturnlist[KT]c                    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      Q/root/projects/butler/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)r   r   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   dict1Mapping[KT, VT]list[tuple[KT, VT]]c                `      fdt                                           |          D             S )z>Returns a list of items from dict1, sorted by canonical_order.c                $    g | ]}||         fS r   r   )r   r   r+   s     r   r    z#canonsort_items.<locals>.<listcomp>$   s!    QQQaQaMQQQr   )r*   r   )r+   r   s   ` r   canonsort_itemsr0       s2     RQQQ>%**,,#P#PQQQQr   c                       e Zd ZdZd$ fdZdZd% fd
Zd& fdZd' fdZd( fdZ	d)d* fdZ
d)d+ fdZd)d* fdZd, fdZd( fdZd$dZd- fdZd.dZd/dZd/dZdZd0d!Zd1d#Z xZS )2CaselessDictziA dictionary that isn't case sensitive, and only uses strings as keys.
    Values retain their case.
    argsr   kwargsr   Nonec                    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__)selfr3   r4   r%   value	key_upper	__class__s         r   r8   zCaselessDict.__init__,   s    $)&)))**,, 	( 	(JC"3--//Ii##C((("'Y		( 	(r   Nr%   c                    t          |          }t                                          |                                          S r#   )r   r7   __getitem__r:   r<   r%   r?   s     r   rA   zCaselessDict.__getitem__7   s.    ooww""399;;///r   r=   c                    t          |          }t                                          |                                |           d S r#   )r   r7   __setitem__r:   r<   r%   r=   r?   s      r   rD   zCaselessDict.__setitem__;   s6    ooCIIKK/////r   c                    t          |          }t                                          |                                           d S r#   )r   r7   r;   r:   rB   s     r   r;   zCaselessDict.__delitem__?   s4    ooCIIKK(((((r   boolc                    t          |          }t                                          |                                          S r#   r   r7   __contains__r:   rB   s     r   rJ   zCaselessDict.__contains__C   .    ooww##CIIKK000r   defaultc                    t          |          }t                                          |                                |          S r#   )r   r7   getr:   r<   r%   rL   r?   s      r   rN   zCaselessDict.getG   .    ooww{{399;;000r   c                    t          |          }t                                          |                                |          S r#   )r   r7   
setdefaultr:   rE   s      r   rR   zCaselessDict.setdefaultK   s0    ooww!!#))++u555r   c                    t          |          }t                                          |                                |          S r#   )r   r7   popr:   rO   s      r   rT   zCaselessDict.popO   rP   r   tuple[Any, Any]c                D    t                                                      S r#   )r7   popitemr<   r?   s    r   rW   zCaselessDict.popitemS   s    ww   r   c                    t          |          }t                                          |                                          S r#   rI   rB   s     r   has_keyzCaselessDict.has_keyV   rK   r   c                    t          |          |gz   }|D ]@}t          |d          r!t          |                                          }|D ]
\  }}|| |<   Ad S )Nr9   )listhasattriterr9   )r<   r3   r4   mappingsmappingr%   r=   s          r   updatezCaselessDict.updateZ   sw    ::( 	" 	"Gw(( 0w}}//% " "
U!S		"	" 	"r   r   c                p     t          |           t                                                                S r#   )typer7   copyrX   s    r   rd   zCaselessDict.copyc   s%    tDzz%'',,..)))r   strc                P    t          |           j         dt          |            dS )N())rc   __name__dictr<   s    r   __repr__zCaselessDict.__repr__f   s(    t**%55T

5555r   otherobjectc                    t          |t                    st          S | |u pCt          |                                           t          |                                          k    S r#   )
isinstancerj   NotImplementedr9   r<   rm   s     r   __eq__zCaselessDict.__eq__i   sN    %&& 	"!!u}ITZZ\\ 2 2d5;;==6I6I IIr   c                    | |k     S r#   r   rr   s     r   __ne__zCaselessDict.__ne__n   s    5=  r   	list[str]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   rk   s    r   sorted_keyszCaselessDict.sorted_keysu   s     diikk4+?@@@r   list[tuple[Any, Any]]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.
        )r0   r   rk   s    r   sorted_itemszCaselessDict.sorted_items{   s     tT%9:::r   )r3   r   r4   r   r   r5   )r%   r   r   r   )r%   r   r=   r   r   r5   )r%   r   r   r5   )r%   r   r   rG   r#   )r%   r   rL   r   r   r   )r%   r   r=   r   r   r   )r   rU   )r   r   )r   re   )rm   rn   r   rG   )r   rv   )r   ry   )ri   
__module____qualname____doc__r8   __hash__rA   rD   r;   rJ   rN   rR   rT   rW   rZ   ra   rd   rl   rs   ru   r   rx   r{   __classcell__)r?   s   @r   r2   r2   '   s        ( ( ( ( ( ( H0 0 0 0 0 00 0 0 0 0 0) ) ) ) ) )1 1 1 1 1 11 1 1 1 1 1 16 6 6 6 6 6 61 1 1 1 1 1 1! ! ! ! ! !1 1 1 1 1 1" " " "* * * * * *6 6 6 6J J J J
! ! ! !
 OA A A A; ; ; ; ; ; ; ;r   r2   )r2   r0   r*   r#   )r   r   r   r   r   r   )r+   r,   r   r   r   r-   )
__future__r   collectionsr   typingr   r   r   icalendar.parser_toolsr   collections.abcr	   r
   r   ImportErrortyping_extensionsr   r   r*   r0   r2   __all__r   r   r   <module>r      sq   " " " " " " # # # # # # . . . . . . . . . . - - - - - - 211111111' ' ' '&&&&&&&&' WT]]WT]] @D	G 	G 	G 	G 	G DHR R R R RX; X; X; X; X;; X; X; X;v @
?
?s   / ==