o
    ßý°jÕ  ã                   @   sl   d Z z
ddlmZmZ W n ey   ddlmZmZ Y nw ddlmZ G dd„ deƒZG dd„ deƒZ	d	S )
Ú
é    )ÚMutableMappingÚMappingé   )ÚSEQUENCE_TYPESc                   @   sŠ   e Zd Zd dd„Zdd„ Zedd„ ƒZdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )!ÚCaseInsensitiveDictNc                 K   s@   t ƒ | _t ƒ | _|s|r|d u rt ƒ }| j|fi |¤Ž d S d S ©N)ÚdictÚ_storeÚ_case_insensitive_keymapÚupdate©ÚselfÚotherÚkwargs© r   ú…/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/ldap3/utils/ciDict.pyÚ__init__#   s   ýzCaseInsensitiveDict.__init__c                 C   s&   z|   |¡ W dS  ty   Y dS w )NTF)Ú__getitem__ÚKeyError)r   Úitemr   r   r   Ú__contains__+   s   
ÿz CaseInsensitiveDict.__contains__c                 C   s   t | dƒr|  ¡  ¡ S | S )NÚlower)ÚhasattrÚstripr   )Úkeyr   r   r   Ú_ci_key2   s   zCaseInsensitiveDict._ci_keyc                 C   s$   |   |¡}| j| j| = | j|= d S r   )r   r
   r   )r   r   Úci_keyr   r   r   Ú__delitem__6   s   
zCaseInsensitiveDict.__delitem__c                 C   s@   |   |¡}|| jv r|| j| j| < d S || j|< || j|< d S r   )r   r   r
   )r   r   r   r   r   r   r   Ú__setitem__;   s
   


zCaseInsensitiveDict.__setitem__c                 C   s   | j | j|  |¡  S r   )r
   r   r   ©r   r   r   r   r   r   C   s   zCaseInsensitiveDict.__getitem__c                 C   ó
   | j  ¡ S r   )r
   Ú__iter__©r   r   r   r   r"   F   ó   
zCaseInsensitiveDict.__iter__c                 C   ó
   t | jƒS r   )Úlenr
   r#   r   r   r   Ú__len__I   r$   zCaseInsensitiveDict.__len__c                 C   r%   r   )Úreprr
   r#   r   r   r   Ú__repr__L   r$   zCaseInsensitiveDict.__repr__c                 C   r%   r   )Ústrr
   r#   r   r   r   Ú__str__O   r$   zCaseInsensitiveDict.__str__c                 C   r!   r   )r
   Úkeysr#   r   r   r   r,   R   r$   zCaseInsensitiveDict.keysc                 C   r!   r   )r
   Úvaluesr#   r   r   r   r-   U   r$   zCaseInsensitiveDict.valuesc                 C   r!   r   )r
   Úitemsr#   r   r   r   r.   X   r$   zCaseInsensitiveDict.itemsc                 C   st   t |ttfƒs	tS t |tƒr4t|  ¡ ƒt| ¡ ƒkrdS |  ¡ D ]\}}||v r.|| |ks1 dS q dS | t|ƒkS )NFT)Ú
isinstancer   r	   ÚNotImplementedr   r&   r.   )r   r   r   Úvaluer   r   r   Ú__eq__[   s   
ÿzCaseInsensitiveDict.__eq__c                 C   r%   r   )r   r
   r#   r   r   r   Úcopyj   r$   zCaseInsensitiveDict.copyr   )Ú__name__Ú
__module__Ú__qualname__r   r   Ústaticmethodr   r   r   r   r"   r'   r)   r+   r,   r-   r.   r2   r3   r   r   r   r   r   "   s"    

r   c                   @   sP   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zddd„Zdd„ Zdd„ Z	dd„ Z
dS )ÚCaseInsensitiveWithAliasDictNc                 K   s(   t ƒ | _t ƒ | _tj| |fi |¤Ž d S r   )r	   Ú_aliasesÚ_alias_keymapr   r   r   r   r   r   r   o   s   z%CaseInsensitiveWithAliasDict.__init__c                 C   r!   r   )r9   r,   r#   r   r   r   Úaliasest   r$   z$CaseInsensitiveWithAliasDict.aliasesc                 C   sœ   t |tƒr2|  |d ¡}|| jvr&t | |d |¡ |  ||dd … ¡ d S tdt|d d ƒ ƒ‚|  |¡}|| jvrEt | ||¡ d S || | j| < d S )Nr   é   ú'z already used as alias)	r/   r   r   r9   r   r   Ú	set_aliasr   r*   )r   r   r1   r   r   r   r   r   w   s   



z(CaseInsensitiveWithAliasDict.__setitem__c                 C   sx   |   |¡}zt | |¡ || jv r"| j| d d … D ]}|  |¡ qW d S  ty;   || jv r8|  |¡ Y d S Y d S w r   )r   r   r   r:   Úremove_aliasr   r9   )r   r   r   Úaliasr   r   r   r   †   s   


ÿÿz(CaseInsensitiveWithAliasDict.__delitem__Fc                 C   sL  t |tƒs|g}|D ]™}|  |¡}|| jv r|  |¡}|| jvrg|| jvrM|| j|< || jv r;| j|  |  |¡¡ q
tƒ | j|< | j|  |  |¡¡ q
|| jv rZ|| j| v rZq
|sftdt	|ƒ d ƒ‚q
||  | j| ¡krrq
|s~tdt	|ƒ d ƒ‚q
| jD ]}|| j| v r˜| j
|||g |d  nq‚tdt	|ƒ d ƒ‚q
d S )Nr=   z' already used as aliasz' already used as key)Úignore_duplicatesz!' is not an existing alias or key)r/   r   r   r   r9   r:   ÚappendÚlistr   r*   r>   )r   r   r@   rA   Úalias_to_addr   Úci_aliasÚkeymapr   r   r   r>   ’   s>   







ÿÿ
þþæz&CaseInsensitiveWithAliasDict.set_aliasc                 C   sd   t |tƒs|g}|D ]%}|  |¡}| j| j|   |¡ | j| j|  s+| j| j| = | j|= q
d S r   )r/   r   r   r:   r9   Úremove)r   r@   Úalias_to_removerE   r   r   r   r?   ³   s   


ûz)CaseInsensitiveWithAliasDict.remove_aliasc              
   C   s:   zt  | |¡W S  ty   t  | | j|  |¡ ¡ Y S w r   )r   r   r   r9   r   r    r   r   r   r   ½   s
   ÿz(CaseInsensitiveWithAliasDict.__getitem__c                 C   s"   t | jƒ}| j ¡ |_| j|_|S r   )r8   r
   r9   r3   r:   )r   Únewr   r   r   r3   Ã   s   
z!CaseInsensitiveWithAliasDict.copyr   )F)r4   r5   r6   r   r;   r   r   r>   r?   r   r3   r   r   r   r   r8   n   s    

!
r8   N)
Ú__doc__Úcollections.abcr   r   ÚImportErrorÚcollectionsÚ r   r   r8   r   r   r   r   Ú<module>   s    ÿL