o
    Th                     @   s   G d d de ZdS )c                       sl   e Zd Z fddZdd Zdd Zdd Zd	d
 Z fddZ fddZ	 fddZ
 fddZ  ZS )	AliasDictc                    s    t t| j|i | i | _d S N)superr   __init__aliases)selfargskwargs	__class__ S/var/www/html/venv/lib/python3.10/site-packages/invoke/vendor/lexicon/alias_dict.pyr      s   
zAliasDict.__init__c                 C   s   || j |< d S r   r   )r   from_tor   r   r   alias   s   zAliasDict.aliasc                 C   s   | j |= d S r   r   )r   r   r   r   r   unalias	      zAliasDict.unaliasc                    sJ   g } | j v r| j   |  | fdd| j  D  |S )a4  
        Returns other names for given real key or alias ``name``.

        If given a real key, returns its aliases.

        If given an alias, returns the real key it points to, plus any other
        aliases of that real key. (The given alias itself is not included in
        the return value.)
        c                    s$   g | ]\}}| kr|kr|qS r   r   ).0kvkeynamer   r   
<listcomp>!   s   $ z(AliasDict.aliases_of.<locals>.<listcomp>)r   appendextenditems)r   r   namesr   r   r   
aliases_of   s   



zAliasDict.aliases_ofc                 C   sf   |t | di v r-| j| }t|tr|| ||S |r || ||S |D ]}|| || q"d S || ||S )Nr   )getattrr   
isinstancestr)r   r   valuesinglemulti	unaliasedtargetsubkeyr   r   r   _handle%   s   

zAliasDict._handlec                    s&   dd } fdd}|  |||d |S )Nc                 S   s   || |< d S r   r   dr&   r"   r   r   r   r#   7   r   z%AliasDict.__setitem__.<locals>.singlec                    s   t t| || d S r   )r   r   __setitem__r*   r   r"   r	   r   r   r%   :   s   z(AliasDict.__setitem__.<locals>.unaliasedr(   )r   r   r"   r#   r%   r	   r   r   r+   6      zAliasDict.__setitem__c                    s.   dd } fdd}dd }|  |d |||S )Nc                 S   s   | | S r   r   r)   r   r   r   r#   @      z%AliasDict.__getitem__.<locals>.singlec                       t t| |S r   )r   r   __getitem__r,   r	   r   r   r%   C      z(AliasDict.__getitem__.<locals>.unaliasedc                 S   s   d}t |)NzBMulti-target aliases have no well-defined value and can't be read.)
ValueError)r*   r&   r"   msgr   r   r   r$   F   s   z$AliasDict.__getitem__.<locals>.multir-   )r   r   r#   r%   r$   r	   r   r   r1   ?   s   zAliasDict.__getitem__c                    s4   dd } fdd}fdd}  d |||S )Nc                 S   s   || v S r   r   r)   r   r   r   r#   M   r/   z&AliasDict.__contains__.<locals>.singlec                    s   t fddj  D S )Nc                 3   s    | ]}| v V  qd S r   r   )r   r'   )r   r   r   	<genexpr>Q   s    z8AliasDict.__contains__.<locals>.multi.<locals>.<genexpr>)allr   r)   r   r   r   r   r$   P   s   z%AliasDict.__contains__.<locals>.multic                    r0   r   )r   r   __contains__r,   r	   r   r   r%   S   r2   z)AliasDict.__contains__.<locals>.unaliasedr-   )r   r   r#   r$   r%   r	   r7   r   r8   L   s   zAliasDict.__contains__c                    s&   dd } fdd}|  |d |d |S )Nc                 S   s
   | |= d S r   r   r)   r   r   r   r#   Y   s   
z%AliasDict.__delitem__.<locals>.singlec                    r0   r   )r   r   __delitem__r,   r	   r   r   r%   \   r2   z(AliasDict.__delitem__.<locals>.unaliasedr-   )r   r   r#   r%   r	   r   r   r9   X   r.   zAliasDict.__delitem__)__name__
__module____qualname__r   r   r   r   r(   r+   r1   r8   r9   __classcell__r   r   r	   r   r      s    	r   N)dictr   r   r   r   r   <module>   s    